2

I think there have been some questions regarding this, but I haven't found a solution so far. The figures in my (twocolumn) document are too small. Therefore, I thought about letting them run into the margin. Increasing the margin for the whole text looks odd. I don't know how it looks if I do it for figures; I just wanted to try.

Anyway, of course I want to let figures in the left column run into the left margin and figures in the right run into right margin. The increased size of the picture can be kept from producing warnings by makebox-yoga. I guess the margins for the caption can be dealt with using the caption ackage.

The solution in Place figures side by side, spill into outer margin is close to what I want, but it deals only with twosided text. The attempt on two-column text in How do I let a float know on which column it is placed? apparently does not work.

Is it possible to achieve what I want in the following mwe, such that I needn't tell each float where it occurs?

\documentclass[twocolumn]{scrartcl}
\usepackage[margin=1in]{geometry}
\usepackage{lipsum, graphicx, calc}
\setcounter{topnumber}{1}
\setcounter{bottomnumber}{1}
\begin{document}
    \begin{figure}[t]
        \makebox[\linewidth][r]{\rule{\linewidth+1in}{5cm}}
        \caption{left.}
    \end{figure}
    \lipsum[1-2]
    \begin{figure}[b]
        \makebox[\linewidth][l]{\rule{\linewidth+1in}{5cm}}
        \caption{right.}
    \end{figure}
    \lipsum[3-5]
\end{document}

enter image description here

Since the size of the float (in this logic) does not depend on which column it ends up in, I would have hoped I can get a stable solution by storing to the aux-file the information where a float ends up and use that in the next pass. But apparently, this is not possible, is it?

Bubaya
  • 2,279

1 Answers1

4

Like this?

enter image description here

With use of figure* float (it will appear on the top of the next page after point of its insertion) and changepage package:

\documentclass[twocolumn]{scrartcl}
\usepackage[margin=1in]{geometry}
\usepackage{graphicx}
\usepackage{changepage}
\usepackage{lipsum}

\begin{document} \begin{figure} \begin{adjustwidth}{-1in}{-1in} \begin{minipage}{0.48\linewidth} \includegraphics[width=\linewidth]{example-image-duck} \caption{left?} \end{minipage} \hfill \begin{minipage}{0.48\linewidth} \includegraphics[width=\linewidth]{example-image-duck} \caption{right?} \end{minipage} \end{adjustwidth} \end{figure} \lipsum[1-12] \end{document}

With help of package stfloats is possible that float figure* (or table*) is at bottom of the same page, if there is sufficient space for it:

enter image description here

In this case the MWE is

\documentclass[twocolumn]{scrartcl}
\usepackage[margin=1in]{geometry}
\usepackage{graphicx}
\usepackage{stfloats} % <---
\usepackage{changepage}
\usepackage{lipsum}

\begin{document} \begin{figure}[b] % <--- \begin{adjustwidth}{-1in}{-1in} \begin{minipage}{0.48\linewidth} \includegraphics[width=\linewidth]{example-image-duck} \caption{left?} \end{minipage} \hfill \begin{minipage}{0.48\linewidth} \includegraphics[width=\linewidth]{example-image-duck} \caption{right?} \end{minipage} \end{adjustwidth} \end{figure} \lipsum[1-12] \end{document}

Zarko
  • 296,517
  • Thanks for your solution! Sorry, it seems that my question was not so clear: ideally, I would not dictate which floats appear side by side – which I do by using float*. I changed my question accordingly. – Bubaya Apr 07 '22 at 07:05