在小数中使用千位分隔符和逗号以及格式问题

在小数中使用千位分隔符和逗号以及格式问题

我真的是一个 LaTex 新手,希望得到一些帮助来格式化下表:

\documentclass[12pt]{article}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{times}
\usepackage{dcolumn}
\usepackage[vmargin=3cm, hmargin=2.5cm]{geometry}
\usepackage[group-separator={.}]{siunitx}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\usepackage[group-separator={,}]{siunitx}
\begin{document}




\begin{table}[ht]
\centering\setlength\extrarowheight{2pt}
\caption{Estat\'{i}sticas - Contribui\c{c}\~{o}es} 
\begin{tabular}{@{\extracolsep{4pt}}ll*{6}{d{5.2}}}
  \toprule
  {} & {}  & \multicolumn{3}{c}{Mediana}  & \multicolumn{3}{c}{Desvio Padr\~{a}o}\\
  \cmidrule(lr){3-5} 
  \cmidrule(lr){6-8} 
Ano & Vari\'{a}vel & {Controle} & {Tratado} & {Total} & {Controle} & {Tratado} & {Total} \\ 
  \midrule
2012 & Total de receitas & 3413.90 & 8645.19 & 3967.80 & 18077.13 & 94897.57 & 45339.62 \\ 
   & \hspace{4mm}Pessoas f\'{i}sicas & 300.00 & 2500.00 & 570.00 & 6201.29 & 20180.83 & 10763.53 \\ 
   & \hspace{4mm} Empresas & 0.00 & 1000.00 & 0.00 & 0.00 & 27854.24 & 12448.01 \\ 
   & \hspace{4mm} Partidos & 0.00 & 0.00 & 0.00 & 7193.99 & 54075.33 & 24547.63 \\ 
   & \hspace{4mm} Recursos pr\'{o}prios & 1550.00 & 1850.00 & 1598.00 & 5694.75 & 12012.86 & 7382.93 \\ 
   & \hspace{4mm} Outros recursos & 91.88 & 230.00 & 103.13 & 8456.98 & 21893.65 & 12259.07 \\ \\
   & Pessoas f\'{i}sicas (\%) & 12.10 & 30.20 & 16.90 & 31.06 & 28.57 & 30.73 \\ 
   & Empresas (\%) & 0.00 & 14.20 & 0.00 & 0.00 & 24.69 & 14.21 \\ 
   & Partidos (\%) & 0.00 & 0.00 & 0.00 & 9.78 & 9.50 & 9.73 \\ 
   & Recursos pr\'{o}prios (\%) & 57.90 & 22.70 & 49.90 & 36.33 & 28.93 & 36.31 \\ 
   & Outros recursos (\%) & 2.90 & 2.50 & 2.80 & 27.84 & 16.73 & 26.23 \\
   \midrule
  2016 & Total de receitas & 3600.00 & 7106.27 & 4009.00 & 11740.78 & 52605.28 & 25877.30 \\ 
   & \hspace{4mm} Pessoas f\'{i}sicas & 800.00 & 2344.70 & 1000.00 & 6136.54 & 27232.84 & 13392.53 \\ 
   & \hspace{4mm} Empresas & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 \\ 
   & \hspace{4mm} Partidos & 0.00 & 0.00 & 0.00 & 4343.52 & 28402.71 & 13027.55 \\ 
   & \hspace{4mm} Recursos pr\'{o}prios & 1695.00 & 3000.00 & 1857.72 & 6576.61 & 20169.18 & 10796.12 \\ 
   & \hspace{4mm} Outros recursos & 37.50 & 88.00 & 44.80 & 1544.50 & 6476.34 & 3160.15 \\ \\
   & Pessoas f\'{i}sicas (\%) & 26.70 & 37.30 & 28.90 & 31.18 & 31.46 & 31.35 \\ 
   & Empresas (\%) & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 \\ 
   & Partidos (\%) & 0.00 & 0.00 & 0.00 & 13.50 & 13.18 & 13.44 \\ 
   & Recursos pr\'{o}prios (\%) & 56.00 & 48.80 & 54.60 & 33.71 & 32.59 & 33.54 \\ 
   & Outros recursos (\%) & 0.70 & 0.80 & 0.80 & 20.21 & 16.07 & 19.51 \\
   \bottomrule

\end{tabular}
\end{table}

\end{document}

我不知道为什么,但在使用该dcolumn软件包后,一些列名称显示为斜体,并且未与各自的值对齐。这是为什么?如何修复?

我怎样才能在表格中显示带有千位分隔符和小数点逗号的数字?例如1.000.000,00

还有一件事:表格无法很好地适应 PDF 页面,因为表格的边距不符合文档要求。我该如何将其居中并使其适合?最终文档将包含许多其他表格,我不太明白使用选项的优缺点是什么floating

非常感谢您的帮助!欢迎提出任何其他意见/建议!

谢谢你!

答案1

为了使表格材料适合文本块,您应该 (a) 删除指令@{\extracolsep{4pt}},(b) 使用tabular*环境而不是环境,以及 (c)在启动环境之前tabular发出指令并在定义标题内使用该指令。这样,您将强制 LaTeX 计算列间空白的最佳值。\setlength\tabcolsep{0pt}tabular*@{\extracolsep{\fill}}tabular*

为了将这些建议付诸实践,我建议您使用以下设置:

\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} 
     ll *{3}{S[table-format=4.2]} *{3}{S[table-format=5.2]} }

