如何使跨多行的单元格垂直居中(p 列类型)

如何使跨多行的单元格垂直居中(p 列类型)

问题标题有点拗口

我有下表:

在此处输入图片描述

我并不完全相信这是显示这些信息的绝对最佳方式,但我正在重现一个布局像这样的表格,并进行了一些小改进,例如删除难看的垂直线。不过,我愿意听取有关如何改进外观的建议。

无论如何,我的问题是如何获得“列车编组“垂直居中。

你可以看到问题在于它跨越了两行,即允许速度行和下面的行。但下面的行是p包含三行的类型行,而不是三行。

我使用以下方法制作了上述图像:

\multirow{4}{*}{\textbf{Train formation}}

但我不太确定这是否考虑到实际上没有四行,只有两行。只是第二行有三行长。我还设置了\renewcommand{\arraystretch}{1.25}

同样,我也不确定如何垂直对齐两个 10 英里/小时(15 公里/小时)的条目。如您所见,我利用了这样一个事实:我恰好有三行,每行两行长。但如果其中一行只有一行长,我该如何垂直居中第二列和第三列?

\documentclass[12pt]{article}
\pagestyle{plain}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}

\usepackage[detect-weight=true]{siunitx}
\DeclareSIUnit{\mph}{mph}

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

\renewcommand{\arraystretch}{1.25}
\setlength{\tabcolsep}{0.8em}

\begin{document}

\begin{center}
  \begin{tabular}{@{}>{\raggedright\arraybackslash}p{0.4\textwidth}
      >{\centering\arraybackslash}p{0.15\textwidth}
      >{\centering\arraybackslash}p{0.15\textwidth}@{}}
    \toprule
    \multicolumn{1}{@{}c}{\multirow{4}{*}{\textbf{Train formation}}} &
    \multicolumn{2}{c@{}}{\textbf{Permissible speed}} \\ \cmidrule{2-3}
    & \textbf{\SI{10}{\mph} (\SI{15}{\kilo\metre\per\hour}) or above} &
    \textbf{\SI{10}{\mph} (\SI{15}{\kilo\metre\per\hour}) or less} \\ \midrule
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do \\
     eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad &
    \SI{10}{\mph} (\SI{15}{\kilo\metre\per\hour}) &
    \SI{10}{\mph} (\SI{15}{\kilo\metre\per\hour}) \\
    minim veniam, quis nostrud exercitation ullamco laboris nisi ut \\
    \bottomrule
  \end{tabular}
\end{center}

\end{document}

答案1

布局略有改进(从我的角度来看),使用十进制数表示“行”数(正如您所注意到的,实际上是行),并使用m{...}说明符代替。我还使用缩写和宽度参数p{...}简化了代码。\km{=}\multirow

\documentclass[12pt]{article}
\pagestyle{plain}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}

\usepackage[detect-weight=true]{siunitx}
\DeclareSIUnit{\mph}{mph}

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

\renewcommand{\arraystretch}{1.25}
\setlength{\tabcolsep}{0.8em}

\begin{document}

\begin{center}
  \begin{tabular}{@{}>{\raggedright\arraybackslash}m{0.4\textwidth}
      >{\centering\arraybackslash}m{0.15\textwidth}
      >{\centering\arraybackslash}m{0.15\textwidth}@{}}
    \toprule
   \multirow{4.5}{=}{\centering\textbf{Train formation}}
   &
    \multicolumn{2}{c@{}}{\textbf{Permissible speed}} \\ \cmidrule{2-3}
  & \textbf{\SI{10}{\mph} (\SI{15}{\km\per\hour}) or above} &
    \textbf{\SI{10}{\mph} (\SI{15}{\km\per\hour}) or less} \\ \midrule
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do \\
     eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad &
    \SI{10}{\mph} (\SI{15}{\km\per\hour}) &
    \SI{10}{\mph} (\SI{15}{\km\per\hour}) \\
    minim veniam, quis nostrud exercitation ullamco laboris nisi ut \\
    \bottomrule
  \end{tabular}
\end{center}

\end{document} 

在此处输入图片描述

答案2

因为我们知道列的宽度,所以我们可以将一个表格放在另一个表格内,并使列对齐。

\documentclass[12pt]{article}
\pagestyle{plain}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}

\usepackage[detect-weight=true]{siunitx}
\DeclareSIUnit{\mph}{mph}

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

\renewcommand{\arraystretch}{1.25}
\setlength{\tabcolsep}{0.8em}

\begin{document}

\begin{center}
  \begin{tabular}{@{}>{\raggedright\arraybackslash}p{0.4\textwidth}
      >{\centering\arraybackslash}p{0.15\textwidth}
      >{\centering\arraybackslash}p{0.15\textwidth}@{}}
    \toprule
    \centering\textbf{Train formation} &
    \multicolumn{2}{c@{}}{\begin{tabular}{@{}>{\centering\arraybackslash}p{0.15\textwidth}
      >{\centering\arraybackslash}p{0.15\textwidth}@{}}
      \multicolumn{2}{c@{}}{\textbf{Permissible speed}} \\ \midrule
      \textbf{\SI{10}{\mph} (\SI{15}{\kilo\metre\per\hour}) or above} &
      \textbf{\SI{10}{\mph} (\SI{15}{\kilo\metre\per\hour}) or less}
    \end{tabular}} \\ \midrule
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do \\
     eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad &
    \SI{10}{\mph} (\SI{15}{\kilo\metre\per\hour}) &
    \SI{10}{\mph} (\SI{15}{\kilo\metre\per\hour}) \\
    minim veniam, quis nostrud exercitation ullamco laboris nisi ut \\
    \bottomrule
  \end{tabular}
\end{center}

\end{document}

演示

相关内容