
Eu tenho um documento como este, que é compilado normalmente:
\documentclass{article}
\usepackage{booktabs}
\usepackage{tabularx}
\newenvironment{myenv}
{\tabularx{\columnwidth}{X}\toprule}
{\bottomrule\endtabularx}
\begin{document}
\begin{myenv}
Foo\\
\end{myenv}
\end{document}
Eu também preciso \usepackage[italian]{babel}
, mas se eu fizer isso e depois compilar, recebo o seguinte erro:
! Misplaced \noalign.
\bottomrule ->\noalign
{\ifnum 0=`}\fi \@aboverulesep =\aboverulesep \global...
l.16 \end{myenv}
e na saída do PDF a tabela possui dois \bottomorule
s, o primeiro alinhado com a tabela, e o segundo movido para a esquerda:
Como posso resolver isso?
Atualizar:o erro ocorre apenas se o babel for usado em italiano, todos os outros idiomas que tentei funcionam bem.
Responder1
O problema é etoolbox
que é carregado por italiano. Ele insere um gancho no código do ambiente final e o tabularx não gosta disso.
Com a versão de desenvolvimento do latex, que você pode usar chamando- pdflatex-dev
o de funciona, seu código de gancho é mais robusto.
Alternativamente, você pode tentar o argumento b do 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}