将多行居中

将多行居中

我无法使表格的多行垂直居中(它只能水平居中):

\def\arraystretch{1.5}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{table}[t]
    \caption{Caption.}
    \label{table:label}

    \begin{tabularx}{\columnwidth}{| Y | Y | X | X |}
        \hline
         & OA & Acc & Time [minutes] \\
        \hline 

        \multirow{2}{*}{\hfil A} & \multirow{2}{*}{100\%} & 100\% & x \\
        \cline{3-4}
         & & 100\% & y \\
        \hline

        \multirow{2}{*}{B} & & 100\% & 100\% \\
        \cline{3-3}
         & - & Urban areas: 100\% & \\
        \hline
    \end{tabularx}
\end{table}

答案1

对于 来说,重要的multirow不是它必须包含的行数,而是 的数量 n lines。对于段落模式中的单元格(如p,m, b或 ) ,这些值可能有所不同X。更改 的值\arraystretch也会使等效行的计算更加复杂。如果我没记错的话,从 2.0 版开始,多行 接受带有小数的行数,这使得微调内容的垂直位置更加容易。在这里,我应该取n=3,但n=2.8结果更好。

无关:我用更正确的尾字符替换了最后一个 \multirow 中的连字符(这里不相关)。我还加载了caption标题和表格之间的适当间距。

    \documentclass{article}
    \usepackage{ragged2e}
    \usepackage{multirow, tabularx, caption}
    \captionsetup{skip=6pt}
    \newcolumntype{Y}{>{\centering\arraybackslash}X}

    \begin{document}

    \def\arraystretch{1.5}
    \begin{table}[t]
    \caption{Caption.}
    \label{table:label}
    \begin{tabularx}{\columnwidth}{| Y | Y | *{2}{ >{\RaggedRight\arraybackslash}X |}}
        \hline
         & OA & Acc & Time [minutes] \\
        \hline
        \multirow{2}{*}{A} & \multirow{2}{*}{100\,\%} & 100\,\% & x \\
        \cline{3-4}
         & & 100\% & y \\
        \hline
        \multirow{2.8}{*}{ B} &\multirow{2.8}{*}{–} & 100\,\% & 100\,\% \\
        \cline{3-3}
         & & Urban areas: 100\,\% & \\
        \hline
    \end{tabularx}
    \end{table}

    \end{document} 

在此处输入图片描述

答案2

multirow当通过重新定义更改默认行距时,无法正确预测高度\arraystretch。在这种情况下,您需要multirow通过将选项传递[-6pt]multirow命令来手动调整单元格内容的垂直位置。

\renewcommand\arraystretch{1.5}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{table}[t]
    \caption{Caption.}
    \label{table:label}

    \begin{tabularx}{\columnwidth}{| Y | Y | X | X |}
        \hline
         & OA & Acc & Time [minutes] \\
        \hline 

        \multirow{2}{*}{A} & \multirow{2}{*}{100\%} & 100\% & x \\
        \cline{3-4}
         & & 100\% & y \\
        \hline

        \multirow{2}{*}[-6pt]{B} & & 100\% & 100\% \\ % ---> [-6pt]
        \cline{3-3}
         & - & Urban areas: 100\% & \\
        \hline
    \end{tabularx}
\end{table}

相关内容