在大多数语言中,长数字被分成三位数字的组,以提高可读性。
在荷兰语(我的母语)中,1000000
通常写为1 000 000
。在英语中,这将是1,000,000
。
现在,我想知道如何在 LaTeX 中使用这种格式。我在谷歌上搜索,但我只找到一些文章解释如何将很长的数字拆分成多行,这不是我需要的。
有没有可以自动执行此操作的软件包?或者我可以使用某个标签来实现此目的?
答案1
\,
如果您手动输入,则可以使用较窄的空间:$1\,000\,000$
您还可以使用以下包siunitx
,它会自动插入适当的分隔符和间距:\num{100000}
您应该使用哪一个取决于您想要做什么(以及数字在哪里生成);无论是手写文本中的几个数字,还是在表格数据中排版数千个数字,而手动编辑以添加分组分隔符实际上并不是一个选择。
答案2
有一个很好的软件包可以解决所有这些与数字格式有关的问题,无论是在文本中还是在表格中:\usepackage{numprint}
。请学习这手动的,它提供了很多详细信息。您通常可以通过texdoc numprint
命令行获取手册。
numprint 的一个小型 MWE 可以回答您的问题:
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{numprint}
\npthousandsep{\,}
\begin{document}
This would be a line with a price tag: \numprint{1000000} EUR.
And as a tabular:
\begin{tabular}{N{7}{0}}
1000000 {~EUR}\\
\end{tabular}
\end{document}
我们得到这个:
如您所见,只需告诉 numprint 千位分隔符应该是什么样子。您可以做更多事情,例如四舍五入数字
答案3
对于 TeX 宏程序员来说,这是非常有趣的练习。我的结果是这样的:
\def\num #1{\numA#1\empty\empty\empty#1\end}
\def\numA #1#2#3{%
\ifx #1\empty \afterelax{\numB}\fi
\ifx #2\empty \afterelax{\numB{}}\fi
\ifx #3\empty \afterelax{\ea\numB\ignoreit}\fi
\ea \numA \ignoreit \relax
}
\def\numB #1#2#3#4{#1#2#3\ifx#4\end\else \numseparator \ea\numB\ea#4\fi}
\def\afterelax#1#2\relax{\fi#1}
\def\ignoreit#1{}
\let\ea=\expandafter
\def\numseparator{,}
Test: number \num{1234567}
宏\num
是可扩展的。
答案4
使用包“Ziffer”,如果您想将 100000 写成“100.000,00”,它将显示“10 000,00”(逗号后没有空格,用空格代替点)