关于数字的格式:不要同时加载dcolumnsiunitx。由于您希望 LaTeX 自动插入千位分隔符,我建议您专注于siunitx包及其S列类型。

完整的 MWE——请注意该times包已被弃用;我建议您加载newtxtextnewtxmath包:

在此处输入图片描述

\documentclass[12pt]{article}
\usepackage{booktabs}
\usepackage[skip=0.333\baselineskip]{caption} % <-- new
\usepackage{newtxtext,newtxmath} % <-- new
\usepackage[vmargin=3cm, hmargin=2.5cm]{geometry}
\usepackage[group-separator={.},
            group-four-digits,
            output-decimal-marker={,}]{siunitx}
\begin{document}
\begin{table}[ht]
\setlength\tabcolsep{0pt} % <-- new
\setlength\extrarowheight{2pt}
\caption{Estat\'{i}sticas -- Contribui\c{c}\~{o}es}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}         % <-- new
   ll *{3}{S[table-format=4.2]} *{3}{S[table-format=5.2]} } % <-- new
  \toprule
  & & \multicolumn{3}{c}{Mediana} & \multicolumn{3}{c}{Desvio Padr\~{a}o}\\
  \cmidrule{3-5} \cmidrule{6-8}
Ano & Vari\'{a}vel & {Controle} & {Tratado} & {Total} & {Controle} & {Tratado} & {Total} \\
  \midrule
2012 & Total de receitas & 3413.90 & 8645.19 & 3967.80 & 18077.13 & 94897.57 & 45339.62 \\
   & \hspace{4mm}Pessoas f\'{i}sicas & 300.00 & 2500.00 & 570.00 & 6201.29 & 20180.83 & 10763.53 \\
   & \hspace{4mm}Empresas & 0.00 & 1000.00 & 0.00 & 0.00 & 27854.24 & 12448.01 \\
   & \hspace{4mm}Partidos & 0.00 & 0.00 & 0.00 & 7193.99 & 54075.33 & 24547.63 \\
   & \hspace{4mm}Recursos pr\'{o}prios & 1550.00 & 1850.00 & 1598.00 & 5694.75 & 12012.86 & 7382.93 \\
   & \hspace{4mm}Outros recursos & 91.88 & 230.00 & 103.13 & 8456.98 & 21893.65 & 12259.07 \\ 
   \addlinespace
   & Pessoas f\'{i}sicas (\%) & 12.10 & 30.20 & 16.90 & 31.06 & 28.57 & 30.73 \\
   & Empresas (\%) & 0.00 & 14.20 & 0.00 & 0.00 & 24.69 & 14.21 \\
   & Partidos (\%) & 0.00 & 0.00 & 0.00 & 9.78 & 9.50 & 9.73 \\
   & Recursos pr\'{o}prios (\%) & 57.90 & 22.70 & 49.90 & 36.33 & 28.93 & 36.31 \\
   & Outros recursos (\%) & 2.90 & 2.50 & 2.80 & 27.84 & 16.73 & 26.23 \\
   \midrule
  2016 & Total de receitas & 3600.00 & 7106.27 & 4009.00 & 11740.78 & 52605.28 & 25877.30 \\
   & \hspace{4mm}Pessoas f\'{i}sicas & 800.00 & 2344.70 & 1000.00 & 6136.54 & 27232.84 & 13392.53 \\
   & \hspace{4mm}Empresas & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 \\
   & \hspace{4mm}Partidos & 0.00 & 0.00 & 0.00 & 4343.52 & 28402.71 & 13027.55 \\
   & \hspace{4mm}Recursos pr\'{o}prios & 1695.00 & 3000.00 & 1857.72 & 6576.61 & 20169.18 & 10796.12 \\
   & \hspace{4mm}Outros recursos & 37.50 & 88.00 & 44.80 & 1544.50 & 6476.34 & 3160.15 \\ 
   \addlinespace
   & Pessoas f\'{i}sicas (\%) & 26.70 & 37.30 & 28.90 & 31.18 & 31.46 & 31.35 \\
   & Empresas (\%) & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 \\
   & Partidos (\%) & 0.00 & 0.00 & 0.00 & 13.50 & 13.18 & 13.44 \\
   & Recursos pr\'{o}prios (\%) & 56.00 & 48.80 & 54.60 & 33.71 & 32.59 & 33.54 \\
   & Outros recursos (\%) & 0.70 & 0.80 & 0.80 & 20.21 & 16.07 & 19.51 \\
   \bottomrule
\end{tabular*} % <-- new
\end{table}

\end{document} 

答案2

让我详细说明一下艾伦·芒恩评论:

  • 你喜欢的很简单,用S列类型就可以实现siunitx
  • 定义\sisetup{...}分组数字的最小数量
  • 加载就足够siunitx

因此,请查看您的 MWE 的以下更改是否能得到您想要的结果:

\documentclass[12pt]{article}
\usepackage[vmargin=3cm, hmargin=2.5cm]{geometry}
\usepackage{times}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage{caption}

\begin{document}
    \begin{table}[ht]
% \small
    \centering
    \setlength\extrarowheight{2pt}
\sisetup{table-format = 5.2,group-separator={.},
         group-separator={.},
         output-decimal-marker={,},
         group-four-digits}
\caption{Estat\'{i}sticas - Contribui\c{c}\~{o}es}
\begin{tabular}{ll*{6}{S}}
  \toprule
...
   \bottomrule
\end{tabular}
    \end{table}
\end{document}

在此处输入图片描述

笔记: 即使我删除,您的表格也太宽了,不适合文本宽度extracolsep

相关内容