Memoir \setfloatadjustment funktioniert nicht nach dem Laden von fixltx2e

Memoir \setfloatadjustment funktioniert nicht nach dem Laden von fixltx2e

Betrachten Sie den folgenden Ausschnitt:

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

Wenn Sie diesen Code kompilieren, würde man erwarten, dass er ABCauf der rechten Seite des Typeblocks platziert wird, aber stattdessen wird er auf der Standardseite (links) platziert. Nach dem Auskommentieren des Pakets fixltx2e funktioniert der Code wie erwartet. Leider lädt ein Paket, das ich verwende, das Paket fixltx2e, sodass ich das Usepackage nicht einfach auskommentieren kann. Weiß jemand, wie man dieses Problem behebt? Es scheint, dass dies \@xfloatüberschrieben wird, aber dies hätte von Memoir durch die Zeilen abgedeckt werden sollen:

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

Antwort1

In der Tat,fixltx2eüberschreibt \@xfloat. Die Annahme ist, dass es Inhalte in den Standarddokumentklassen behebt, von denenmemoirist nicht.

Da memoirdie Dinge alleine verwaltet, wäre es am besten, die memoir-spezifische Version von zu speichern und wiederherzustellen \@xfloatoder sie einfach neu zu definieren:

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

Beachten Sie, dass dies fixltx2estandardmäßig Teil der LaTeX2e-Version (demnächst TeX Live 2015) sein wird:

LaTeX2e integriert nun standardmäßig Änderungen, die zuvor nur durch das explizite Laden des fixltx2ePakets enthalten waren, was nun ein No-Op ist (CTAN-Ankündigung).

verwandte Informationen