사용자 정의 환경에서 babel이 booktabs 및 tabularx와 충돌합니다.

사용자 정의 환경에서 babel이 booktabs 및 tabularx와 충돌합니다.

정상적으로 컴파일된 다음과 같은 문서가 있습니다.

\documentclass{article}

\usepackage{booktabs}
\usepackage{tabularx}

\newenvironment{myenv}
               {\tabularx{\columnwidth}{X}\toprule}
               {\bottomrule\endtabularx}

\begin{document}

\begin{myenv}
    Foo\\
\end{myenv}

\end{document}

가 필요 \usepackage[italian]{babel}하지만 그렇게 하고 컴파일하면 다음 오류가 발생합니다.

! Misplaced \noalign.
\bottomrule ->\noalign 
                       {\ifnum 0=`}\fi \@aboverulesep =\aboverulesep \global...
l.16 \end{myenv}

PDF 출력에서 ​​테이블에는 두 \bottomorule개의 가 있는데, 첫 번째는 테이블과 정렬되고 두 번째는 왼쪽으로 이동됩니다.

여기에 이미지 설명을 입력하세요

이 문제를 어떻게 해결할 수 있나요?

업데이트:이 오류는 babel이 이탈리아어로 사용되는 경우에만 발생하며, 제가 시도한 다른 모든 언어는 잘 작동합니다.

답변1

문제는 etoolbox이탈리아어로 로드되는 것입니다. 최종 환경 코드에 후크를 삽입하는데 tabularx는 이를 좋아하지 않습니다.

작동한다고 호출하여 사용할 수 있는 개발 버전의 라텍스를 사용하면 pdflatex-dev후크 코드가 더욱 강력해집니다.

또는 xparse의 b 인수를 사용해 볼 수도 있습니다.

\documentclass{article}
\usepackage[italian]{babel}
\usepackage{xparse}
\usepackage{booktabs}
\usepackage{tabularx}

\NewDocumentEnvironment{myenv}{b}
               {\begin{tabularx}{\columnwidth}{X}\toprule #1  \bottomrule\end{tabularx}}
               {}

\begin{document}

\begin{myenv}
    Foo\\
\end{myenv}

\end{document}

관련 정보