请考虑以下示例:
\documentclass{article}
\usepackage{booktabs,dcolumn}
\usepackage{siunitx}
\newcolumntype{d}[1]{D{.}{,}{#1}}
\newcommand*\mc[1]{\multicolumn{1}{c}{#1}}
\begin{document}
\begin{table}[htbp]
\centering
\caption{Something.}
\label{tbl:1}
\begin{tabular}{d{2.1} d{2.0} d{3.0} d{2.0} d{3.0}}
\toprule
\mc{S{\o}vnm{\ae}ngde} &
\multicolumn{2}{c}{Eleverne fra $9$.~A} &
\multicolumn{2}{c}{Eleverne fra $9$.~B} \\
\midrule
& \mc{Abs.} & \mc{Rel.} & \mc{Abs.} & \mc{Rel.} \\
\mc{\si{\hour}} & \mc{---} & \mc{\si{\percent}} & \mc{---} & \mc{\si{\percent}} \\
\midrule
6.5 & 1 & 4 & 0 & 0 \\
7.0 & 4 & 16 & 2 & 10 \\
7.5 & 3 & 12 & 3 & 15 \\
8.0 & 8 & 32 & 9 & 45 \\
8.5 & 5 & 20 & 3 & 15 \\
9.0 & 2 & 8 & 3 & 15 \\
9.5 & 1 & 4 & 0 & 0 \\
10.0 & 1 & 4 & 0 & 0 \\
\midrule
\mc{I alt} & 25 & 100 & 20 & 100 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
为什么第二列和第三列相对于“Eleverne fra 9. A”没有水平居中,而第四列和第五列相对于“Eleverne fra 9. B”没有水平居中?(它们需要稍微向右推。)
更新
我希望第二列和第三列的宽度为包含“Eleverne fra 9. A”的框宽度的一半,第四列和第五列的宽度为包含“Eleverne fra 9. B”的框宽度的一半。
更新 2
我现在有以下内容:
\documentclass{article}
\usepackage{booktabs,dcolumn}
\usepackage{siunitx}
\newcommand*\mc[1]{\multicolumn{2}{c}{Eleverne fra $9$.~#1}}
\begin{document}
\begin{table}
\def\spc{\hspace{0.8em}}
\centering
\caption{Something.}
\label{tbl:1}
\begin{tabular}{
S[table-format = 2.1]
>{\spc}S[table-format = 2]
S[table-format = 3]
>{\spc}S[table-format = 2]
S[table-format = 3]
}
\toprule
{S{\o}vnm{\ae}ngde} & \mc{A} & \mc{B} \\
\midrule
\si{\hour} & {Abs.} & {Rel.} & {Abs.} & {Rel.} \\
\midrule
6.5 & 1\spc & 4 & 0\spc & 0 \\
7 & 4\spc & 16 & 2\spc & 10 \\
7.5 & 3\spc & 12 & 3\spc & 15 \\
8 & 8\spc & 32 & 9\spc & 45 \\
8.5 & 5\spc & 20 & 3\spc & 15 \\
9 & 2\spc & 8 & 3\spc & 15 \\
9.5 & 1\spc & 4 & 0\spc & 0 \\
10 & 1\spc & 4 & 0\spc & 0 \\
\midrule
& 25\spc & 100 & 20\spc & 100 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
我的问题是我收到了很多警告;
Overfull \hbox (8.00003pt too wide) detected at line XXX
我怎样才能摆脱这些?
答案1
所有列(包括标题)均完美水平居中。
只需在列之间绘制垂直规则(使用|
,即{|d{2.1}|d{2.0}|d{3.0}|d{2.0}|d{3.0}|}
作为列定义)即可了解发生了什么: