我基本上在所有论文中都使用该booktabs
软件包来展示包含结果或描述性统计数据的表格。但是,我需要在表格中显示示意图选择,为此我需要一个带有连续垂直线的适当网格。booktabs
仅允许垂直线之间有空格且线条不相交。此功能会自动为所有表格启用。
我宁愿不tikz
为此而写一些东西,我有表格,没有它看起来也不错booktabs
,但是论文中其余的表格看起来很糟糕。
booktabs
所以我的问题本质上是我如何在特定环境中关闭tabular
?
为了说明这个问题
答案1
垂直线的间隙是由包中的特殊规则命令\toprule
、引起的。如果您不使用它们,则不会有间隙,例如:\midrule
\bottomrule
booktabs
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{l|l}
\toprule
with & booktabs \\
\bottomrule
\end{tabular}
\bigskip
\begin{tabular}{|l|l|l|}
\hline
without & booktabs' & rules \\
\hline
\end{tabular}
\bigskip
\begin{tabular}{l|l|l}
\toprule
again & with & booktabs \\
\bottomrule
\end{tabular}
\end{document}
答案2
正如前面提到的,没有必要用booktabs
。您可以\hline
按原样使用常规 s。如果您希望混合booktabs
's和垂直规则,你需要更多的勇气。
这booktabs
文档提及(在第4 滥用新命令,第4-5页):
不过,在一次罕见的宽容中,我也发出了命令
\specialrule{<wd>}{<abovespace>}{<belowspace>}
其中所有三个参数都是必需的(我懒得用默认值编程)。如果您经常使用这个,那么您就误解了上面给出的指导方针的目的和内容。前置规则不会在其下方添加默认空间,而后置规则不会在其上方添加空间,因此您获得的正是参数中指定的空间。
事实上,\toprule
可以\bottomrule
使用来复制\specialrule
:
\newcommand{\bttoprule}{\specialrule{\heavyrulewidth}{\abovetopsep}{\belowrulesep}}
\newcommand{\btbottomrule}{\specialrule{\heavyrulewidth}{\aboverulesep}{\belowbottomsep}}
\abovetopsep
插入宽度为[ \aboverulesep
]的“水平规则”多于(实际上是垂直跳跃),宽度heavyrulewidth
规则中间\belowrulesep
以及宽度为[ \belowbottomsep
]的“水平规则”以下。要验证这一点,请考虑:
\documentclass{article}
\usepackage{booktabs}% http://ctan.org/pkg/booktabs
\newcommand{\bttoprule}{\specialrule{\heavyrulewidth}{\abovetopsep}{\belowrulesep}}
\newcommand{\btbottomrule}{\specialrule{\heavyrulewidth}{\aboverulesep}{\belowbottomsep}}
\begin{document}
\noindent
\begin{minipage}{0.5\linewidth}
\begin{tabular}{|l|l|l|}
\toprule
with & booktabs & rules \\
\bottomrule
\end{tabular}%
\end{minipage}%
\begin{minipage}{0.5\linewidth}
\begin{tabular}{|l|l|l|}
\bttoprule
with & updated & rules \\
\btbottomrule
\end{tabular}%
\end{minipage}%
\end{document}
考虑到这一点,我们可以删除在\bttoprule
[ \btbottomrule
] 下方 [上方] 插入的垂直跳过,并使用支柱(我们称之为\btstrut
)补充常规内容:
\documentclass{article}
\usepackage{booktabs}% http://ctan.org/pkg/booktabs
\newcommand{\btstrut}{\rule%
[\dimexpr-.3\normalbaselineskip-\aboverulesep]% depth
{0pt}% width
{\dimexpr\normalbaselineskip+\aboverulesep+\belowrulesep}}% height
\newcommand{\bttoprule}{\specialrule{\heavyrulewidth}{\abovetopsep}{0pt}}
\newcommand{\btbottomrule}{\specialrule{\heavyrulewidth}{0pt}{\belowbottomsep}}
\begin{document}
\noindent
\begin{minipage}{0.5\linewidth}
\begin{tabular}{|l|l|l|}
\toprule
with & booktabs & rules \\
\bottomrule
\end{tabular}%
\end{minipage}%
\begin{minipage}{0.5\linewidth}
\begin{tabular}{|l|l|l|}
\bttoprule
\btstrut with & updated & rules \\
\btbottomrule
\end{tabular}%
\end{minipage}%
\end{document}
booktabs
但是,这首先会成为一种避免使用 的冗长方法。此外,对于tabular
有\bttoprule
[ \btbottomrule
] 但没有\btbottomrule
[ \bttoprule
] 的内部行内容,需要使用不同的支柱。