使用 svn-multi 和 booktabs 时表格包装器中断

使用 svn-multi 和 booktabs 时表格包装器中断

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一切运行良好,带有booktabssvn-multi选项。

该命令是否有问题,或者这是/\myTable中的一个错误?booktabssvn-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 — 为什么?这非常相关。

相关内容