Estoy luchando contra LaTeX por esto: me gustaría tener, en un twocolumn
documento, 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
- la figura ancha debe aparecer al principio de la primera columna, y
- 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 strip
entorno, desde cuted
( sttools
paquete): strip
es 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}
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}
\figureTwo
debe llamarse al principio de un párrafo en la columna de la izquierda. \makebox
se asegura de que el resultado tenga un ancho cero (y una altura de una sola línea, al parecer); \raisebox
mueve la figura verticalmente a una buena posición; \parbox
es 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 10cm
parámetro en consecuencia. Debe hacerse cuando el documento esté realmente terminado.