忽略嵌套表格之间的行间距

忽略嵌套表格之间的行间距

在这样的tabular环境中,\\[<间距>]并不总是在包含自身的行之间插入所要求的间距tabular。例如,下面的示例中的两条水平线不应该对齐。命令\\[<间距>]似乎仅当请求的间距大于第二行的高度时才有效。

我找到了两个解决方案:

  1. 插入一个空白行,即替换\\[5pt]\\[-12pt]&\\[5pt](对于两列),其中12pt是的值\baselineskip
  2. 用包的\\[5pt]命令替换。\addlinespace[5pt]booktabs

在他对类似问题的评论中提到表格 p{...} 行之间的垂直跳跃大卫·卡莱尔似乎对此不太乐观,但仍然, 是否可以重新定义,\\以便它自动在tabulars中做正确的事情,无需加载额外的软件包?即使没有解决方案,也值得提出这个问题,以防其他用户遇到同样的问题……

例子:

\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} 

在此处输入图片描述

相关内容