表格单元格中的文本垂直对齐不正确?

表格单元格中的文本垂直对齐不正确?

我正在我的 LaTeX 文档中创建一个包含时间的表格;它的编码如下:

\documentclass[12pt]{article}

\usepackage{array}

\begin{document}

\begin{tabular}{|b{0.2\linewidth}||
                 b{0.1\linewidth}|b{0.1\linewidth}||
                 b{0.1\linewidth}|b{0.1\linewidth}||
                 b{0.1\linewidth}|b{0.1\linewidth}|}
\hline \multicolumn{7}{|c|}{Main Heading} \\
\hline &\multicolumn{2}{c||}{Sub 1} &\multicolumn{2}{c||}{Sub2} &\multicolumn{2}{c|}{Sub 3}\\
\hline \textbf{Column 1} & \textbf{Start} &\textbf{End} & \textbf{Start} & \textbf{End} & \textbf{Start} & \textbf{End}\\
\hline xx                & 12:34.5          &xx:xx.x             &xx:xx.x               &xx:xx.x           &xx:xx.x       &xx:xx.x \\
\hline xx                & xx:xx.x          &xx:xx.x             &xx:xx.x               &xx:xx.x           &xx:xx.x       &xx:xx.x \\
\hline xx                & xx:xx.x          &xx:xx.x             &xx:xx.x               &xx:xx.x           &xx:xx.x       &xx:xx.x \\
\hline xx                & xx:xx.x          &xx:xx.x             &xx:xx.x               &xx:xx.x           &xx:xx.x       &xx:xx.x \\
\hline
\end{tabular}
\end{document}

在表格定义中,我使用了带有array选项的包,该b{[column width]}选项可以将单元格的文本与单元格的底部垂直对齐。但是,当我编译时,结果如下表:

在此处输入图片描述

这显然没有按我想要的方式对齐:虽然xx:xx.x单元格乍一看似乎是正确的,但只要插入任何数字/任何其他文本(在所有其他单元格中可见),就会看到对齐到单元格的顶部。

如果有人能解释这个问题的原因和/或提出解决方案/指出我正确的方向,我将不胜感激;表格构成了我正在制作的文档的很大一部分,到目前为止我已经付出了很大的努力。


我自己能想到的唯一(极其笨拙和不切实际的)解决方案(以我极其有限的知识)是定义一个宏,将其参数降低给定量;然而,这不仅要求我将其单独应用于每个单元格,而且还要求我在告诉 LaTeX 将内容降低多少时猜测单元格的高度。为了完整起见,宏是(我不认为它会对我的问题的最佳解决方案特别有用):

\renewcommand{\l}[2]{\lower #1pt \hbox{#2}}

编辑:我已经看到了问题这里这里这里,以及许多其他问题,但发现没有一个对解决我的问题有帮助(我想这是因为每个表都非常不同,并且这些问题给出的解决方案是具体的,而不是一般的,因此很难应用)。

答案1

我看不出对齐有什么问题,因为单元格中只有一行文本,与单元格的基线b相同且对齐。p

如果你的问题是文本太靠近 \hline 使用

\setlength\extrarowheight{2pt} 

或任何你喜欢的填充。

答案2

您可能对当前上下文中的(“底部对齐”)含义感到困惑b。由于所有单元格都只包含一行,因此bm(“中间”)和(“顶部对齐”)实际上都相同。只有当各个单元格的行数不同时,、和之间的差异才会变得明显。(回想一下,和p都启用自动换行。)pmbpmb

您可能不想用那些垂直和水平线来分散读者的注意力,而是想让表格看起来更“开放”、更吸引人,可能如下图所示:

在此处输入图片描述

\documentclass[12pt]{article}
\usepackage{tabularx,booktabs}
\newcolumntype{Y}{>{\hsize=1.750\hsize}X}
\newcolumntype{Z}{>{\hsize=0.875\hsize\centering\arraybackslash}X}

\begin{document}
\noindent
\begin{tabularx}{\textwidth}{@{}Y*{6}{Z}@{}}
\multicolumn{7}{c}{Main Heading} \\
\midrule[\heavyrulewidth]
Column 1
&\multicolumn{2}{c}{Sub 1}   
&\multicolumn{2}{c}{Sub 2}           
&\multicolumn{2}{c@{}}{Sub 3}\\
\cmidrule(lr){2-3} \cmidrule(lr){4-5} \cmidrule(l){6-7} 
& Start & End & Start & End & Start & End \\
\midrule
 xx     & 12:34.5 &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x \\
 xx     & xx      &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x \\
 xx     & xx      &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x \\
 xx     & xx      &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x \\
\bottomrule
\end{tabularx}
\end{document}

相关内容