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
    Commented Oct 20, 2018 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
    Commented Oct 20, 2018 at 5:06
  • Based on the documentation, it doesn't look ideal, however.
    – johnymm
    Commented Oct 20, 2018 at 5:14

1 Answer 1

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}
6
  • 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
    Commented Oct 20, 2018 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.... Commented Oct 20, 2018 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
    Commented Oct 20, 2018 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:-) Commented Oct 20, 2018 at 14:15
  • That's unfortunate, but thanks anyway.
    – johnymm
    Commented Oct 20, 2018 at 14:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .