您能否让表格自动格式化数字以显示千位分隔符?

您能否让表格自动格式化数字以显示千位分隔符?

我正在用乳胶准备财务报表,如果能够将数字输入表格中,它就会自动知道在输出中在哪里添加逗号,这将非常方便(请参阅 MWE 中的第一个表格,了解我希望如何输入数字,请参阅第二个表格,了解我希望如何输出示例)。我刚刚在下表中手动输入了年份结束日期,但您可以忽略它,因为我有一个命令可以输入它们,这样它们就不会在我正在处理的文件中以数字形式输入。此外,在示例中,负数用括号括起来,但这似乎与表格中的其他数字不一致。有什么办法可以改善这种情况吗?

\documentclass[12pt,a4paper]{article} 
\usepackage[utf8]{inputenc} 
\usepackage{booktabs} 

\begin{document}

\section*{Income \& Expenditure Account} 
\begin{table}[htb] 
\centering 
\begin{tabular}{p{8.25cm}crr}  
& \textbf{Note} & \textbf{2016} & \textbf{2015} \\ \hline\\ 
Income & 1 & 100000 & 102000 \\ \cline{3-4}\\ 
Cost of Sales & 2 & (50000) & (45000) \\ \cline{3-4} 
Gross Profit & & 50000 & 57000 \\
\end{tabular}
\end{table}

\begin{table}[htb] 
\centering 
\begin{tabular}{p{8.25cm}crr}
 & \textbf{Note} & \textbf{2016} & \textbf{2015} \\ \hline\\
Income & 1 & 100,000 & 102,000 \\ \cline{3-4}\\ 
Cost of Sales & 2 & (50,000) & (45,000) \\ \cline{3-4} 
Gross Profit & & 50,000 & 57,000 \\
\end{tabular}
\end{table}

\end{document}

答案1

使用包的版本siunitx

\documentclass[12pt,a4paper]{article} 
\usepackage[utf8]{inputenc} 
\usepackage{booktabs} 
\usepackage{siunitx}
\sisetup{group-separator={,}}

\begin{document}

\section*{Income \& Expenditure Account} 
\begin{table}[htb] 
\centering 
\begin{tabular}{
  p{7.5cm}
  c
  *2{S[table-format=6.0, table-space-text-pre=(, table-space-text-post=)]}
}  
& \textbf{Note} & {\textbf{2016}} & {\textbf{2015}} \\
\midrule
Income & 1 & 100000 & 102000 \\
\cmidrule{3-4}\\ 
Cost of Sales & 2 & {(}50000{)} & {(}45000{)} \\
\cmidrule{3-4} 
Gross Profit & & 50000 & 57000 \\
\end{tabular}
\end{table}
\end{document}

结果

  • 可以根据要求指定普通数字。
  • 数字自动在小数点处对齐。
  • 同一列中的其他条目可以通过花括号保护起来,避免被数字解析(见表头)。然后这些条目将居中显示。
  • 带括号的条目更复杂。示例将它们添加为前置和后置文本。
  • 问题被标记为(或曾经被标记为)booktabs。因此,该示例使用了包提供的规则。

相关内容