0

I'm trying to insert a fullpage figure in a 2 columns document using multicol. I know this is a long lasting problems but all "solutions" found online do not do the job. My MWE follows:

\documentclass[8pt]{article}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage[
bottom=22mm,
top=22mm,
left=15mm,
right=15mm
]{geometry}

\usepackage{lipsum} \usepackage{multicol}

\begin{document} \begin{multicols}{2} \section{section 1} \lipsum[1-8] \section{section 2} \lipsum[1-2] \begin{figure}[!ht] \hrule \vspace{2mm} \centering\includegraphics[width=\textwidth]{FullPageFigure.pdf} \vspace{1mm} \hrule \end{figure} \lipsum[1-2] \end{multicols} \end{document}

This results in the fullpage figure being pushed to the end of the document for no apparent reason:

enter image description here

However if I slightly change the size of the figure with:

\centering\includegraphics[width=0.9\textwidth]{FullPageFigure.pdf}

The figure is correctly placed after the first page of the document with the remaining text:

enter image description here

I've tried with \usepackage{placeins} and \FloatBarrier but they are not adapted for multicol environments.

Also the only "working" solution that can be found online (e.g. here) is to end the multicol environment before placing the figure and then starting it again. Which is clearly not a viaable solution.

Thanks in advance for the help

MNP_88
  • 63
  • Did you try loading the stfloats package and the [t] option (or[b] if you prefer) with figure*. Other than that, you have the strip environment from midfloat (same bundle: sttools). – Bernard Dec 02 '20 at 11:54
  • you removed the p from the float options, so it can't go on a float page. Try with \begin{figure*}[!htp] instead. – Ulrike Fischer Dec 02 '20 at 12:52
  • That was it! Thank you very much! – MNP_88 Dec 02 '20 at 13:03
  • Ulrike Fischer, you may want to post this as an anwer so I can point it as the solution. – MNP_88 Dec 02 '20 at 13:30

2 Answers2

2

You removed the p from the float options, so it can't go on a float page.

Use \begin{figure*}[!htp] instead.

Ulrike Fischer
  • 327,261
1

Ulrike spotted one issue, which prevents from being placed: if on t being allowed it (h doesn't work on wide floats) then it will never get placed because it is too large for the top area, see https://tex.stackexchange.com/a/39019/10109 for a discussion.

But the other is its placement in the source. If you explicitly mark the position where you put your float with, say {\Large Here} you will see that this point is on the second page. Thus it can only go after that page (being full height) which brings it up to page 3 (as a minimum).

With the smaller graphic, float and callout both fit onto page 2 which is why you see it there.