54

I have a two column document (using multicol) and want to insert figures so that they do NOT span columns. I have searched around and the only thing I can find says that only figure* is supported which spans the whole page (both columns). Is there a way to get single column figures in a document using multicols?

  • 1
    Ask here: tex.stackexchange.com – sorush-r Feb 27 '11 at 20:39
  • 1
    @Sorush: Be aware that LaTeX questions with the programming nature are still on topic on SO. @bryanp: That said, this one doesn't really have the programming nature. You want figure without the *. – dmckee --- ex-moderator kitten Feb 27 '11 at 22:00
  • 5
    I second this question. I would like to have a figure/table float to the top of the column, like it would using twocolumn instead of multicol (which means that Herbert's answer does not apply). – yo' May 28 '12 at 13:50
  • I should have specified in the bounty that obviously [h]/[H] for "wide" float is a sort of a non-sense and is not needed. – yo' May 28 '12 at 16:35
64
\documentclass[a5paper]{article}
\usepackage{multicol,caption}
\usepackage[demo]{graphicx}
\usepackage{lipsum}
\newenvironment{Figure}
  {\par\medskip\noindent\minipage{\linewidth}}
  {\endminipage\par\medskip}
\begin{document}

\begin{multicols}{2}
\lipsum[1]
\begin{Figure}
 \centering
 \includegraphics[width=\linewidth]{foo}
 \captionof{figure}{my caption of the figure}
\end{Figure}

\lipsum[1]
\end{multicols}

\end{document}

enter image description here

Defining a placement option is not possible inside the multicols environment.

  • 1
    How would one go about also adding support for the [htbp] placement location specifiers? – G. H. Hardly Sep 18 '13 at 7:13
  • Great stuff +1 I was looking for this solution for a while. At first I used \begingroup & \endgroup for my tikz figures and their captions. Though it was not keeping them together and I had situations where a caption was in a different column than its figure. Thanks again this solved my problem perfectly. – Boro Nov 19 '13 at 23:46
  • @Herbert Sir, are we supposed to insert the picture/ figure on our own in the place of "foo" of "\includegraphics[width=\linewidth]{foo}" ? cause I tried to do so, but still black box is coming. What to do? – Anjan3 Sep 1 '14 at 5:57
  • delete the option [demo] for package graphicx – user2478 Sep 1 '14 at 10:11
7

One solution is to use the nonfloat package.

\documentclass[]{article}

\usepackage{nonfloat}
\usepackage{multicol}

\usepackage[demo]{graphicx}
\usepackage{lipsum}

\newcommand\myfigure[1]{%
\medskip\noindent\begin{minipage}{\columnwidth}
\centering%
#1%
%figure,caption, and label go here
\end{minipage}\medskip}

\begin{document}
\begin{multicols}{3}
\lipsum[1]
%
\myfigure{\includegraphics[width=.9\columnwidth]{test}%
\figcaption{\emph{I am a figure caption!}}}
%
\lipsum[1]
\end{multicols}
\end{document}

example output

  • This answer is meant to address the original question and is not meant to satisfy the additional requirements of the bounty. – JohnReed May 28 '12 at 17:06
  • Sorry if it's rude, but does this add anything more compared to the Herbert's answer? – yo' May 28 '12 at 17:59
  • 1
    Your question is legitimate. In terms of features, it does not add anything that I can think of. It is merely a slightly different way of addressing the original question by using the nonfloat package. I only added this answer for the sake of completeness. It may have worked better as an addendum to Herbert's answer but I didn't feel comfortable modifying it. – JohnReed May 28 '12 at 18:51
  • My apologies, I just wasn't sure. It is probably not wrong to provide an alternative, even though I think that caption package works great. – yo' May 28 '12 at 19:03
1

"One way around this is to not make your floats float. The float package provides the [H] float specifier which avoids this" (Taken form Werner's answer here: https://tex.stackexchange.com/a/75939/182467)

\usepackage{float}
[...]
\begin{figure}[H]
    [...]
\end{figure}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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