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 ABC
auf 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 denenmemoir
ist nicht.
Da memoir
die Dinge alleine verwaltet, wäre es am besten, die memoir
-spezifische Version von zu speichern und wiederherzustellen \@xfloat
oder 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 fixltx2e
standardmäß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
fixltx2e
Pakets enthalten waren, was nun ein No-Op ist (CTAN-Ankündigung).