Flutuação de coluna única no topo da segunda coluna, flutuação de coluna dupla na parte inferior da página

Flutuação de coluna única no topo da segunda coluna, flutuação de coluna dupla na parte inferior da página

Estou lutando contra o LaTeX por causa disso: gostaria de ter, em um twocolumndocumento, uma pequena Fig. 1 no topo da segunda coluna e uma larga Fig. 2 na parte inferior da página. Este MWE ilustra isso:

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

No entanto, independentemente do que eu tente, isso não parece funcionar. A Figura 1 está no topo da primeira coluna; ou a larga Fig. 2 está na página 2. Isso parece ser uma consequência de

  1. a figura larga deve aparecer no início da primeira coluna, e
  2. o pequeno algarismo não pode aparecer na primeira coluna, caso contrário acaba nessa coluna.

Existe uma solução alternativa? Eu sei que uma vez posicionados os carros alegóricos, a numeração pode ser corrigida (https://tex.stackexchange.com/a/356902/30810), mas o posicionamento deve estar correto primeiro.

Atualizar: Se isso ajudar: meu problema ocorre na última página do documento.

Responder1

O figure*ambiente coloca seu conteúdo no topo e o argumento opcional não funciona. Você pode tentar um \InsertBoxC, aninhado em um stripambiente, from cuted( sttoolsbundle): stripé uma espécie de ambiente local de uma coluna.

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

insira a descrição da imagem aqui

Responder2

Eu tentei isso. Parece um hack horrível, mas posso conviver com isso:

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

\figureTwodeve ser chamado no início de um parágrafo na coluna da esquerda. \makeboxgarante que o resultado tenha largura zero (e altura de linha única, ao que parece); \raiseboxmove a figura verticalmente para uma boa posição; \parboxé necessário porque \captionofnão funciona em nenhuma das outras duas caixas (compare\captionof em uma caixa). Se esta combinação pudesse ser simplificada, eu também gostaria :)

A calibração funciona compilando ambas as páginas, importando no Inkscape, medindo deslocamentos verticais de ambas as figuras e adaptando o 10cmparâmetro de acordo. Deve ser feito quando o documento estiver realmente concluído.

informação relacionada