修改特殊规则以覆盖更少的列

修改特殊规则以覆盖更少的列

在 LaTeX 表中,有没有办法修改\specialrule以仅覆盖几列,还是我应该直接使用\cmidrule?谢谢

答案1

根据booktabs 手册(第 5 节第 6 页),如果您使用 longtable 排版表格,则可以修剪、toprulemidrulebottomrulespecialrule

如果您同时加载了 booktabs 和 longtable 包,现在就可以在 longtable 中使用 booktabs 规则命令,正如上面所述。还有一点值得注意:在 longtable 中,您可以使用可选的左和右修剪命令,这些命令通常只适用于 \cmidrules,以及 \toprule、\midrule 和 \bottomrule(如果必须,也可以使用 \specialrule)。破解了上一版本以实现 longtable 兼容性 6 的用户似乎喜欢将所有规则都修剪为 0.5 em。我认为您可以通过将 @{} 设为最后一列指定器来执行相同的操作。不过,在完成其余代码后,很容易添加可选参数的解析,所以我这样做了。(我没有完全允许在 longtable 之外进行可选修剪;这将是一项巨大的工作量。如果您必须有修剪规则,请将所有表都设为 longtable!)

如您所见,您可以更改括号内的数字。您可以使用或(l{<len>}r{<len>})计算长度dimexpr计算,但除非所有列的宽度都是固定的(或手动计算),否则您可能需要进行一些目测和试验才能找到正确的修剪因子。我添加了一些颜色作为奖励。

使用\cmidrule[wd](trim){a-b}是另一种选择,包括longtable和普通的tabular

长桌是一个稳定且高级的软件包。将所有表格排版为长表格是没有问题的。但是,请注意longtable不浮动,因此切勿将 放置longtable在表格环境中。因此,如果您需要浮动表格,请使用\cmidrule。但是,\toprule\specialrule都不\bottomrule能被修剪在tabular环境中。

在此处输入图片描述

\documentclass{article}
\usepackage{longtable, array, booktabs}
\usepackage[table]{xcolor}
\begin{document}
    \begin{longtable}{@{}lccccr@{}}

\toprule
head&head&head&head&head&head\\
\midrule
\endfirsthead
\toprule
head&head&head&head&head&head\\
\midrule
\endhead
\bottomrule
\endfoot
\bottomrule
\endlastfoot

abcd&efgh&abcd&efgh&abcd&efgh\\
\midrule
abcd&efgh&abcd&efgh&abcd&efgh\\
\arrayrulecolor{red}
\specialrule{3pt}{2pt}{2pt}(l{3em}r{4em})
\arrayrulecolor{black}
abcd&efgh&abcd&efgh&abcd&efgh\\
\midrule
abcd&efgh&abcd&efgh&abcd&efgh\\
\arrayrulecolor{green!50!black}
\cmidrule[3pt](l{\tabcolsep}r{\tabcolsep}){2-5}
\arrayrulecolor{black}
abcd&efgh&abcd&efgh&abcd&efgh\\
\end{longtable}
\end{document}

相关内容