![为什么 \makecell 的垂直对齐选项会影响另一个单元格而不是其自身?](https://linux22.com/image/378711/%E4%B8%BA%E4%BB%80%E4%B9%88%20%5Cmakecell%20%E7%9A%84%E5%9E%82%E7%9B%B4%E5%AF%B9%E9%BD%90%E9%80%89%E9%A1%B9%E4%BC%9A%E5%BD%B1%E5%93%8D%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%8D%95%E5%85%83%E6%A0%BC%E8%80%8C%E4%B8%8D%E6%98%AF%E5%85%B6%E8%87%AA%E8%BA%AB%EF%BC%9F.png)
当给定垂直对齐选项(例如或)时,我对\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}
在第 2 行中,\makecell[b]
左列单元格中的 具有底部对齐的效果正确的-该行的列单元格。
在第 3 行中,\makecell[t]
右列单元格中的左边-该行的列单元格。
更糟糕的是,在第 5 行中,\makecell[b]
左列单元格对该单元格的垂直对齐没有影响,而是看起来是顶部对齐的。(我不明白为什么它是顶部对齐的,因为右列单元格没有指定的垂直对齐选项。)
所以我的问题是是是:
我是否正确地解释了这些例子,即
\makecell
垂直对齐选项 (a) 不会影响单元格本身,而是 (b) 影响其他单元格?如果是这样,这是正确的行为吗?
如果是,为什么?也就是说,我该如何理解这一点?为什么它与非常直观的水平对齐选项行为不同?
在示例中,我如何使用 将第 5 行左侧单元格底部对齐
\makecell
,因为指定[b]
似乎不起作用?
我发现沃纳的回答到 ”\makecell align 不起作用?”,他解释道:
您对垂直的对齐规范不正确。使用
[t]
操作对齐只会设置锚t
将该特定单元格的点对齐到单元格内容的第一行的基线。类似地,[b]
底部对齐设置锚指向底线b
/最后一行的基线。这并不意味着单元格内容将被向下/向上推以与周围单元格对齐。…
- 您正在指定一个锚点,实际上并不是相对于其他单元格的垂直对齐。
- 锚点与
\makecell
所讨论的单元格相关,而不是与同一行内的其他单元格相关。- 您只能指定一每个单元的锚点。
对我来说,这显然是重要且关键的见解,但我并不完全理解。特别是:
- 到底是什么是锚点?它在表格单元格的格式化中起什么作用?
\makecell
这如何解释为什么水平相邻单元格的垂直对齐方式被另一个单元格中的垂直对齐选项所推动?