入门:我对 LaTeX 还很陌生。我正在table
使用以下代码创建一个。以下是表格的一部分:
\usepackage{tabularx, multirow, booktabs}
\begin{table}[tp]
\caption{Rain garden site characteristics}
\label{table:11}
\begin{tabular}{c r @{.} l c r @{.} l r @{.} l r @{.} l r @{.} l}
Site ID & Surface Area & Install Date & Roof Catchment Area & Total Cactchment Area & $A_garden$/$A_imper$ & $A_garden$/$A_total$ \\\otoprule
1 & 10&2 & 2007 & 49&7 & 49&7 & 20&6 & 20&6 \\\midrule
\end{tabular}
\end{table}
我无论如何也想不出为什么它会有问题\otoprule
。我在许多表格样式指南,无法弄清楚我遗漏了什么。我得到的错误代码是:
! Undefined control sequence.
<recently read> \otoprule
1.5 ... A_imp$ & $A_garden$/$A_total$ \\\otoprule
谢谢您的任何建议!
答案1
在引用的来源中\otoprule
定义如下:
\newcommand{\otoprule}{\midrule[\heavyrulewidth]}
因此您应该添加前面的行以获得所需的结果。
答案2
您缺少的必需定义在文档(第 10 页):
在本文中,表格标题下方的线的粗细始终等于
\toprule
和,\bottomrule
但相对于上下行垂直居中(这是线的典型特征\midrule
)。为了获得此结果,使用以下命令定义了一种新的线型\newcommand{\otoprule}{\midrule[\heavyrulewidth]}
\midrule
来自的定义booktabs
类似于:
\def\midrule{\noalign{\ifnum0=`}\fi
\@aboverulesep=\aboverulesep
\global\@belowrulesep=\belowrulesep
\global\@thisruleclass=\@ne
\@ifnextchar[{\@BTrule}{\@BTrule[\lightrulewidth]}}
此定义将即将到来的水平规则上方和下方的分隔设置为相等(\belowrulesep=.65ex
和aboverulesep=.4ex
)。它还允许可选地指定规则厚度。\midrule
单独默认为\@BTrule[\lightrulewidth]
,尽管您可以在可选参数中指定规则宽度;\otoprule
通过它的定义究竟是什么\midrule[\heavyrulewidth]
。\heavyrulewidth
是用于塑造\toprule
和的厚度的长度定义\bottomrule
,如文章中所述:
\def\toprule{\noalign{\ifnum0=`}\fi
\@aboverulesep=\abovetopsep
\global\@belowrulesep=\belowrulesep %global cos for use in the next noalign
\global\@thisruleclass=\@ne
\@ifnextchar[{\@BTrule}{\@BTrule[\heavyrulewidth]}}
\def\bottomrule{\noalign{\ifnum0=`}\fi
\@aboverulesep=\aboverulesep
\global\@belowrulesep=\belowbottomsep
\global\@thisruleclass=\@ne
\@ifnextchar[{\@BTrule}{\@BTrule[\heavyrulewidth]}}