我习惯\numprint
以科学计数法漂亮地打印数字。出于某种原因,我的数字有 2 位指数,前面用零填充,例如:
\numprint{1.3e02}
使用此命令输出如下
1.3 x 10^(02)
我希望自动删除前面的 0,这样就可以得到类似
1.3 x 10^2
在包内可以实现这个吗numprint
?
答案1
当指数被存储以供以后处理时,此补丁\numprint
将适用。但我建议切换到。\number
siunitx
\documentclass{article}
\usepackage{numprint}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\numprint}
{\nprt@testsign{exponent}{\nprt@exponent}}
{\expanded{\noexpand\nprt@testsign{exponent}{\number\nprt@exponent}}}
{}{}
\makeatother
\begin{document}
\numprint{1.3e02}
\numprint{1.3e-02}
\end{document}
答案2
如果使用siunitx
包及其宏对你来说是一个选择,那么提供所需的选项以使的输出看起来与 的输出相同并\num
不太困难,无论是在文本模式还是数学模式下,\num
\numprint
除了指数的前导零将被删除。
\documentclass{article}
\usepackage{array}
\usepackage{cfr-lm} % use oldstyle numerals in text mode
\usepackage{numprint}
\usepackage{siunitx}
\sisetup{output-decimal-marker={,},
exponent-product = \cdot,
detect-mode}
\begin{document}
\begin{tabular}{@{} l >{$}l<{$} @{}}
\numprint{1.3e02} & \numprint{1.3e02} \\
\num{1.3e02} & \num{1.3e02}
\end{tabular}
\end{document}