表格内数组的垂直对齐

表格内数组的垂直对齐

我想垂直对齐几个表格单元格,其中一个单元格包含array。考虑以下 MWE:

\documentclass{article}

\usepackage{graphicx}
\usepackage{array}

\begin{document}

\begin{tabular}{*{5}{m{0.2\textwidth}}}
    Some text &
    \includegraphics[width=15mm]{example-grid-100x100pt} &
    \(\left(\begin{array}{cc}
        1 & 0 \\
        0 & 1
    \end{array}\right)\) &
    \((1,0,1,0)\) &
    \rule{15mm}{15mm}
\end{tabular}

\end{document}

得出的结果是(我添加了绿色参考线):

实际产量

文本、图像、简单的内联数学和规则都正确垂直对齐,但被array向下推。相反,我期望的是以下内容:

预期输出

为什么数组没有垂直居中? 修复此问题最简单的方法是什么?

答案1

问题出在你的\rule(它的基线在哪里?)。如果你将它封装在某个框中,你可以为其定义基线,例如借助\valign来自的宏\adjustbox,对第二列中的图像执行相同的操作,那么列类型中所有表格元素的p基线都将垂直居中:

\documentclass{article}
\usepackage[export]{adjustbox} % also load graphicx package
\usepackage{array}

\begin{document}
\noindent%
\begin{tabular}{*{5}{>{\centering\arraybackslash}p{\dimexpr0.2\textwidth-2\tabcolsep}}} 
    Some text &
    \includegraphics[width=15mm,valign=c]{example-grid-100x100pt} &
    \(\left(\begin{array}{cc}
        1 & 0 \\
        0 & 1
    \end{array}\right)\) &  \((1,0,1,0)\) & \adjustbox{valign=c}{\rule{15mm}{15mm}}
    \end{tabular}
\end{document}

在此处输入图片描述

(红线表示文字边框)

如您所见,我还更改了表格可容纳文本区域的列宽。

相关内容