
正常にコンパイルされた次のようなドキュメントがあります。
\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 出力では、表に 2 つ\bottomorule
の があり、最初の 1 つは表に合わせて配置され、2 つ目は左に移動されています。
これをどうすれば解決できますか?
アップデート:エラーはイタリア語で babel が使用されている場合にのみ発生し、私が試した他の言語はすべて正常に動作します。
答え1
問題はetoolbox
italian によってロードされるものです。これはエンド環境コードにフックを挿入しますが、tabularx はこれを好みません。
it works を呼び出して使用できる latex の開発バージョンでは、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}