Coloque as figuras após evocar o ambiente figure* usando fixltx2e

Coloque as figuras após evocar o ambiente figure* usando fixltx2e

Eu sei que há algumas dúvidas sobre a colocação de figuras, tabelas, carros alegóricos em geral, como, por exemplo,Manter tabelas/figuras próximas de onde são mencionadas.

Mas minha pergunta é diferente. Estou usando o modelo IEEEtran. No meio do texto evoquei o figure*ambiente porque a figura que tenho em mãos é grande demais para apenas uma coluna. No entanto, esse número é transferido para a próxima página. Nada de errado com isso.

Depois de fazer isso, usei o figureambiente para colocar outra figura. Esta nova figura aparecerá após a última. Porém, acho que fica melhor antes do anterior (na página anterior), caso contrário haverá muito texto entre o local que desejo que apareça e o posicionamento real.

Percebi que isso só acontece porque estou usando também o fixltx2e. As soluções lógicas seriam comentar a \usepackage{fixltx2e}linha ou usar [H]o pacote float. No entanto, estou me perguntando se existe uma maneira melhor (inteligente) de fazer isso, mantendo os benefícios do 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}

Responder1

A abordagem usual para esses problemas é salvar as definições 'antigas' de macros que são alteradas ao carregar o pacote incorreto e, em seguida, restaurar as versões antigas após o \usepackage. Opacote fixltx2ealtera nove macros que afetam o posicionamento flutuante de coluna dupla. Este exemplo os altera de volta.

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

Deve-se observar que o código de posicionamento flutuante LaTeXé bastante complexo, portanto não posso ter certeza de que isso não terá um efeito adverso em outra coisa. Na verdade, eu não ficaria surpreso se egreg ou David Carlisle aparecessem em breve e apontassem que esse hack é um desastre completo.

informação relacionada