表格中的居中数字

表格中的居中数字

我想生成一个看起来大致(不一定)像的表格

在此处输入图片描述

如果你对这种数据表示有任何建议,请随时告诉我们。到目前为止,我想出了

\documentclass[12pt]{book}

\usepackage{booktabs}
\usepackage{caption}
\usepackage{siunitx}   


\begin{document}

\begin{table}[h!]
  \centering
  \captionsetup
  {
  singlelinecheck = off,
  justification   = raggedright,
  labelfont       = bf,
  }
  \begin{minipage}[b]{1.0\linewidth}    
    \caption{ABC}%
    \begin{tabular}{@{}l SSSSSSSSS }
      \toprule
      & \multicolumn{2}{l}{2010} & \multicolumn{2}{l}{2011} & \multicolumn{2}{l}{2012} & \multicolumn{2}{l}{2013} \\
      \cmidrule{2-9}
    Name    & {bil}~\$ & \% & {bil}~\$ & \% & {bil}~\$ & \%     & {bil}~\$ & \%   \\ 
    \midrule
    {Aaaaaaaaaaaa}  &  20 456 & 1.2 &    20150 & 90.5 & 20150 & 90.5 & 20150 & 90.5    \\
    {Bbbbbbb}       & 5 256 & 21.3  \\  
    {Ccccccc}       & 58 & 0.5 \\
    {Dddd}          & 125 000\\
    {Eeeeeeeeeee}   & \\
    {FFFFFF}        & \\
    {ggggggg}       & \\
    \bottomrule
    $\sum$      & \\
    \bottomrule
    \end{tabular}

    \medskip \noindent Reference: John Johnson
    \label{1111}
  \end{minipage}
\end{table}

\end{document}

不幸的是,这会导致两个问题:

  1. 它没有将数据条目居中,也没有将列名称“year”、“bil $”和“%”居中

  2. 表格太宽。我是否应该减小表格中的字体大小,或者有更好的办法吗?

编辑:另一个代码

\documentclass[12pt]{book}

\usepackage{booktabs}
\usepackage{caption}
\usepackage{siunitx}   


\begin{document}

\begin{tabular}{ccccccccccccccc}

\toprule
\multicolumn{1}{l}{} &
\multicolumn{2}{c}{2010}    &
\multicolumn{2}{c}{2011}    &
\multicolumn{2}{c}{2012}    &
\multicolumn{2}{c}{2013}    \\ 
\cmidrule(lr){2-3}
\cmidrule(lr){4-5}
\cmidrule(lr){6-7}
\cmidrule(lr){8-9}

 &
\multicolumn{1}{c}{bil~\$} &
\multicolumn{1}{c}{\%}     &
\multicolumn{1}{c}{bil~\$} &
\multicolumn{1}{c}{\%}     &
\multicolumn{1}{c}{bil~\$} &
\multicolumn{1}{c}{\%}     &
\multicolumn{1}{c}{bil~\$} &
\multicolumn{1}{c}{\%}      \\
\midrule



{Aaaaaaaaaaaa}  &  20 456 & 1.2  &  20 456 & 1.2 &  20 456 & 1.2 &  20 456 & 1.2   \\
    {Bbbbbbb}       & 5 256 & 21.3 & 5 256 & 21.3& 5 256 & 21.3& 5 256 & 21.3  \\  
    {Ccccccc}       & 58 & 0.5 & 58 & 0.5& 58 & 0.5& 58 & 0.5 \\
    {Dddd}          & 125 000 \\
    {Eeeeeeeeeee}   & \\
    {FFFFFF}        & \\
    {ggggggg}       & \\
\bottomrule
{$\sum$} \\
\bottomrule
\end{tabular}

\end{document}
enter code here

答案1

我不是这个领域的专家,但这里有一个解决方法。

  • 首先,为了避免表格宽度过大,你可以告诉siunitx那些列应该是什么。*{4}{…}只是为了避免写四次相同的内容。 和S[table-format = 5.0, group-minimum-digits = 3] S[table-format = 2.1]意味着第一列的数字在逗号前有 5 位数字,逗号后没有数字,第二列的数字在逗号前有两位数字,在逗号后有一位数字。group-minimum-digits = 3,正如 egreg 所建议的, 指示siunitx添加一个空间每三位数字后(即使数字只有 4 位数字)。
  • 要使单元格居中,您必须将它们括在里面{}(参见siunitx文档)。

这是代码。

\documentclass{scrbook}

\usepackage{booktabs}
\usepackage{caption}
\usepackage{siunitx}

\begin{document}
\begin{table}[h!]
    \centering
    \captionsetup{
        singlelinecheck = off,
        justification = raggedright,
        labelfont = bf,
    }
    \begin{minipage}[b]{1.0\linewidth}
        \caption{ABC}%
        \begin{tabular}{@{}l *{4}{S[table-format = 5.0, group-minimum-digits = 3] S[table-format = 2.1]} }
            \toprule
            & \multicolumn{2}{c}{2010} & \multicolumn{2}{c}{2011} & \multicolumn{2}{c}{2012} & \multicolumn{2}{c}{2013} \\
            \cmidrule(lr){2-3}\cmidrule(lr){4-5}\cmidrule(lr){6-7}\cmidrule(lr){8-9}
            Name & {bil \$} & {\%} & {bil \$} & {\%} & {bil \$} & {\%} & {bil \$} & {\%} \\ 
            \midrule
            Aaaaaaaaaaaa & 20 456 & 1.2 & 20150 & 90.5 & 20150 & 90.5 & 20150 & 90.5 \\
            Bbbbbbb & 5256 & 21.3 \\ 
            Ccccccc & 58 & 0.5 \\
            Dddd & 125 000\\
            Eeeeeeeeeee & \\
            FFFFFF & \\
            ggggggg & \\
            \bottomrule
            $\sum$ & \\
            \bottomrule
        \end{tabular}

        \medskip \noindent Reference: John Johnson
        \label{1111}
    \end{minipage}
\end{table}
\end{document}

在此处输入图片描述

相关内容