考虑以下代码片段:
\documentclass{memoir}
\usepackage{fixltx2e}
\setfloatadjustment{figure}{\raggedleft}
\begin{document}
\begin{figure}
ABC
\end{figure}
\end{document}
当您编译此代码时,人们会期望ABC
将其放置在 typeblock 的右侧,但它却放置在默认侧(左侧)。注释掉 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公告)。