fixltx2e를 로드한 후 memoir \setfloatadjustment가 작동하지 않습니다.

fixltx2e를 로드한 후 memoir \setfloatadjustment가 작동하지 않습니다.

다음 스니펫을 고려하세요.

\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 발표).

관련 정보