Frequently Asked Question List for TeX
Tables and figures have a tendency to surprise, by floating
away from where they were specified to appear. This is in fact
perfectly ordinary document design; any professional typesetting
package will float figures and tables to where they’ll fit without
violating the certain typographic rules. Even if you use the
placement specifier h
(for “here”), the figure or table
will not be
printed “here” if doing so would break the rules; the rules themselves
are pretty simple, and are given on page 198, section C.9 of the
LaTeX manual. In the worst case, LaTeX’s rules can cause the
floating items to pile up to the extent that you get an error message
saying “Too many unprocessed floats”.
What follows is a simple checklist of things to do to solve these
problems (the checklist talks throughout about figures, but applies
equally well to tables, or to “non-standard” floats defined by the
float
or other packages).
tbp
) is usually satisfactory, but you can
reasonably change it (for example, to add an h
).
Whatever you do, don’t
omit the p
: doing so could cause LaTeX to believe that if you
can’t have your figure here, you don’t want it
anywhere. (LaTeX does try to avoid being confused in
this way…) \renewcommand{\topfraction}{.85} % .7
\renewcommand{\bottomfraction}{.7} % .3
\renewcommand{\textfraction}{.15} % .2
\renewcommand{\floatpagefraction}{.66} % .5
\renewcommand{\dbltopfraction}{.66} % .7
\renewcommand{\dblfloatpagefraction}{.66} % .5
\setcounter{topnumber}{9} % 2
\setcounter{bottomnumber}{9} % 1
\setcounter{totalnumber}{20} % 3
\setcounter{dbltopnumber}{9} % 2
The meanings of these parameters are described on pages 199–200, section C.9 of the LaTeX manual.
\clearpage
command? If so, do: the backlog of floats is
cleared after a \clearpage
. (Note that the \chapter
command in the standard book
and report
classes
implicitly executes \clearpage
, so your floats can’t wander past
the end of a chapter.)placeins
package: it defines a
\FloatBarrier
command beyond which floats may not pass. A
package option allows you to declare that floats may not pass a
\section
command, but you can place \FloatBarrier
s wherever
you choose.flafter
package, which avoids this problem by insisting that floats should
always appear after their definition.afterpage
package.
Its documentation gives as an example the idea
of putting \clearpage
after the current page (where it
will clear the backlog, but not cause an ugly gap in your text), but
also admits that the package is somewhat fragile. Use it as a last
resort if the other possibilities below don’t help.If you would actually like great blocks of floats at the
end of each of your chapters, try the \extrafloats
command,
or in older LaTeX releases, the morefloats
package;
this allows you to increase the number of floating inserts that LaTeX
can handle at one time (from its original value of 18 or, now, 52, in
LaTeX2e).
Caveat: if you are using etex
package to increase the number of
registers available on old releases, you need to “reserve” some inserts for
morefloats
: something like:
\usepackage{etex}
\reserveinserts{18}
\usepackage{morefloats}
endfloat
package to do
the job for you.