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).
\renewcommand{\topfraction}{.85} \renewcommand{\bottomfraction}{.7} \renewcommand{\textfraction}{.15} \renewcommand{\floatpagefraction}{.66} \renewcommand{\dbltopfraction}{.66} \renewcommand{\dblfloatpagefraction}{.66} \setcounter{topnumber}{9} \setcounter{bottomnumber}{9} \setcounter{totalnumber}{20} \setcounter{dbltopnumber}{9}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.)
\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.
\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.
Caveat: if you are using etex to increase the number of registers available, you need to “reserve” some inserts for morefloats: something like:
\usepackage{etex} \reserveinserts{18} \usepackage{morefloats}
This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=floats