我想知道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 不高兴。谁赢了?;-)