booktabs 规则命令如何处理空参数?

booktabs 规则命令如何处理空参数?

我想知道booktabs规则命令如何处理空参数。

举例来说,下面的例子不能通过编译(使用LuaLatex):

\begin{tabular}{l}
  \toprule{}
  \multicolumn{1}{c}{foobar}\\
  \bottomrule{}
\end{tabular}

出现以下错误:

! Misplaced \omit.
\multispan ->\omit 
                   \@multispan 
l.9   \multicolumn{1}{c}{foobar}
                              \\

以下示例编译时没有任何错误:

\begin{tabular}{l}
  \toprule% <----- No braces here
  \multicolumn{1}{c}{foobar}\\
  \bottomrule{}
\end{tabular}

编辑:

马德里理工学院:

\documentclass{article}
\usepackage{booktabs}

\begin{document}
\begin{tabular}{l}
    \toprule{}
    \multicolumn{1}{c}{foobar}\\ 
    \bottomrule{}
\end{tabular}
\end{document}

感谢你的回答。


无用的细节:

这是我花时间做的唯一一个 MWE,但在其他情况下也会出现错误,有时是 doubled midrule。作为开发人员,我喜欢明确说明参数是什么,即使它没有,因此标准booktabs构造(没有括号)并不让我满意。

答案1

我不确定你为什么要扩展 LaTeX 的语法。

没有参数的宏不是想要{}在它后面。在无参数宏之后,这是一个空组(和不可扩展的标记列表),这在以下情况下非常有用

\LaTeX{} is great

但将是一场灾难

$a \sim{} -b$

之后也是一场灾难\toprule\midrule甚至\bottomrule因为它会产生额外的表格行。请看以下示例。

\documentclass{article}
\usepackage{booktabs}

\begin{document}

\fbox{\begin{tabular}{l}\toprule a\\\bottomrule\end{tabular}}
\fbox{\begin{tabular}{l}\toprule{} a\\\bottomrule{}\end{tabular}}

\end{document}

在此处输入图片描述

所以也许这不会让你高兴,但添加{}会让 TeX 不高兴。谁赢了?;-)

相关内容