当某些单元格包含图像或图片(如 tikz 图片)时,如何避免 tabularray 单元格中的垂直对齐被破坏?

当某些单元格包含图像或图片(如 tikz 图片)时,如何避免 tabularray 单元格中的垂直对齐被破坏?

在下表中,我在第一个单元格中包含了文本,在第二个单元格中包含了 tikz 图像(一个正方形)。虽然我已将第一个单元格配置为垂直居中对齐,但实际上并非如此。如果我没有在第二个单元格中包含 tikz 图片,或者我只有文本,那么第一个单元格将完全居中对齐。请注意,tikz 图像要小得多,可以舒适地放入更大的单元格中。还请注意,第二个单元格的内容都没有正确垂直对齐。在 tabularray 表中包含 tikz 图片或仅包含图像是否存在问题?是否存在不兼容性,或者是否存在设置或命令,最好但不一定,在 tabularray 包内修复它?我试过了\raisebox命令但有时有效,有时无效。

MWE: 带有 tikz 图片

\documentclass[12pt]{article}  
\usepackage{calc}  
\usepackage[a4paper, total={180mm,257mm},left=15mm,top=20mm]{geometry}  
\usepackage{tabularray}  
\usepackage{tikz}  
\begin{document}  
    \begin{tblr}{colspec={Q[5cm,c]X[c]},rows={4cm,m},vlines,hlines}  
        This is a $2\times2$ square & \tikz\draw (0,0) rectangle (2,2); \\  
    \end{tblr}  
\end{document}  

输出1:

在此处输入图片描述

MWE:没有 tikz 图片

\documentclass[12pt]{article}  
\usepackage{calc}  
\usepackage[a4paper, total={180mm,257mm},left=15mm,top=20mm]{geometry}  
\usepackage{tabularray}  
\usepackage{tikz}  
\begin{document}  
    \begin{tblr}{colspec={Q[5cm,c]X[c]},rows={4cm,m},vlines,hlines}  
        This is a $2\times2$ square & just text in place of tikz square \\  
    \end{tblr}  
\end{document}  

输出2:

在此处输入图片描述

答案1

每当第二列中的某一行具有不寻常的高度时就会发生这种情况,并且tikzpicture通常符合条件,请参见下面的第一个例子。

您可以将基线移至图片中心(第二个示例),或者稍微少移一点,使用https://tex.stackexchange.com/a/618057/4427(第三个例子)。

\documentclass{article}

\usepackage{tabularray}
\usepackage{tikz}

\AtBeginDocument{\sbox0{$x$}}% to be sure the math fonts are computed
\tikzset{baseshift/.style={yshift=-\the\dimexpr\fontdimen22\textfont2}}

\begin{document}

\begin{center}
\begin{tblr}{colspec={Q[5cm,c]X[c]},rows={4cm,m},vlines,hlines}
This is a $2\times2$ square &
\rule{1pt}{50pt}just text in place of tikz square: see?
\end{tblr}
\end{center}

\begin{center}
\begin{tblr}{colspec={Q[5cm,c]X[c]},rows={4cm,m},vlines,hlines}
This is a $2\times2$ square &
\begin{tikzpicture}[baseline=(current bounding box.center)]
  \draw (0,0) rectangle (2,2);
\end{tikzpicture}
\end{tblr}
\end{center}

\begin{center}
\begin{tblr}{colspec={Q[5cm,c]X[c]},rows={4cm,m},vlines,hlines}
This is a $2\times2$ square &
\begin{tikzpicture}[baseline={([baseshift]current bounding box.center)}]
  \draw (0,0) rectangle (2,2);
\end{tikzpicture}
\end{tblr}
\end{center}

\end{document}  

在此处输入图片描述

相关内容