考慮以下片段:
\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公告)。