Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I'm working on a two column document, and on one of the pages, I want to fill an entire column with three different floats. But when I use, for instance, h!, ht!, b, b!, t!, etc., on all three of them (or any combination of these), I get two in one column and one in the other. Is there a package or something that fixes this problem.

share|improve this question

4 Answers 4

up vote 8 down vote accepted

If I want to keep a bunch of figures together, I simply use one figure environment:

\begin{figure}
    \includegraphics{foo}
    \caption{Foo}
    \vspace{5mm}
    \includegraphics{bar}
    \caption{Baz}
    \vspace{5mm}
    \includegraphics{bar}
    \caption{Baz}
\end{figure}

It looks a bit strange, but it works. You can have multiple \captions in one figure environment.

Now there is no way Latex can place these three figures on different columns or different pages. You can fine-tune \vspaces to your needs.

share|improve this answer
2  
This is sort of tricky because you need to then play with LaTeX's float parameters to prevent it from trying to place the figure on a page of floats or simply failing to place it at all. You can also stick the contents of the figure environment inside a \vbox to\textheight{...} and use \vfill to separate the floats without having to play with manual spacing. –  TH. Sep 25 '10 at 10:38
    
I like this answer the best. Even though it's a little more hackish than @TH.'s answer, it's much simpler and it works best for me. Thanks to everyone for all of your answers! –  David Hollman Sep 27 '10 at 14:25

Probably the easiest way to handle this is to use the afterpage package along with the float package's H specifier. Here's a complete example.

\documentclass[twocolumn]{article}
\usepackage{afterpage}
\usepackage{float}
\usepackage{lipsum}
\begin{document}
\lipsum
\afterpage{
        \begin{figure}[H]
        \fbox{Top figure}
        \caption{Top figure}
        \end{figure}
        \vfill
        \begin{figure}[H]
        \fbox{Middle figure}
        \caption{Middle figure}
        \end{figure}
        \vfill
        \begin{figure}[H]
        \fbox{Bottom figure}
        \caption{Bottom figure}
        \end{figure}
        \newpage
}
\lipsum
\end{document}

Another option is to use the p float placement specifier outside of the \afterpage. There's no guarantee that those three will appear together with that.

share|improve this answer

In two-column mode, a "column" is equivalent to a "page" in one-column mode. So if you want three floats in one column on their own, simply specify the [p] float option. For example:

\documentclass[twocolumn]{article}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{figure}[p]
\centering
\rule{10em}{10em}
\caption{A black box.}
\end{figure}
\begin{figure}[p]
\centering
\rule{10em}{10em}
\caption{A black box.}
\end{figure}
\begin{figure}[p]
\centering
\rule{10em}{10em}
\caption{A black box.}
\end{figure}
\lipsum
\end{document}
share|improve this answer
    
I thought about that, but couldn't figure out how to ensure that only those floats would appear on the page and that they would all appear on the page. –  TH. Sep 27 '10 at 23:44
    
Right, your method is better if you want to ultimately constrain where the floats end up. –  Will Robertson Sep 27 '10 at 23:54

simplest and obvious answer for me...

\clearpage
\begin{figure}
    .....
\end{figure}

\vfill

\begin{figure}
    .....
\end{figure}

\clearpage

that way the figures will be alone in 1 page, wherever latex will place them the alternative is having 1 figure for all images but still use \clearpage

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.