numprint:抑制指数中的前导 0

numprint:抑制指数中的前导 0

我习惯\numprint以科学计数法漂亮地打印数字。出于某种原因,我的数字有 2 位指数,前面用零填充,例如:

\numprint{1.3e02}

使用此命令输出如下

1.3 x 10^(02)

我希望自动删除前面的 0,这样就可以得到类似

1.3 x 10^2

在包内可以实现这个吗numprint

答案1

当指数被存储以供以后处理时,此补丁\numprint将适用。但我建议切换到。\numbersiunitx

\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}

相关内容