конфликт 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символа s, первый из которых выровнен с таблицей, а второй смещен влево:

введите описание изображения здесь

Как мне решить эту проблему?

Обновлять:ошибка возникает только если babel используется на итальянском языке, все остальные языки, которые я пробовал, работают хорошо.

решение1

Проблема в том, etoolboxчто загружается italian. Он вставляет хук в код конечной среды, а tabularx это не нравится.

В версии latex для разработки, которую можно использовать, вызвав pdflatex-devее works, ее код хука стал более надежным.

В качестве альтернативы вы можете попробовать b-аргумент xparse:

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

Связанный контент