68

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?

4
  • 1
    Ask here: tex.stackexchange.com
    – sorush-r
    Feb 27, 2011 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 *. Feb 27, 2011 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, 2012 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, 2012 at 16:35

3 Answers 3

76
\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.

5
  • 4
    How would one go about also adding support for the [htbp] placement location specifiers? Sep 18, 2013 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, 2013 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?
    – KON3
    Sep 1, 2014 at 5:57
  • delete the option [demo] for package graphicx
    – user2478
    Sep 1, 2014 at 10:11
  • 1
    I would also like to know a way to specify placement when using this method (e.g. [t]). Can anyone help?
    – teeeeee
    Jul 17, 2020 at 14:59
18

"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}
2
  • Why isn't this accepted answer?
    – Marcel
    Dec 10, 2020 at 1:39
  • I tried that and my figure disappeared, ouh how much I love LaTex!
    – Nils
    Jun 7 at 16:55
8

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

4
  • This answer is meant to address the original question and is not meant to satisfy the additional requirements of the bounty.
    – JohnReed
    May 28, 2012 at 17:06
  • Sorry if it's rude, but does this add anything more compared to the Herbert's answer?
    – yo'
    May 28, 2012 at 17:59
  • 2
    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, 2012 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, 2012 at 19:03

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.