Einspaltiger Float oben in der zweiten Spalte, zweispaltiger Float unten auf der Seite

Einspaltiger Float oben in der zweiten Spalte, zweispaltiger Float unten auf der Seite

Ich kämpfe mit LaTeX darüber: Ich möchte in einem twocolumnDokument eine kleine Abbildung 1 oben in der zweiten Spalte und eine breite Abbildung 2 unten auf der Seite haben. Dieses MWE veranschaulicht dies:

\documentclass[twocolumn]{article}
\usepackage{stfloats}
\usepackage{lipsum}

%\renewcommand{\topfraction}{0.1}

\begin{document}
    \global\csname @topnum\endcsname 0

    \lipsum[1]

    \begin{figure}[t]
        \caption{Fig. 1!}
    \end{figure}

    \begin{figure*}[b]
        \caption{Fig. 2!}
    \end{figure*}

    \lipsum[2-6]

\end{document}

Doch egal, was ich versuche, es scheint nicht zu funktionieren. Entweder steht Abb. 1 oben in der ersten Spalte oder die breite Abb. 2 steht auf Seite 2. Dies scheint eine Folge von

  1. die breite Figur muss früh in der ersten Spalte erscheinen und
  2. Die kleine Zahl darf nicht in der ersten Spalte erscheinen, da sie sonst dort landet.

Gibt es eine Problemumgehung? Ich weiß, dass die Nummerierung nach der Positionierung der Floats festgelegt werden kann (https://tex.stackexchange.com/a/356902/30810), aber zuerst muss die Positionierung stimmen.

Aktualisieren: Falls das hilft: Mein Problem tritt auf der letzten Seite des Dokuments auf.

Antwort1

Die figure*Umgebung platziert ihren Inhalt am Anfang und das optionale Argument funktioniert nicht. Sie können ein \InsertBoxCin einer Umgebung verschachteltes versuchen strip, aus cuted( sttoolsBundle): stripist eine Art lokale Einspaltenumgebung.

\documentclass[twocolumn]{article}
\usepackage{stfloats}
\usepackage[unskipbreak]{cuted}
\usepackage{lipsum}
\usepackage{graphicx, caption}
\input{insbox}
\renewcommand{\topfraction}{0.4}

\begin{document}

    \lipsum[1-2]

    \begin{figure}[!t]
\centering\includegraphics[scale=0.5]{Nightmare_Fussli}
        \caption{Nightmare (\emph{Henry Fuseli})}
    \end{figure}
 \lipsum[3-4]
%
\begin{strip}
\InsertBoxC{
\includegraphics[scale =0.8]{SanRomano-all}}
\captionof{figure}{The Battle of San Romano (\emph{Paolo Uccello})}
\end{strip}
\lipsum[4-8]

\end{document} 

Bildbeschreibung hier eingeben

Antwort2

Ich habe das hier probiert. Es sieht aus wie ein furchtbarer Hack, aber ich kann damit leben:

\documentclass[twocolumn]{article}
\usepackage{mwe,lipsum}

% Solution:
\usepackage{capt-of}
\newcommand{\figureTwo}[1]{\makebox[0pt][l]{\raisebox{-#1}[0pt][0pt]{\parbox{\textwidth}{
    \centering
    \includegraphics[scale=0.5]{example-image-16x9}
    \captionof{figure}{Caption}
    \label{fig:Label}
}}}}

% for Calibration:
\usepackage{stfloats}

\begin{document}
    \global\csname @topnum\endcsname 0

    \lipsum[1]

    \begin{figure}[t]
        \caption{Fig. 1!}
    \end{figure}

    \enlargethispage{-10\baselineskip}

    % compare with and without - same thing!
    \noindent\figureTwo{10cm}\indent
    \lipsum[2-5]

%\end{document}

    \cleardoublepage
    Calibration:

    \begin{figure*}[b]
        \centering
        \includegraphics[scale=0.5]{example-image-16x9}
        \captionof{figure}{Caption}
    \end{figure*}

\end{document}

\figureTwomuss am Anfang eines Absatzes in der linken Spalte aufgerufen werden. \makeboxstellt sicher, dass das Ergebnis die Breite Null hat (und anscheinend eine einzeilige Höhe); \raiseboxverschiebt die Zahl vertikal an eine gute Position; \parboxist notwendig, weil \captionofes in keinem der beiden anderen Felder funktioniert (vergleiche\captionof in einer Box). Wenn diese Kombination vereinfacht werden könnte, würde mir das auch gefallen :)

Die Kalibrierung erfolgt durch Kompilieren beider Seiten, Importieren in Inkscape, Messen des vertikalen Versatzes beider Abbildungen und 10cmentsprechendes Anpassen der Parameter. Sollte durchgeführt werden, wenn das Dokument wirklich, wirklich fertig ist.

verwandte Informationen