今天,我不得不处理超过 10 位数字的大数字块。使用我当前的设置,显示的数字是整数,没有任何分组或小数点,这使其难以读取,尤其是当它们包含大量零时。
我的序言:
\documentclass[paper=a4, fontsize=12pt,]{scrartcl}
% Für Spracheingaben und korrekte Trennung
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
% Matherelevante Pakete
\usepackage[decimalsymbol=comma]{siunitx}
\usepackage{icomma}
\usepackage{amsmath}
% Sonstige Parameter
\setlength{\parindent}{0pt}
\numberwithin{equation}{subsection}
如您所见,我使用逗号作为常规小数符号,因此用逗号作为小数点没有太大意义。
无论如何,我如何让数字自动分组?到目前为止,我一直在使用以下手动方式来实现较大数字之间的间距,但这不太舒服:
\sqrt[2]{1,6 \cdot 10^{13}} = \sqrt[2]{16\,000\,000\,000\,000} &= 4\,000\,000\
所以我的问题是:如何实现自动数字分组,其中小数点是撇号或非制动空格?
答案1
siunitx
您已加载的包提供了用于\num
格式化数字的命令。
这个命令非常方便,因为它允许独立于输入的格式来获取输出。
\documentclass[paper=a4, fontsize=12pt,]{scrartcl}
% Für Spracheingaben und korrekte Trennung
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
% Matherelevante Pakete
\usepackage[output-decimal-marker={,},exponent-product=\cdot]{siunitx}
\usepackage{icomma}
\usepackage{amsmath}
% Sonstige Parameter
\numberwithin{equation}{subsection}
\begin{document}
$\sqrt{\num{1.6e13}} = \sqrt{\num{16 000 000 000 000}} = \num{4 000 000}$
$\sqrt{\num{1,6e13}} = \sqrt{\num{16000000000000}} = \num{4000000}$
\end{document}
两个输入将产生相同的输出,即
请注意,这decimalsymbol=comma
是一个“版本 1”选项,因此它强制siunitx
仅使用版本 1 中功能较弱的功能。我在示例中传递的选项是“现代”选项。
如果你因为 TeX 发行版过时而无法使用旧版本,请更新它或使用
\usepackage[decimalsymbol=comma,expproduct=\cdot]{siunitx}
任何状况之下,绝不使用除细空格之外的任何字符来分隔数字组。