
図や表、フロートの配置に関していくつか質問があることは承知しています。例えば、表や図を記載されている場所の近くに置く。
しかし、私の質問は異なります。私は 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
これらの問題に対する通常のアプローチは、問題のあるパッケージをロードすることによって変更されたマクロの「古い」定義を保存し、その後に古いバージョンを復元することです\usepackage
。fixltx2e パッケージ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 のどちらかがすぐに現れて、このハックは完全な失敗だと指摘しても驚かないでしょう。