How do I make figure captions span multiple pages?
I have a very long caption for a figure and would like it to carry on to the next page.
EDIT: I would like this to work in both one sided and two sided modes
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It only takes a minute to sign up.
Sign up to join this communityHow do I make figure captions span multiple pages?
I have a very long caption for a figure and would like it to carry on to the next page.
EDIT: I would like this to work in both one sided and two sided modes
Instead of using a floating environment which can't handle page breaks you can use a simple list environment. To set a caption you can use the command \captionof
. The command is provided by
capt-of
,caption
orscrreprt
, scrbook
and scrartcl
Here an example
\documentclass{article}
\usepackage{kantlipsum}
\usepackage{capt-of}
\begin{document}
\kant[1-2]
\noindent\hrulefill
\begin{center}
\rule{3cm}{3cm}
\captionof{figure}[short caption]{%
\kant[4-6]}
\end{center}
\noindent\hrulefill
\kant[1]
\end{document}
\kant[4-6]
to \kant[3-6]
) results in a ! Dimension too large
error. Do you know of a solution?
– user001
Aug 1 '20 at 4:07
caption
package or the scrartcl
class: the page break is always between the figure and the caption, and not inside the caption itself.
– Stefano M
Oct 10 '20 at 13:01
Well, @Marco Daniel answer did not work for me.
Searching google, though, I found this thread with the same issue (I reproduce the working code below): http://www.latex-community.org/forum/viewtopic.php?t=5881&f=45
The working answer to the thread is here: http://www.latex-community.org/forum/viewtopic.php?t=5881&f=45#p22785
Only to clarify, in this thread one wants to use subfigures in the same figure, using package subfig
. However, it also worked for me when skipping all the subfig
related features.
By the way, I am not using any latex standard documentclass
. I am using elsarticle
documentclass, in which the package caption
also worked fine.
Enjoy.
CODE (replace <YOUR FIGURE>
, <YOUR CAPTION>
and <FIGURE LABEL>
with the file name, figure caption and figure label, respectively):
\documentclass{article}
%...
\usepackage{caption}
% the following format will be used to emulate the captions produced by fltpage
\DeclareCaptionLabelFormat{adja-page}{\hrulefill\\#1 #2 \emph{(previous page)}}
%...
\begin{document}
%...
\begin{figure}
\captionsetup{labelformat=empty}
\centering
\includegraphics[width=10cm]{<YOUR FIGURE>}
\caption{}
\end{figure}
\clearpage
\begin{figure}
\captionsetup{labelformat=adja-page}
\ContinuedFloat
\caption{<YOUR CAPTION>}
\label{<FIGURE LABEL>}
\end{figure}
%...
\end{document}
! Dimension too large. \caption@slc ...ke {#1}{#2}}\ifdim \wd \@tempboxa ... >\captionwidth \endgroup \...
. Compilation was attempted with pdflatex (pdfTeX 3.14159265-2.6-1.40.19).
– user001
Aug 1 '20 at 3:54
If you need two pages, e.g., figure on one page and a caption on the next, this works:
\begin{figure*}
\includegraphics{turtle.pdf}
\end{figure*}
\begin{figure*}
\caption{
\label{turtle}
Here is a turtle.
}
\end{figure*}
I managed it in this way:
\documentclass{article}
%
\usepackage{caption}
\usepackage{graphicx}
\DeclareCaptionLabelFormat{adja-page}{\hrulefill\\#1 #2 \emph{(previous page)}}
%
\begin{figure} [b!]
\centering
\includegraphics[width=\textwidth]{2.png}
\caption[]{\textit{(see next page)}}
\end{figure}
\begin{figure} [t!]
\captionsetup{labelformat=adja-page}
\ContinuedFloat
\caption[Figure]{Description}
\label{<FIGURE LABEL>}
\end{figure}
%
\end{document}