![numprint 命令的意外行为](https://linux22.com/image/350501/numprint%20%E5%91%BD%E4%BB%A4%E7%9A%84%E6%84%8F%E5%A4%96%E8%A1%8C%E4%B8%BA.png)
我正在使用该numprint
软件包。该软件包基本上很棒,但有时会出现意外行为。以下是这种情况的一个例子:
\documentclass{article}
\usepackage{numprint}
\begin{document}
\nprounddigits{1}
\numprint{.9869}
\nprounddigits{2}
\numprint{.9869}
\nprounddigits{3}
\numprint{.9869}
\nprounddigits{1}
\numprint{.8666}
\nprounddigits{2}
\numprint{.8666}
\nprounddigits{3}
\numprint{.8666}
\end{document}
结果如下
0,0
0,99
0,987
0,9
0,87
0,867
显然,第一个结果是错误的。它应该是“1,0”。(这里,小数点符号默认为“,”)。另一方面,所有其他结果看起来都是正确的。
我是否遗漏了什么,或者这是一个已知的错误?是否有任何解决方法可以避免此问题?我需要使用 \nprounddigits{1} 打印大量数字,这可能会导致当前的问题。
在 Fedora 24 上,我使用 pdfTeX 版本 3.14159265-2.6-1.40.16(TeX Live 2016/dev),它使用 /usr/share/texlive/texmf-dist/tex/latex/numprint/numprint.sty。
答案1
我同意这是一个错误,但无论如何numprint
我都会使用:快速的“兼容性”定义:siunitx
\documentclass{article}
\usepackage{siunitx}
\NewDocumentCommand\numprint{m}{\num[round-mode = places]{#1}}
\NewDocumentCommand \nprounddigits{m}
{\sisetup{round-precision = #1}}
\begin{document}
\nprounddigits{1}%
\numprint{.9869}
\nprounddigits{2}%
\numprint{.9869}
\nprounddigits{3}%
\numprint{.9869}
\nprounddigits{1}%
\numprint{.8666}
\nprounddigits{2}%
\numprint{.8666}
\nprounddigits{3}%
\numprint{.8666}
\end{document}
答案2
这里的主要问题是你缺少一个前缀0
:
1,0
0,99
0,987
0,9
0,87
0,867
\documentclass{article}
\usepackage{numprint}
\begin{document}
\nprounddigits{1}%
\numprint{0.9869}
\nprounddigits{2}%
\numprint{0.9869}
\nprounddigits{3}%
\numprint{0.9869}
\nprounddigits{1}%
\numprint{0.8666}
\nprounddigits{2}%
\numprint{0.8666}
\nprounddigits{3}%
\numprint{0.8666}
\end{document}
如果你是仅有的打印小数,并且可能绝不有一个前缀0
,你可以总是通过添加来包含它
\let\oldnumprint\numprint
\renewcommand{\numprint}[1]{\oldnumprint{0#1}}
加载后numprint
。