表格水平居中

表格水平居中

请考虑以下示例:

\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}|}作为列定义)即可了解发生了什么:

在此处输入图片描述

相关内容