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 multicol
s?
3 Answers
\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}
Defining a placement option is not possible inside the multicols
environment.
-
5How 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.– BoroNov 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?– KON3Sep 1, 2014 at 5:57
-
delete the option
[demo]
for packagegraphicx
– user2478Sep 1, 2014 at 10:11 -
1I would also like to know a way to specify placement when using this method (e.g. [t]). Can anyone help?– teeeeeeJul 17, 2020 at 14:59
"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}
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}
-
This answer is meant to address the original question and is not meant to satisfy the additional requirements of the bounty.– JohnReedMay 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
-
2Your 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.– JohnReedMay 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
figure
without the*
.twocolumn
instead ofmulticol
(which means that Herbert's answer does not apply).[h]
/[H]
for "wide" float is a sort of a non-sense and is not needed.