当 r=1 时垂直对齐 tabularray 不起作用

当 r=1 时垂直对齐 tabularray 不起作用

我使用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}

tblr 示例

由于垂直对齐的工作方式有些奇怪,有时需要采取更激烈的措施:参见这里。但在这个特定案例中,我认为这已经足够了。

答案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}

相关内容