可以构造环境中的水平线。 、和使用 指定水平线tabular
之间有什么区别?\toprule
\midrule
\bottomrule
\hline
答案1
简短的回答。
\toprule
和\midrule
是\bottomrule
的改进版本;无论将其放置在表格的顶部、底部还是中间,\hline
标准行为(大致)相同。改进版本和更厚(事实上,也略厚),并且它们以更好的方式处理周围的垂直空间。正如 booktabs 的文档所述:\hline
\toprule
\bottomrule
\midrule
下面描述的例程是为了能够轻松制作应出现在已出版的科学书籍和期刊中的表格。这些表格与普通 LaTeX 表格的区别在于默认使用规则上方和下方的额外空间,以及不同“厚度”的规则。
答案并不那么简短。
用 生成的线条\hline
具有由 控制的默认宽度,由\arrayrulewidth
标准类设置为0.4pt
。如果要更改粗细,则需要为 设定不同的值\arrayrulewidth
。
另一方面,\toprule
和\bottomrule
具有由 控制的默认厚度,默认情况\heavyrulewidth
下设置为0.08em
; 的默认厚度\midrule
由长度 给出\lightrulewidth
,初始值为0.05em
。因此,默认情况下,\toprule
和\bottomrule
大约是用 绘制的线条的两倍\hline
,并且\midrule
比用 绘制的线条略粗\hline
。
此外,\toprule
和\midrule
有\bottomrule
一个可选参数
\toprule[<length>]
\bottomrule[<length>]
\middlerule[<length>]
允许轻松修改其厚度。
定义的线booktabs
还对其下方和上方的空间进行了特殊的管理;该空间由以下长度控制:
对于
\toprule
:上方的空间由 给出\abovetopsep
(0pt
默认设置为);下方的空间由 给出\belowrulesep
(默认0.65ex
)。对于
\bottomrule
:上方的空间由 给出\aboverulesep
(0.4ex
默认设置为),下方的空间由 给出\belowbottomsep
(默认0pt
)。对于
\midrule
,上方的空间由 控制\aboverulesep
,下方的空间由 给出\belowrulesep
。
长度参数\heavyrulewidth
、\lightrulewidth
和\cmidrulewidth
以 的分数指定em
,规则上方和下方的空格以 的分数指定,从ex
印刷上来说,这非常好,因为如果默认字体大小从 更改为10pt
或11pt
,规则宽度及其间距会自动增加12pt
。例如,\heavyrulewidth
对于.8pt
、.876pt
和.94pt
的默认字体大小, 分别为10pt
、11pt
和12pt
。这与 的主要区别在于,无论默认字体大小如何, 默认情况下都\hline
等于。0.4pt
该booktabs
软件包还提供了\cmidrule
标准 LaTeX 命令的改进版本,\cline
旨在绘制仅扩展到某些列的子规则。
标准命令的缺点之一\cline
是,它绘制的规则延伸到参数中指定的列的整个宽度,因此两个连续的规则\clines
将相互碰撞(除非,例如,对 采取额外的预防措施\extracolsep
)。为了轻松防止这种碰撞,改进的命令\cmidrule
提供了可选的修剪规范;这些规范放在括号中,之间没有空格分隔。可能的规范是r
、r{<length>}
和l
(l{<length>}
或这些的任意组合),其中r
和l
表示是否应修剪规则的右端和/或左端。没有明确参数的形式等同于r{\cmidrulekern}
和l{\cmidrulekern}
,其中
\cmidrulekern
默认为0.5em
。例如,
\cmidrule(lr{.75em}){1-3}
给出一条从第一列延伸到第三列的规则,默认左修剪0.5em
和0.75em
右修剪。
\cmidrule
还有一个可选参数来改变厚度;完整的语法是
\cmidrule[<length>](<trimming>){a–b}
的默认值为<length>
( \cmidrulewidth
) 0.03em
;最后一个参数给出要跨越的列号。
即使使用简单的表格,您也可以看到使用默认 LaTeX 获得的结果\hline
与借助以下规则生成的规则之间的差异booktabs
:
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\noindent\begin{tabular}{*{3}{c}}
\hline
Header1 & Header 2 & Header3 \\
\hline
Column1a & Column2a & Column3a \\
Column1b & Column2b & Column3b \\
Column1c & Column2c & Column3c \\
Column1d & Column2d & Column3d \\
\hline
\end{tabular}\quad
\begin{tabular}{*{3}{c}}
\toprule
Header1 & Header 2 & Header3 \\
\midrule
Column1a & Column2a & Column3a \\
Column1b & Column2b & Column3b \\
Column1c & Column2c & Column3c \\
Column1d & Column2d & Column3d \\
\bottomrule
\end{tabular}
\end{document}