memorias \setfloatadjustment no funciona después de cargar fixltx2e

memorias \setfloatadjustment no funciona después de cargar fixltx2e

Considere el siguiente fragmento:

\documentclass{memoir}
\usepackage{fixltx2e}
\setfloatadjustment{figure}{\raggedleft}
\begin{document}
\begin{figure}
ABC
\end{figure}
\end{document}

Cuando compila este código, uno esperaría que ABCse colocara en el lado derecho del bloque de tipos, pero en cambio se coloca en el lado predeterminado (izquierda). Después de comentar el paquete fixltx2e, el código funciona como se esperaba. Desafortunadamente, algunos paquetes que uso cargan el paquete fixltx2e, por lo que no puedo simplemente comentar el paquete use. ¿Alguien sabe cómo solucionar este problema? Parece que \@xfloatestá sobrescrito, pero debería haber sido cubierto por las memorias con las líneas:

\AtBeginDocument{
  \let\m@m@xfloat\@xfloat
  \def\@xfloat #1[#2]{%
    \m@m@xfloat #1[#2]%
    \def\baselinestretch{\m@m@float@spacing}%
    \normalsize}
}

Respuesta1

En efecto,fixltx2esobrescribe \@xfloat. La suposición es que fija el contenido en las clases de documentos estándar, de las cualesmemoirno es.

Dado que memoirgestiona las cosas por sí solo, lo mejor sería guardar y restaurar la memoirversión específica de \@xfloat, o simplemente redefinirla:

\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}

Tenga en cuenta que fixltx2eformará parte de la versión LaTeX2e (próximamente TeX Live 2015) de forma predeterminada:

LaTeX2e ahora incorpora, de forma predeterminada, cambios que antes se incluían solo al cargar explícitamente el fixltx2epaquete, que ahora no es operativo (Anuncio CTAN).

información relacionada