Considere o seguinte trecho:
\documentclass{memoir}
\usepackage{fixltx2e}
\setfloatadjustment{figure}{\raggedleft}
\begin{document}
\begin{figure}
ABC
\end{figure}
\end{document}
Ao compilar este código, seria de esperar que ele ABC
fosse colocado no lado direito do bloco de tipo, mas em vez disso ele seria colocado no lado padrão (esquerdo). Depois de comentar o pacote fixltx2e, o código funciona conforme o esperado. Infelizmente, alguns pacotes que eu uso carregam o pacote fixltx2e, então não posso simplesmente comentar o usepackage. Alguém sabe como corrigir esse problema? Parece que \@xfloat
foi sobrescrito, mas isso deveria ter sido coberto pelo livro de memórias pelas linhas:
\AtBeginDocument{
\let\m@m@xfloat\@xfloat
\def\@xfloat #1[#2]{%
\m@m@xfloat #1[#2]%
\def\baselinestretch{\m@m@float@spacing}%
\normalsize}
}
Responder1
De fato,fixltx2e
substitui \@xfloat
. A suposição é que ele fixa o conteúdo nas classes de documentos padrão, das quaismemoir
não é.
Como memoir
gerencia as coisas por conta própria, o melhor seria salvar e restaurar a memoir
versão específica do \@xfloat
, ou apenas redefini-la:
\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}
Observe que isso fixltx2e
fará parte do lançamento do LaTeX2e (próximo TeX Live 2015) por padrão:
LaTeX2e agora incorpora, por padrão, alterações anteriormente incluídas apenas ao carregar explicitamente o
fixltx2e
pacote, que agora é um ambiente autônomo (Anúncio do CTAN).