# Make figure placement consider the opposite column as a close location

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?

• For floats try to use options [htb], Usually this helps. Mar 17, 2016 at 20:29
• here are two existing questions that may help: How to influence the position of float environments like figure and table in LaTeX? and Keeping tables/figures close to where they are mentioned. that said, if you want to delay the appearance of the figure, move the code to a place in the input where there's no longer space in that column for the figure. that kind of cheating is acceptable. Mar 17, 2016 at 20:32
• @Zarko: I actually don't want it [h]ere... but let's see what it does for me. Mar 17, 2016 at 20:35
• try \usepackage{flafter} that will stop figures floating back before their position in the source. Mar 17, 2016 at 22:12
• with care you can set topnumber to 1 locally which will only allow one float on each column Mar 17, 2016 at 22:38

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.