MWE 如下(不是极小的):
\documentclass{article}
\usepackage{array, multirow, float, bigstrut}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\renewcommand\arraystretch{1.5}
\begin{document}
\begin{table}
\centering
\begin{tabular}{@{}m{3cm} M{3.5cm} M{3.5cm} M{3.5cm}@{}}
\hline \hline
& Team A & Team B & Team C \\ \hline
A & \multirow{3}[10]{=}{\centering Text} & Text & Text \\ \cline{3-4}
B & & \multirow{2}[8]{=}{\centering Text Text Text Text Text Text Text Text} & Text \\ \cline{4-4}
C & & & Text Text Text Text Text Text Text Text \\ \hline
\end{tabular}
\end{table}
\end{document}
结果如下:
由于文字换行,第三行高度比较高,想让第一行和第二行的高度和第三行一样,找了很多方法,尝试了很多方法,下面这个是最满意的方案,但还是没有宣传的那么好。
...
\usepackage{stackengine}
\newcommand\xrowht[2][0]{\addstackgap[.5\dimexpr#2\relax]{\vphantom{#1}}}
...
\begin{table}
\centering
\begin{tabular}{@{}m{3cm} M{3.5cm} M{3.5cm} M{3.5cm}@{}}
\hline \hline
& Team A & Team B & Team C \\ \hline\xrowht{20pt}
A & \multirow{3}[10]{=}{\centering Text} & Text & Text \\ \cline{3-4}\xrowht{20pt}
B & & \multirow{2}[8]{=}{\centering Text Text Text Text Text Text Text Text} & Text \\ \cline{4-4}
C & & & Text Text Text Text Text Text Text Text \\ \hline
\end{tabular}
\end{table}
这基本上是\xrowht{}
在行尾添加\hline
添加的。解决方案提供商史蒂文·B·塞格莱特斯声称该\xrowht{2xpt}
命令xpt
在 上方和 下方添加了 的高度\vphantom
。但是,当我尝试使用 等其他长度时40pt
,它实际上只会在 下方添加额外的高度。
顺便说一句,我也尝试了其他解决方案,例如在每行末尾添加一个空列,但这不再起作用,以及其他解决方案,即仅增加文本上方的高度或仅增加文本下方的高度。
有人能帮我解决这个问题吗?
答案1
粗略的破解 - 您可能想尝试一下 strut 的定义 - 这是许多可用选项中的一个
\documentclass{article}
\usepackage{array, multirow, float, bigstrut}
\renewcommand\arraystretch{1.5}
% define "struts" as suggested by Claudio Beccari in
% a piece in TeX and TUG News, Vol. 2, 1993.
\newcommand\T{\rule{0pt}{24ex}} % = `top' strut
\newcommand\B{\rule[-18ex]{0pt}{0pt}} % = `bottom' strut
\newcommand\TB{\T\B} % top-and-bottom strut
\begin{document}
\begin{table}
\centering
\begin{tabular}{@{}m{3cm} m{3.5cm} m{3.5cm} m{3.5cm}@{}}
\hline \hline
& Team A & Team B & Team C \\ \hline
A & \T\T \multirow{3}[50]{*}{Text} & Text & Text \\ \cline{3-4}
B & & \T\multirow{2}[8]{=}{Text Text Text Text Text Text Text Text} & Text
\\ \cline{4-4}
C & & & \T Text Text Text Text Text Text Text Text\\ \hline
\end{tabular}
\end{table}
\end{document}
答案2
使用新的 LaTeX3 包可以轻松设置行高,并获得多行单元格的完美中间对齐tabularray
:
\documentclass{article}
\usepackage{tabularray}
\NewColumnType{M}[1]{Q[m,c,#1]}
\begin{document}
\begin{table}
\centering
\begin{tblr}{colspec={@{}m{0.5cm}M{3.5cm}M{3.5cm}M{3.5cm}@{}},row{2-4}={7ex}}
\hline \hline
& Team A & Team B & Team C \\
\hline
A & \SetCell[r=3]{c} Text & Text & Text \\
\cline{3-4}
B & & \SetCell[r=2]{c} Text Text Text Text Text Text Text Text & Text \\
\cline{4-4}
C & & & Text Text Text Text Text Text Text Text \\
\hline
\end{tblr}
\end{table}
\end{document}
答案3
\documentclass{article}
\usepackage{array, multirow, float, bigstrut}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\renewcommand\arraystretch{1.5}
\begin{document}
\begin{table}
\centering
\begin{tabular}{@{}m{3cm} M{3.5cm} M{3.5cm} M{3.5cm}@{}}
\hline \hline
& Team A & Team B & Team C \\ \hline
\multirow{3}{*}{A}
& \multirow{9}[10]{=}{\centering Text}
& \multirow{3}{*}{Text}
& \multirow{3}{*}{Text} \\
&&&\\
&&&\\
\cline{3-4}
\multirow{3}{*}{B}
& & \multirow{6}[8]{=}{\centering Text Text Text Text Text Text Text Text}
& \multirow{3}{*}{Text} \\
&&&\\
&&&\\
\cline{4-4}
\multirow{3}{*}{C}
& & & \multirow{3}{=}{Text Text Text Text Text Text Text Text} \\
&&&\\
&&&\\
\hline
\end{tabular}
\end{table}
\end{document}