我试图将此表的第一列垂直居中。由于我使用的是多行,因此第一列的文本应位于矩阵“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
最简单、最通用的解决方案是将文本叠加在两个\tikzmark
s 中间。如果您确实想要方程式之间的所有空间,只需将其替换\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}