
Sé que hay un par de preguntas sobre la colocación de figuras, tablas, flotadores en general como, por ejemplo,Mantener tablas/figuras cerca de donde se mencionan..
Pero mi pregunta es diferente. Estoy usando la plantilla IEEEtran. A mitad del texto evoqué el figure*
entorno porque la figura que tengo en las manos es demasiado grande para solo una columna. Sin embargo, esa cifra se traslada a la página siguiente. Nada de malo con eso.
Después de hacer eso, usé el figure
entorno para colocar otra figura. Esta nueva figura aparecerá después de la última. Sin embargo, creo que se ve mejor antes del anterior (en la página anterior), de lo contrario habrá mucho texto entre el lugar donde quiero que aparezca y la ubicación real.
Noté que esto solo sucede porque también estoy usando fixltx2e. Las soluciones lógicas serían comentar la \usepackage{fixltx2e}
línea o usar el [H]
del paquete flotante. Sin embargo, me pregunto si existe una forma mejor (inteligente) de hacer esto manteniendo los beneficios de fixltx2e.
\documentclass{IEEEtran}
\usepackage{fixltx2e}
\usepackage{blindtext}
\usepackage{float}
\begin{document}
\Blindtext
\begin{figure*}
\caption{fig1}
\label{fig1}
\end{figure*}
\blindtext
\begin{figure}
\caption{fig2}
\label{fig2}
\end{figure}
\begin{figure}[H]
\caption{fig3}
\label{fig3}
\end{figure}
\end{document}
Respuesta1
El enfoque habitual para estos problemas es guardar las definiciones "antiguas" de las macros que se modifican al cargar el paquete infractor y luego restaurar las versiones antiguas después.\usepackage
. Elpaquete fixltx2ecambia nueve macros que afectan la ubicación del flotador de doble columna. Este ejemplo los vuelve a cambiar.
\documentclass{IEEEtran}
\makeatletter
\let\old@dblfloatplacement\@dblfloatplacement
\let\old@end@dblfloat\end@dblfloat
\let\old@doclearpage\@doclearpage
\let\old@startdblcolumn\@startdblcolumn
\let\old@addtonextcol\@addtonextcol
\let\old@addtodblcol\@addtodblcol
\let\old@addtocurcol\@addtocurcol
\let\old@xtryfc\@xtryfc
\let\old@ztryfc\@ztryfc
\usepackage{fixltx2e}
\let\@dblfloatplacement\old@dblfloatplacement
\let\end@dblfloat\old@end@dblfloat
\let\@doclearpage\old@doclearpage
\let\@startdblcolumn\old@startdblcolumn
\let\@addtonextcol\old@addtonextcol
\let\@addtodblcol\old@addtodblcol
\let\@addtocurcol\old@addtocurcol
\let\@xtryfc\old@xtryfc
\let\@ztryfc\old@ztryfc
\makeatother
\usepackage{blindtext}
\usepackage{float}
\begin{document}
\Blindtext
\begin{figure*}
\rule{0.9\textwidth}{20pt}
\caption{fig1}
\label{fig1}
\end{figure*}
\blindtext
\begin{figure}
\rule{0.45\textwidth}{20pt}
\caption{fig2}
\label{fig2}
\end{figure}
\end{document}
Cabe señalar que el código de ubicación del flotador LaTeX
es bastante complejo, por lo que no puedo estar seguro de que esto no tenga un efecto adverso en otra cosa. De hecho, no me sorprendería que egreg o David Carlisle aparecieran en breve y señalaran que este truco es un completo desastre.