
Tengo un documento como este, que se compila normalmente:
\documentclass{article}
\usepackage{booktabs}
\usepackage{tabularx}
\newenvironment{myenv}
{\tabularx{\columnwidth}{X}\toprule}
{\bottomrule\endtabularx}
\begin{document}
\begin{myenv}
Foo\\
\end{myenv}
\end{document}
También lo necesito \usepackage[italian]{babel}
, pero si lo hago y luego compilo, aparece el siguiente error:
! Misplaced \noalign.
\bottomrule ->\noalign
{\ifnum 0=`}\fi \@aboverulesep =\aboverulesep \global...
l.16 \end{myenv}
y en la salida PDF la tabla tiene dos \bottomorule
s, la primera alineada con la tabla y la segunda movida hacia la izquierda:
¿Como puedo resolver esto?
Actualizar:el error ocurre sólo si babel se usa en italiano, todos los demás idiomas que probé funcionan bien.
Respuesta1
El problema es etoolbox
cuál lo carga el italiano. Inserta un gancho en el código del entorno final y a tabularx no le gusta esto.
Con la versión de desarrollo de latex, que puedes usar llamándolo pdflatex-dev
funciona, su código de enlace es más robusto.
Alternativamente, puedes probar el argumento b de 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}