Estou lutando contra o LaTeX por causa disso: gostaria de ter, em um twocolumn
documento, 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
- a figura larga deve aparecer no início da primeira coluna, e
- 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 strip
ambiente, from cuted
( sttools
bundle): 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}
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}
\figureTwo
deve ser chamado no início de um parágrafo na coluna da esquerda. \makebox
garante que o resultado tenha largura zero (e altura de linha única, ao que parece); \raisebox
move a figura verticalmente para uma boa posição; \parbox
é necessário porque \captionof
nã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 10cm
parâmetro de acordo. Deve ser feito quando o documento estiver realmente concluído.