所以我想制作一个表格,其中每个多列的标题代表一定的距离,子列代表与之相关的一些数值测量。
\begin{tabular}{cccc}
\centering %% <-- Move outside tabular
\hrule %% <-- It is either \toprule or \hline
\multicolumn{2}{c}{290cm} & \multicolumn{2}{c}{190cm}\\
n & m & n & m\\
\cmidrule(lr){1-2}
\cmidrule(l){3-4}
14 & 100 & 6 & 50 \\
2 & 17 & 5 & 45\\
4 & 30 & & \\
9 & 80 & & \\
\end{tabular}
问题是由于某种原因,“290cm”没有作为多列标题对齐,而只是作为第二个子列的标题对齐。哪里出了问题?
答案1
\centering
对我来说,如果将移出表格并更改\hrule
为,它似乎可以正确编译\toprule
。但是,如果使用四c
列,则第二列比另一列宽,第三列稍窄。因此,第二个标题(190cm)似乎稍微偏移一点,但我认为这只是视觉错觉。也许你应该考虑使用四个固定宽度的列,就像我在测试示例中所做的那样。
在测试示例中,我设置了具有固定宽度列的表格(wc{<wd>}
),以证明对齐方式正确。出于同样的原因,我添加了垂直线。它们用于说明目的,应删除:
示例 1 – 测试版本
\documentclass{article}
\usepackage{booktabs}
\usepackage{array}
\begin{document}
\centering
\begin{tabular}{*{4}{wc{1cm}|}}
\toprule
\multicolumn{2}{c}{290cm} & \multicolumn{2}{c}{190cm}\\
n & m & n & m\\
\cmidrule(lr){1-2}
\cmidrule(l){3-4}
14 & 100 & 6 & 50 \\
2 & 17 & 5 & 45\\
4 & 30 & & \\
9 & 80 & & \\
\end{tabular}
\end{document}
示例 2 – 最终版本 A
\documentclass{article}
\usepackage{booktabs}
\usepackage{array}
\begin{document}
\centering
%\begin{tabular}{*{4}{wc{1cm}|}}
\begin{tabular}{*{4}{c}}
\toprule
\multicolumn{2}{c}{290cm} & \multicolumn{2}{c}{190cm}\\
n & m & n & m\\
\cmidrule(r){1-2}
\cmidrule(l){3-4}
14 & 100 & 6 & 50 \\
2 & 17 & 5 & 45\\
4 & 30 & & \\
9 & 80 & & \\
\bottomrule
\end{tabular}
\end{document}
示例 3 – 最终版本 B
这是一个具有固定宽度列的版本。在获得Overfull hbox
es 之前,最小宽度为 15 pt:
\documentclass{article}
\usepackage{booktabs}
\usepackage{array, caption}
\begin{document}
\begin{table}
\caption{A table\label{tab:a-table}}
\centering
\begin{tabular}{*{4}{Wc{15pt}}}
\toprule
\multicolumn{2}{c}{290cm} & \multicolumn{2}{c}{190cm}\\
\multicolumn{1}{c}{n} & \multicolumn{1}{c}{m} & \multicolumn{1}{c}{n} & \multicolumn{1}{c}{m}\\
\cmidrule(r){1-2}
\cmidrule(l){3-4}
14 & 100 & 6 & 50 \\
2 & 17 & 5 & 45\\
4 & 30 & & \\
9 & 80 & & \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
也用于siunitx
更好地对齐图形。
\documentclass{article}
\usepackage{booktabs,siunitx}
\begin{document}
\begin{tabular}{
S[table-format=2.0]
S[table-format=3.0]
S[table-format=2.0]
S[table-format=2.0]
}
\toprule
\multicolumn{2}{c}{\SI{290}{cm}} &
\multicolumn{2}{c}{\SI{190}{cm}} \\
\cmidrule(lr){1-2} \cmidrule(lr){3-4}
{$n$} & {$m$} & {$n$} & {$m$} \\
\midrule
14 & 100 & 6 & 50 \\
2 & 17 & 5 & 45\\
4 & 30 & & \\
9 & 80 & & \\
\bottomrule
\end{tabular}
\end{document}