numprint 命令的意外行为

numprint 命令的意外行为

我正在使用该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

相关内容