fixltx2eを使用してfigure*環境を呼び出してフィギュアを配置します

fixltx2eを使用してfigure*環境を呼び出してフィギュアを配置します

図や表、フロートの配置に関していくつか質問があることは承知しています。例えば、表や図を記載されている場所の近くに置く

しかし、私の質問は異なります。私は IEEEtran テンプレートを使用しています。テキストの途中で、figure*手元にある図が 1 列に収まらないほど大きいため、環境を呼び出しました。ただし、その図は次のページに移動されます。何も問題はありません。

その後、figure環境を使用して別の図を配置しました。この新しい図は、最後の図の後に表示されます。ただし、前の図 (前のページ) の前の方が見栄えが良いと思います。そうしないと、表示したい場所と実際の配置の間に多くのテキストが入ります。

これが起こるのは、fixltx2e も使用しているためだと気づきました。論理的な解決策としては、その\usepackage{fixltx2e}行をコメント化するか、[H]float パッケージの を使用することです。ただし、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}

答え1

これらの問題に対する通常のアプローチは、問題のあるパッケージをロードすることによって変更されたマクロの「古い」定義を保存し、その後に古いバージョンを復元することです\usepackagefixltx2e パッケージ2 列フロートの配置に影響する 9 つのマクロを変更します。この例では、それらを元に戻します。

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

のフロート配置コードはLaTeXかなり複雑なので、これが他の何かに悪影響を与えないかどうかはわかりません。実際、egreg か David Carlisle のどちらかがすぐに現れて、このハックは完全な失敗だと指摘しても驚かないでしょう。

関連情報