memoir \setfloatadjustment は fixltx2e をロードした後に機能しません

memoir \setfloatadjustment は fixltx2e をロードした後に機能しません

次のスニペットを検討してください。

\documentclass{memoir}
\usepackage{fixltx2e}
\setfloatadjustment{figure}{\raggedleft}
\begin{document}
\begin{figure}
ABC
\end{figure}
\end{document}

ABCこのコードをコンパイルすると、がタイプブロックの右側に配置されるはずですが、デフォルト側 (左側) に配置されます。fixltx2e パッケージをコメント アウトすると、コードは期待どおりに動作します。残念ながら、使用しているパッケージの中には、fixltx2e パッケージをロードするものがあるため、usepackage を単にコメント アウトすることができません。この問題を修正する方法を知っている人はいますか?\@xfloatは上書きされているようですが、これは次の行でメモワールによってカバーされているはずです。

\AtBeginDocument{
  \let\m@m@xfloat\@xfloat
  \def\@xfloat #1[#2]{%
    \m@m@xfloat #1[#2]%
    \def\baselinestretch{\m@m@float@spacing}%
    \normalsize}
}

答え1

確かに、fixltx2e上書きします\@xfloat。これは、標準ドキュメントクラスのコンテンツを固定するものであると考えられています。memoirではありません。

memoirは独自に管理するため、memoirの 固有のバージョンを保存して復元する\@xfloatか、単に再定義するのが最善です。

\documentclass{memoir}
\usepackage{fixltx2e}
\makeatletter
% Restore original memoir definition of \@xfloat
\def\@xfloat#1[#2]{\mem@old@xfloat{#1}[#2]\@nameuse{#1adjustment}}
\makeatother
\setfloatadjustment{figure}{\raggedleft}
\begin{document}
\begin{figure}
ABC
\end{figure}
\end{document}

fixltx2eデフォルトでは、LaTeX2e (近日リリース予定の TeX Live 2015) リリースの一部となることに注意してください。

LaTeX2eは、以前はパッケージを明示的にロードすることによってのみ含まれていた変更をデフォルトで組み込むようになりましたfixltx2e。これは、現在では何も行いません(CTANのお知らせ)。

関連情報