如果单元格以括号开头,booktabs 和 ltablex 的组合将失败

如果单元格以括号开头,booktabs 和 ltablex 的组合将失败

我的文档包含多个表格,其中一个表格跨越多页。以下这个问题,我尝试使用ltablex包来实现这一点。但是,如果我使用该包代替 ,我的文档将无法再编译tabularx

我能够隔离问题。如果下一个单元格以括号开头,则在包提供的环境booktabs中使用标尺似乎存在问题。这是一个说明这一点的最小工作示例:tabularxltablex

\documentclass{article}

\usepackage{blindtext}
\usepackage{ltablex}
\usepackage{booktabs}

\begin{document}

    \begin{table}[tbp]
        \begin{tabularx}{\linewidth}{Xr}
            \toprule
            Label       & Estimate \\
            \midrule
            % What follows seems to be the offending line. If I remove 
            % the brackets around `Intercept`, the file is compiled 
            % without an error.
            (Intercept) & 10.0 \\
            \bottomrule
        \end{tabularx}
    \end{table}

    % this is a very big table that spans several pages, which is 
    % why I want to use the `ltablex` package:
    \begin{tabularx}{\linewidth}{Xr}
        \toprule
        Statement  & Number \\
        \midrule
        \blindtext & 1 \\
        \blindtext & 2 \\
        \blindtext & 3 \\
        \blindtext & 4 \\
        \blindtext & 5 \\
        \bottomrule
    \end{tabularx}

\end{document}

编译此程序会产生七个错误,其中大多数是Undefined control sequence \end{tabularx}第 19 行中的错误,即\end{tabularx}第一个环境末尾的命令tabularx。这是第一个错误的输出(如果需要,我可以发布整个错误日志):

! Undefined control sequence.
<argument> ...al \expandafter \let \cmrsideswitch 
                                                \@tempa \fi \fi 
l.19             \end{tabularx}

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

我找到了一些使错误消失的方法,但代价是文档不包含我想要的内容:

  • (Intercept)删除第 17 行周围的括号
  • 删除\midrule第 13 行的命令
  • 使用tabularx而不是ltablex

因此,我有两个问题。

  1. 这是某个软件包中的错误,还是我的文档中的错误?
  2. 我怎样才能修复这个问题而不牺牲\midrule、括号或多页表?

相关内容