siunitx 是否有一个与 pgfplots 的“固定相对”等效的数字格式选项?

siunitx 是否有一个与 pgfplots 的“固定相对”等效的数字格式选项?

我需要排版一个带单位的表格,所以我想使用siunitx它。但是,我不想要科学计数法,而是给定的数字。pgfplots有用fixed relative于此目的的选项:

\documentclass{article}
\usepackage{pgfplots,siunitx}
\def\numA{1.23456789e3}
\def\numB{1.23456789e-3}
\begin{document}
\noindent
  pgf standard format:\\
  \pgfmathprintnumber{\numA}\\
  \pgfmathprintnumber{\numB}\\
  \pgfkeys{/pgf/number format/.cd,fixed relative,precision=3}
  desired format:\\
  \pgfmathprintnumber{\numA}\\
  \pgfmathprintnumber{\numB}
\end{document}

这是上述代码的输出:

在此处输入图片描述

如果可能的话,我希望使用 获得相同的输出siunitx。我尝试过明确禁用scientific-notation,但似乎该键仅适用于启用科学计数法,siunitx否则不是用它:

\num{\numA}\\
\num{\numB}\\
\sisetup{round-mode=figures,round-precision=3,scientific-notation=false}
\num{\numA}\\
\num{\numB}\

输出:

在此处输入图片描述

一种可能性是重新定义\SI{}{}\num{}使用\pgfmathprintnumber{}和禁用siunitx的数字解析,但我想知道我还能做些什么。

我目前的解决方法是:

\let\oldnum\num
\renewcommand{\num}[1]{\oldnum[parse-numbers=false]{\pgfmathprintnumber{#1}}}
\let\oldSI\SI
\renewcommand{\SI}[3][]{\oldSI[#1,parse-numbers=false]{\pgfmathprintnumber{#2}}{#3}}

但这不允许我将选项传递给\pgfmathprintnumber。将选项传递给\SI效果很好,例如\SI[per-mode=fraction]{1e-3}{\meter\per\second}

答案1

这在 2.5 版本中是可能的,它可以正确处理固定指数为零的情况

\documentclass{article}
\usepackage{pgfplots,siunitx}
\def\numA{1.23456789e3}
\def\numB{1.23456789e-3}
\begin{document}
\noindent
  pgf standard format:\\
  \pgfmathprintnumber{\numA}\\
  \num{\numA}\\
  \pgfmathprintnumber{\numB}\\
  \num{\numB}\\
  \pgfkeys{/pgf/number format/.cd,fixed relative,precision=3}
  \sisetup{scientific-notation = fixed, fixed-exponent = 0, round-mode = figures,
    round-precision = 3}
  desired format:\\
  \pgfmathprintnumber{\numA}\\
  \num{\numA}\\
  \pgfmathprintnumber{\numB}\\
  \num{\numB}\\
\end{document}

相关内容