Flotador de una sola columna en la parte superior de la segunda columna, flotador de dos columnas en la parte inferior de la página

Flotador de una sola columna en la parte superior de la segunda columna, flotador de dos columnas en la parte inferior de la página

Estoy luchando contra LaTeX por esto: me gustaría tener, en un twocolumndocumento, una Fig. 1 pequeña en la parte superior de la segunda columna y una Fig. 2 ancha en la parte inferior de la página. Este MWE ilustra esto:

\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}

Sin embargo, independientemente de lo que intento, esto no parece funcionar. O la Fig. 1 está en la parte superior de la primera columna; o la amplia Fig. 2 está en la página 2. Esto parece ser una consecuencia de

  1. la figura ancha debe aparecer al principio de la primera columna, y
  2. la figura pequeña no puede aparecer en la primera columna, de lo contrario termina en esa columna.

¿Existe alguna solución? Sé que una vez colocados los flotadores, la numeración se puede arreglar (https://tex.stackexchange.com/a/356902/30810), pero primero el posicionamiento debe ser correcto.

Actualizar: Si eso ayuda: mi problema ocurre en la última página del documento.

Respuesta1

El figure*entorno coloca su contenido en la parte superior y el argumento opcional no funciona. Puede probar un \InsertBoxC, anidado en un stripentorno, desde cuted( sttoolspaquete): stripes una especie de entorno local de una columna.

\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} 

ingrese la descripción de la imagen aquí

Respuesta2

He probado esto. Parece un truco terrible, pero puedo vivir con él:

\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}

\figureTwodebe llamarse al principio de un párrafo en la columna de la izquierda. \makeboxse asegura de que el resultado tenga un ancho cero (y una altura de una sola línea, al parecer); \raiseboxmueve la figura verticalmente a una buena posición; \parboxes necesario porque\captionof no funciona en ninguna de las otras dos casillas (comparar\captionof en una caja). Si esta combinación pudiera simplificarse, a mí también me gustaría :)

La calibración funciona compilando ambas páginas, importándolas en Inkscape, midiendo los desplazamientos verticales de ambas figuras y adaptando el 10cmparámetro en consecuencia. Debe hacerse cuando el documento esté realmente terminado.

información relacionada