In my article draft, I have a table, followed by a piece of text, followed by a figure with [t] placement. This is a two-column paper. As things stand, the figure gets placed at the top-left of the page, on the first column; then the table; then the text. But I don't like the table being right after the figure, it's confusing. I would much rather have the figure on the next column, where it would actually be even closer to its 'logical' position. Can I coax/nudge/force LaTeX to do this for me?
1 Answer
You haven't provided any example but the only way that I can see that a later figure appears before an earlier table in such a situation is if the table includes [h]
in its placement.
\documentclass[twocolumn]{article}
\def\abc{a a a a a a a a a a a a a a a a a a a a a a a a}
\def\xyz{One \abc, two three \abc, \abc, \abc,
four \roman{enumi}\stepcounter{enumi}. }
\def\z{\xyz\xyz\par\abc\xyz}
\begin{document}
\begin{table}[h]
TTTTT
\caption{ttttt}
\end{table}
xxxxx
\z\z\xyz
\begin{figure}[t]
FFFFF
\caption{ffff}
\end{figure}
\xyz\z\xyz\z
\end{document}
if you remove h
things are better but still not quite as you want:
However if you restrict to one float at the top of the column on this page then you get
\documentclass[twocolumn]{article}
\def\abc{a a a a a a a a a a a a a a a a a a a a a a a a}
\def\xyz{One \abc, two three \abc, \abc, \abc,
four \roman{enumi}\stepcounter{enumi}. }
\def\z{\xyz\xyz\par\abc\xyz}
\begin{document}
\global\csname @topnum\endcsname=1
\begin{table}
TTTTT
\caption{ttttt}
\end{table}
xxxxx
\z\z\xyz
\begin{figure}[t]
FFFFF
\caption{ffff}
\end{figure}
\xyz\z\xyz\z
\end{document}
here \c@topnum
is set to 1, it will just affect the first column as it will be set back to the latex counter topnum
9which is 2 in the default classes) at the start of each column.
[htb]
, Usually this helps.\usepackage{flafter}
that will stop figures floating back before their position in the source.