1

I would like to have a figure spanning one and a half columns in a two columns environmnent. I would like to have it aligned to the left side of the page and some text can then be written on the remaining half column on the right side of the page.

I try to illustrate what my page layout would look like below :

|    figure        | text |
| text col 1 | text col 2 |
| text col 1 | text col 2 |
| text col 1 | text col 2 |
| text col 1 | text col 2 |
| text col 1 | text col 2 |
| text col 1 | text col 2 |

I tried to do something like :

\begin{minipage}[c]{1.5\textwidth}
\begin{figure}
\includegraphics{myfig}
\end{figure}
\end{minipage}

but it ends up not showing my figure at all. How can I reach the expected result ?

  • 1
    if the text is part of the figure, just use a normal figure* environment with a graphic and some text. If you want the text to flow automatically from the main document content to the narrow region so the reading order is text col 1// text // text col 2 with the text breaking automatically then that is very hard to do in tex. – David Carlisle Nov 8 '18 at 15:01
  • the text is not part of the figure, I would effectively like the main text to wrap around it in the narrow region very much as you describe. Ah is that so hard ? mmmmh. – Mary Nov 8 '18 at 15:04
  • @DavidCarlisle : could there be a way to have the figure's caption to be in that narrow region then ? Would that be something easier to do ? – Mary Nov 8 '18 at 15:06
  • hard is perhaps not really putting it strongly enough. TeX does not support that. You would have to do the page breaking by hand and adjust the parshape of the paragraph by hand and then any edit anywhere in the document you would have to adjust to make sure the narrow lines came on the correct text. – David Carlisle Nov 8 '18 at 15:07
  • putting the caption there is trivial, just \begin{figure*}\includegraphics[width=.7\textwidth]{...}\hfill\begin{minipage{.25\textwidth}\caption{....}\end{minipage}\enfd{figure*} – David Carlisle Nov 8 '18 at 15:08
2

If you really want this you can have it but it requires a lot of manual work that should be left until the document is done as any edit to the document forces a change of the settings. Basically you need to see where the paragraph breaks and then specify how many long and short rows are needed in each affected paragraph.

enter image description here

\documentclass[twocolumn,a5paper]{article}
\usepackage{graphicx}

\def\z{\stepcounter{enumi}One two three four five six. }
\def\zz{Red yellow green \z\z\z \Roman{enumi} blue black white. }
\def\zzz{\zz\z \zz\zz\z\z\zz}
\begin{document}

\z\z\z

\begin{figure}[t]
 \begin{minipage}{1.5\linewidth}
\includegraphics[width=\linewidth]{example-image}

\caption{ Zzzzz zzz zzzz z z z zzzzzzzzzz  zzz}
\end{minipage}\hspace*{-.5\linewidth}
\end{figure}

\zz

\def\full{0pt \linewidth }
\def\short{.55\linewidth .45\linewidth }

\parshape 5
\full\full\full\full\short
\zz

\parshape 17
\short\short\short\short\short\short\short\short
\short\short\short\short\short\short\short\short
\full
\zzz
\end{document}
| improve this answer | |
  • Thanks, that is something I would not like to do however. It is too complicated and not very much "latexy" as I would have to count some lines as you say. I guess wrapping a caption around a figure is as hard. Overall, I am surprised that latex doesn't handle this properly, it seems to me quite simple to write text around a defined box... But I don't really know how latex works beyond what I type in my editor. – Mary Nov 8 '18 at 16:23
  • @Mary the problem is that latex breaks paragraphs in to lines, then lines of text in to columns (adding floats at that point) then breaking columns in to pages. So by the time you know that a column of text is a left column on some page it is too late to go back and change the line breaking. – David Carlisle Nov 8 '18 at 16:25

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.