我使用tabularray
创建表格,因为它应该很容易配置单元格的对齐方式。特别是,我想使用垂直对齐方式将文本居中放置在特定单元格中。它适用于多行单元格(例如\SetCell[r=2]{m}
),但不适用于r=1
。示例:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularray}
\usepackage{lipsum}
\begin{document}
\begin{table}[]
\footnotesize
\centering
\caption{Test table}
\begin{tblr}{X[1,l]X[2,l]}
\hline
& \SetCell[]{c}A\\
\hline
\SetCell[r=2]{m} XX & \lipsum[1-1] \\
& \lipsum[2-2] \\
\hline
\SetCell[r=1]{m} YY & \lipsum[3-3]\\
\hline
\end{tblr}
\label{tab:test}
\end{table}
\end{document}
生成
因此,很明显“XX”是集中的(跨两行),但“YY”不是(在一行中)。省略r=1
不会改变任何东西(它是默认值)。如何使用 tabularray 垂直集中单行、单列的“YY”文本?
答案1
LaTeX 表格/tblr 单元格中的垂直对齐并不像人们想象的那样。“m”的作用是将单元格内容的中间与基线该行。默认值为“t”(或不带 tabularray 的“p”),将内容的顶线与基线对齐,而“b”将底线与该行的基线对齐。
这里发生的情况是,在最下面一行,第一个单元格是“m”,但是第二细胞是“t”,所以你要对齐中间“YY” 与顶部右侧单元格中的段落。希望这能解释为什么您会得到不想要的结果。
在这种情况下,解决方案是在右侧单元格, 以便它是middle 位于基线,“YY”与它的中间对齐。(如果只有一行,则左侧单元格的设置并不重要。)
\begin{document}
\begin{table}[]
\footnotesize
\centering
\caption{Test table}
\begin{tblr}{X[1,l]X[2,l]}
\hline
& \SetCell[]{c}A\\
\hline
\SetCell[r=2]{m} XX & \lipsum[1-1] \\
& \lipsum[2-2] \\
\hline
\SetCell[r=1]{m} YY & \SetCell[r=1]{m}\lipsum[3-3]\\
\hline
\end{tblr}
\label{tab:test}
\end{table}
\end{document}
或者在 colspec 中执行此操作可能会更容易:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularray}
\usepackage{lipsum}
\begin{document}
\begin{table}[]
\footnotesize
\centering
\caption{Test table}
\begin{tblr}{X[1,l,m]X[2,l,m]}
\hline
& \SetCell[]{c}A\\
\hline
\SetCell[r=2]{m} XX & \lipsum[1-1] \\
& \lipsum[2-2] \\
\hline
YY & \lipsum[3-3]\\
\hline
\end{tblr}
\label{tab:test}
\end{table}
\end{document}
由于垂直对齐的工作方式有些奇怪,有时需要采取更激烈的措施:参见这里。但在这个特定案例中,我认为这已经足够了。
答案2
让我将我的评论扩展为一个答案:除了将第一列的内容设置为垂直居中之外,您还需要设置其他列的垂直位置。此时不需要垂直居中,它们也可以移动到顶部(选项)。这是该包相对于其他包h
的优势:tabularray
\documentclass{article}
\usepackage{tabularray}
\usepackage{lipsum}
\begin{document}
\begin{table}[ht]
\footnotesize
\centering
\caption{Test table}
\label{tab:test}
\begin{tblr}{X[l,m]X[2,l,h]}
\hline
& \SetCell{c} A\\
\hline
\SetCell[r=2]{m} XX & \lipsum[1] \\
& \lipsum[2] \\
\hline
YY & \lipsum[3]\\
\hline
\end{tblr}
\end{table}
\end{document}