1

Is it possible to span a float over 2 columns in a 3 (or more) column document obtained by the multicol package?

Something like this, for example:

enter image description here I know it's easy to span afloat across all columns using the figure* environment; or on 1 column by using the center environment.

But I have absolutely no idea how a crate a float that spans 2 columns in a 3 column document. Or, taking it a step further, a float that has a variable horizontal length, spanning for instance 1.5 or 2.5 columns (i.e. the wrapfig equivalent for multiple columns).

Thanks.

3
  • 1
    Does this answer do what you want?
    – user121799
    Oct 20 '18 at 3:10
  • I suppose it does, although I'm not familiar with the flowfram package. Is it a suitable alternative to multicol? Or is it meant to be used solely for the purpose of inserting a float?
    – johnymm
    Oct 20 '18 at 5:06
  • Based on the documentation, it doesn't look ideal, however.
    – johnymm
    Oct 20 '18 at 5:14
3

multicol doesn't support floats but if you don't mind a bit of hand adjustment it's possible to get most arrangements. If you are working on one book for several weeks such hand adjustments are quite feasible, if automatically typesetting thousands of documents an hour from some catalogue database, less so.

Basically let TeX decide where the natural column break is, then force a break at that point and add some space to take the image and caption.

enter image description here

\documentclass{article}

\usepackage{multicol,graphicx,capt-of}

\def\z{\stepcounter{enumi}\Roman{enumi} one two three four five six seven eight nine ten. }

\begin{document}

\begin{multicols}{3}

\z\z\z\z\z\z\z\z\z\z \z\z\z\z\z\z\z\z\z\z
Red Green blue yellow. Red Green blue yel-{\parfillskip0pt\par}

\columnbreak
\vspace*{16\baselineskip}
\noindent
\begin{picture}(0,0)
\put(0,110){\parbox{\dimexpr2\columnwidth+\columnsep}{\centering
\includegraphics[width=\linewidth]{example-image}

\captionof{figure}{an image}}}
\end{picture}%
low.
\z\z\z\z\z\z\z\z\z\z \z\z



Apples oranges ba-{\parfillskip0pt\par}

\columnbreak
\vspace*{16\baselineskip}
\noindent nanas.
\z\z\z\z\z\z\z\z
\z\z\z\z\z\z\z\z\z\z \z\z\z\z\z\z\z\z\z\z
\z\z\z\z\z\z\z\z\z\z \z\z\z\z\z\z\z\z\z\z
\end{multicols}
\end{document}
5
  • Thanks. This works but I'd rather avoid manually breaking columns and such. It surprises me that such an essential package as multicol does not support floats.
    – johnymm
    Oct 20 '18 at 13:50
  • 1
    @johnymm the multicol doc flags that as often as it can. including mentioning it the abstract below the title on page 1.... Oct 20 '18 at 13:58
  • Oh yeah, I'm aware - hence the question. I hope this gets remedied in the future, since it's a fairly common functionality for multi-column documents.
    – johnymm
    Oct 20 '18 at 14:13
  • 1
    @johnymm It's possible, but quite hard to do and hasn't been added in the 25 or so years that multicol package has been available, so don't hold your breath waiting for it:-) Oct 20 '18 at 14:15
  • That's unfortunate, but thanks anyway.
    – johnymm
    Oct 20 '18 at 14:34

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.