memoir \setfloatadjustment não funciona após carregar fixltx2e

memoir \setfloatadjustment não funciona após carregar fixltx2e

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 ABCfosse 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 \@xfloatfoi 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,fixltx2esubstitui \@xfloat. A suposição é que ele fixa o conteúdo nas classes de documentos padrão, das quaismemoirnão é.

Como memoirgerencia as coisas por conta própria, o melhor seria salvar e restaurar a memoirversã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 fixltx2efará 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 fixltx2epacote, que agora é um ambiente autônomo (Anúncio do CTAN).

informação relacionada