为什么 \makecell 的垂直对齐选项会影响另一个单元格而不是其自身?

为什么 \makecell 的垂直对齐选项会影响另一个单元格而不是其自身?

当给定垂直对齐选项(例如或)时,我对\makecell(来自包)的行为感到困惑。似乎指定的选项不会影响出现该选项的单元格的垂直对齐;相反,它会影响makecell[t][b]邻近的单元格。这似乎违反直觉(并且不同于\makecell的水平对齐选项,该选项确实会影响该单元格,并且只影响该单元格)。

tabular为了说明,请参见下面使用环境和的三列表格\makecell,其中第一列行号只是为了方便参考(在讨论“左”列和“右”列时我忽略了该列)。

\documentclass{article}
\usepackage{makecell}
\begin{document}
\begin{tabular}{|c|c|c|}
\hline
1 & \makecell{Multilined \\ text using \\ \textbackslash{}makecell} & 28--31\\
\hline
2 & \makecell[b]{Bottom-aligned \\ text using \\ \textbackslash{}makecell[b]} & 52--58\\
\hline
3 & \makecell{Short line using \\ \textbackslash{}makecell} & \makecell[t]{Multilined \\ text using \\ \textbackslash{}makecell[t]} \\
\hline
4 & \makecell{Short line using \\ \textbackslash{}makecell} & \makecell[t]{Multilined \\ text using \\ \textbackslash{}makecell[t]} \\
\hline
5 & \makecell[b]{Short line using \\ \textbackslash{}makecell[b]} & \makecell{Multilined \\ text using \\ \textbackslash{}makecell} \\
\hline
\end{tabular}
\end{document}

编译后的 LaTeX 代码的图像

在第 2 行中,\makecell[b]左列单元格中的 具有底部对齐的效果正确的-该行的列单元格。

在第 3 行中,\makecell[t]右列单元格中的左边-该行的列单元格。

更糟糕的是,在第 5 行中,\makecell[b]左列单元格对该单元格的垂直对齐没有影响,而是看起来是顶部对齐的。(我不明白为什么它是顶部对齐的,因为右列单元格没有指定的垂直对齐选项。)

所以我的问题是是:

  1. 我是否正确地解释了这些例子,即\makecell垂直对齐选项 (a) 不会影响单元格本身,而是 (b) 影响其他单元格?

  2. 如果是这样,这是正确的行为吗?

  3. 如果是,为什么?也就是说,我该如何理解这一点?为什么它与非常直观的水平对齐选项行为不同?

  4. 在示例中,我如何使用 将第 5 行左侧单元格底部对齐\makecell,因为指定[b]似乎不起作用?

我发现沃纳的回答到 ”\makecell align 不起作用?”,他解释道:

您对垂直的对齐规范不正确。使用[t]操作对齐只会设置t将该特定单元格的点对齐到单元格内容的第一行的基线。类似地,[b]底部对齐设置指向底线b/最后一行的基线。这并不意味着单元格内容将被向下/向上推以与周围单元格对齐。…

  1. 您正在指定一个点,实际上并不是相对于其他单元格的垂直对齐。
  2. 锚点与\makecell所讨论的单元格相关,而不是与同一行内的其他单元格相关。
  3. 您只能指定每个单元的锚点。

对我来说,这显然是重要且关键的见解,但我并不完全理解。特别是:

  1. 到底是什么锚点?它在表格单元格的格式化中起什么作用?
  2. \makecell这如何解释为什么水平相邻单元格的垂直对齐方式被另一个单元格中的垂直对齐选项所推动?

答案1

该行为并不特定于 makecell,您会看到与 tabular 相同的行为,或者如果您使用bm而不是p列,您会看到相同的行为。

在此处输入图片描述

TeX 将每个框对齐成一行,以便框的参考点位于(红色)基线上,该选项仅移动该单元格中框的参考点,从而影响该单元格的哪一部分位于红线上。

相关内容