如何使用多行和 m{} 列设置表格行高?

如何使用多行和 m{} 列设置表格行高?

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}

相关内容