在这样的tabular
环境中,\\[
<间距>]
并不总是在包含自身的行之间插入所要求的间距tabular
。例如,下面的示例中的两条水平线不应该对齐。命令\\[
<间距>]
似乎仅当请求的间距大于第二行的高度时才有效。
我找到了两个解决方案:
- 插入一个空白行,即替换
\\[5pt]
为\\[-12pt]&\\[5pt]
(对于两列),其中12pt
是的值\baselineskip
; - 用包的
\\[5pt]
命令替换。\addlinespace[5pt]
booktabs
在他对类似问题的评论中提到表格 p{...} 行之间的垂直跳跃大卫·卡莱尔似乎对此不太乐观,但仍然,
是否可以重新定义,\\
以便它自动在tabular
s中做正确的事情,无需加载额外的软件包?即使没有解决方案,也值得提出这个问题,以防其他用户遇到同样的问题……
例子:
\documentclass{article}
\begin{document}
\begin{tabular}[t]{ll}
a &
\begin{tabular}[t]{@{}l}
b \\ c
\end{tabular}
\\
\hline
d & e
\end{tabular}
\begin{tabular}[t]{ll}
a &
\begin{tabular}[t]{@{}l}
b \\ c
\end{tabular}
\\[5pt]
\hline
d & e
\end{tabular}
\end{document}
答案1
你可以使用或多或少的自动化方法,但需要一些额外的软件包。比较一下这些(与cellspace
可确保以字母 为前缀的列中的垂直填充最小,使用 和的S
结果,这会在规则周围引入一些填充,可以通过更改和的值进行自定义 :\\[5pt]
booktabs
\midrule
\aboverulesep
\belowrulesep
\documentclass{article}
\usepackage{array, cellspace, booktabs}
\setlength\cellspacebottomlimit{5pt}
\begin{document}
\mbox{}\hphantom{\texttt{With booktabs}: \quad } \begin{tabular}[t]{lSl}
\multicolumn{2}{>{\ttfamily}c}{with cellspace} \\
a &
\begin{tabular}[t]{@{}l}
b \\ c
\end{tabular}
\\
\hline
d & e
\end{tabular}
\quad
\begin{tabular}[t]{ll}
\multicolumn{2}{>{\ttfamily}c}{with [5pt]} \\
a &
\begin{tabular}[t]{@{}l}
b \\ c
\end{tabular}
\\[5pt]
\hline
d & e
\end{tabular}
\vskip1cm
\texttt{With booktabs}: \quad \begin{tabular}[t]{ll}
\multicolumn{2}{>{\ttfamily}c}{default belowrulesep} \\
a &
\begin{tabular}[t]{@{}l}
b \\ c
\end{tabular}
\\
\midrule
d & e
\end{tabular}
\quad
{ \setlength\aboverulesep{5pt}
\begin{tabular}[t]{ll}
\multicolumn{2}{>{\ttfamily}c}{custom belowrulesep} \\
a &
\begin{tabular}[t]{@{}l}
b \\ c
\end{tabular}
\\
\midrule
d & e
\end{tabular}}
\end{document}