问题标题有点拗口
我有下表:
我并不完全相信这是显示这些信息的绝对最佳方式,但我正在重现一个布局像这样的表格,并进行了一些小改进,例如删除难看的垂直线。不过,我愿意听取有关如何改进外观的建议。
无论如何,我的问题是如何获得“列车编组“垂直居中。
你可以看到问题在于它跨越了两行,即允许速度行和下面的行。但下面的行是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}