当使用多行来连接一些单元格时,*所有*单元格的垂直对齐

当使用多行来连接一些单元格时,*所有*单元格的垂直对齐

我正在尝试为单元格包含图像或文本的表格实现良好的垂直对齐,但我对adjustbox与的交互感到困惑multirow

MWE 如下,其中使用\adjustbox{valign=c}{\imma}而不是\imma可以与文本非多行单元格实现良好对齐。如果没有它,则\multirow{2}*{\imma} gets good alignment with the various\imma`,但文本单元格将底部对齐。

由于该表主要包含图形和简短文本,所以问题基本上是如何使所有单元格垂直居中?(最好不要影响通过、、、... 列类型的水平r对齐。)lc

\documentclass{article}
\usepackage{booktabs}
\usepackage{adjustbox}
\usepackage{multirow}
\begin{document}
\newcommand{\imma}{\includegraphics[height=1cm,width=3cm]{example-image-a}}
\begin{tabular}{@{}lcllc@{}}
    \toprule
    \multirow{2}*{0} & c2f & \multirow{2}*{\imma} & \imma &  \multirow{2}*{\imma} \\
    \cmidrule(lr){2-2}
    \cmidrule{4-4}
                     & f2c & & \imma &   \\
    \midrule
    \multirow{2}*{1} & c2f &  \imma & \imma &  \multirow{2}*{\imma} \\
    \cmidrule(l){2-4}
                     & f2c &  \imma & \imma &   \\
    \midrule
    \multirow{2}*{2} & c2c &  \adjustbox{valign=c}{\imma} &  &  \adjustbox{valign=c}{\multirow{2}*{\imma}} \\
    \cmidrule(l){2-3}
                     & f2f &  \adjustbox{valign=c}{\imma} &  &   \\
    \bottomrule
\end{tabular}
\end{document}

产生 在此处输入图片描述

答案1

这里有一个需要理解的基本概念:当你希望将内容垂直居中对齐时,你需要调整点。作为一个具体的例子,考虑垂直对齐这两个元素:

在此处输入图片描述

x \includegraphics[height=1cm,width=3cm]{example-image}

上面的两个项目都与基线对齐(垂直)。直观地讲,人们会希望设置垂直对齐,以便x它位于图像的垂直中心,例如

\adjustbox{valign=c}{x} \includegraphics[height=1cm,width=3cm]{example-image}

然而,这并没有产生预期的结果。相反,你应该将图像的锚点调整到其中心(感谢\usepackage[export]{adjustbox}):

在此处输入图片描述

x \includegraphics[height=1cm,width=3cm,valign=c]{example-image}

事实上,最好使用

\adjustbox{valign=c}{x} \includegraphics[height=1cm,width=3cm,valign=c]{example-image}

(但这并非总是必要的,并且可能取决于两个元素)。

考虑到这一点,这里有一个稍微不同的方法来构建相同的表格,而无需multirow

在此处输入图片描述

\documentclass{article}

\usepackage{booktabs}
\usepackage[export]{adjustbox}

\begin{document}

\newcommand{\img}{\includegraphics[height=1cm,width=3cm,valign=c]{example-image}}

\begin{tabular}{ @{} l *{4}{@{} c } @{} }
  \toprule
  \adjustbox{valign=c}{0~} & \begin{tabular}{ c }
    \vphantom{\img}c2f \\
    \midrule
    \vphantom{\img}f2c
  \end{tabular} & \img & \begin{tabular}{ c }
    \img \\
    \midrule
    \img
  \end{tabular} & ~\img \\
  \midrule
  \adjustbox{valign=c}{1~} & \multicolumn{3}{@{} c @{}}{\begin{tabular}{ *{3}{c} }
    c2f & \img & \img \\
    \midrule
    f2c & \img & \img
  \end{tabular}} & ~\img \\
  \midrule
  \adjustbox{valign=c}{2~} & \multicolumn{2}{@{} c @{}}{\begin{tabular}{ *{2}{c} }
    c2f & \img \\
    \midrule
    f2c & \img
  \end{tabular}} & & ~\img \\
  \bottomrule
\end{tabular}

\end{document}

相关内容