在表格中使用方程式时多行单元格的垂直居中

在表格中使用方程式时多行单元格的垂直居中

我试图将此表的第一列垂直居中。由于我使用的是多行,因此第一列的文本应位于矩阵“A”和“B”之间。

如果我用任意文本替换第二列中的方程式,第一列的垂直居中就会起作用。所以我猜这与方程式的存在有关。

在此处输入图片描述

\documentclass[a4paper,12pt]{report}  

\usepackage{amsmath} 
\usepackage{booktabs} 
\usepackage{array} 
\usepackage{multirow} 

\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document}

\begin{table}[htbp]
    \centering
    \caption{Models}
    \begin{tabular}{C{1.5cm}C{6cm}}
        \toprule

        Model & Matrix \\ 
        \midrule
        \multirow{2}[0]{*}{Model 1}    & ${\vbox{   \begin{equation}
                A=\begin{bmatrix}
                1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1
                \end{bmatrix}
                \end{equation}} }$\\
        & ${\vbox{      \begin{equation}
                B=\begin{bmatrix}
                1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1
                \end{bmatrix}
                \end{equation} } }$\\
        \multirow{2}[0]{*}{Model 2}    & ${\vbox{       \begin{equation}
                A=\begin{bmatrix}
                1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1
                \end{bmatrix}
                \end{equation} } }$\\
        & ${\vbox{      \begin{equation}
                B=\begin{bmatrix}
                1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1
                \end{bmatrix}
                \end{equation} } }$\\
        \bottomrule
    \end{tabular}%
    \label{tab:addlabel}%
\end{table}%

\end{document}

答案1

最简单、最通用的解决方案是将文本叠加在两个\tikzmarks 中间。如果您确实想要方程式之间的所有空间,只需将其替换\mathbox为 即可\vbox

\documentclass[a4paper,12pt]{report}  

\usepackage{amsmath} 
\usepackage{booktabs} 
\usepackage{array} 
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}

\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}

\newcommand{\mathbox}[1]{\bgroup
  \abovedisplayskip=0pt
  \belowdisplayskip=0pt
  \mbox{\vbox{#1}}%
\egroup}

\begin{document}

\begin{table}[htbp]
    \centering
    \caption{Models}
    \begin{tabular}{C{1.5cm}C{6cm}}
        \toprule
        Model & Matrix \\ 
        \midrule
        \tikzmark{row1} &\mathbox{\begin{equation}
                A=\begin{bmatrix}
                1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1
                \end{bmatrix}
                \end{equation}}\\
        \tikzmark{row2} &\mathbox{\begin{equation}
                B=\begin{bmatrix}
                1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1
                \end{bmatrix}
                \end{equation}}\\
        \bottomrule
    \end{tabular}\tikz[remember picture,overlay]{\path (pic cs:row1)--(pic cs:row2)
        node[midway, text width=1.5cm, anchor=base]{Model 1};}%

    \label{tab:addlabel}%
\end{table}%

\end{document}

演示

相关内容