booktabs
我在使用 和自定义表格包装器时遇到了一个奇怪的问题svn-multi
。下面的 MWE 说明了这个问题。
如果满足以下条件,包装器myTable
可以正常工作:
- 未
booktabs
使用 (评论\bottomrule
) - 或者 svn-multi 选项
table,subgroups,groups
未激活
但如果同时使用两者,就会出现错误:
Misplaced \noalign.
\bottomrule ->\noalign
{\ifnum 0=`}\fi \@aboverulesep =\aboverulesep \global...
\myTable{\input{tabletest.tex}}{4}{c}
更令人困惑的是,如果您只是将\myTable
包装器中的所有信息都包含到文档中,并手动包含表格内容(而不是通过\input
)一切运行良好,带有booktabs
和svn-multi
选项。
该命令是否有问题,或者这是/\myTable
中的一个错误?booktabs
svn-multi
\documentclass{article}
\usepackage{booktabs}
\usepackage[%
table,subgroups,groups% Either one this together with booktabs breaks my custom-table command
]{svn-multi}
\begin{filecontents}{tabletest.tex}
label 1 & label 2 & label 3 & label 4 \\
item 1 & item 2 & item 3 & item 4 \\
\end{filecontents}
\DeclareRobustCommand{\myTable}[3]{%
\begin{tabular}{l*{#2}{#3}}
#1%
\bottomrule%
\end{tabular}}%
\begin{document}
%This breaks if something from booktabs is included together with either one of the svn-multi options "table", "subgroups" or "groups"
\myTable{\input{tabletest.tex}}{4}{c}
%This compiles fine although the content is identical to the one above.
\begin{tabular*}{\textwidth}{@{\hskip\tabcolsep\extracolsep\fill}l*{4}{c}}%
label 1 & label 2 & label 3 & label 4 \\
item 1 & item 2 & item 3 & item 4 \\
\bottomrule%
\end{tabular*}%
\end{document}
答案1
此处的问题\input
在于tabular
(或类似的)。svn-multi
在每个文件的开头和结尾处执行一些代码,这些代码在此处的第一个单元格中执行tabular
。错误是由于\bottomrule
不直接跟在后面而导致的,即不在单元格的开头,因为使用包选项\\
在此处插入了一些不可扩展的代码。svn-multi
您可以使用不同形式的 来避免这种情况\input
,即使用\input tabletest.tex
(请注意尾随空格;.tex
是可选的)而不是\input{tabletest}
。这将使用 的纯 TeX 版本\input
并绕过svn-multi
代码。
也可以看看在表格内执行 \input 时无法使用 \toprule — 为什么?这非常相关。