在 siunitx 中使用 \pgfmathresult

在 siunitx 中使用 \pgfmathresult

我尝试进行一些计算,然后想将结果用于siunitx qty。但是,这失败了,我不知道为什么。

\documentclass{article}
\usepackage{pgfplots, siunitx}

\newcommand{\scale}[1]{\pgfmathparse{#1/3.13-0.3}\pgfmathresult}

\begin{document}

Without siunitx: \(\scale{5}\)

With siunitx: \(\qty{\scale{5}}{\celsius}\)
\end{document}

答案1

您不能在 .* 的数字部分中使用不可扩展的命令,siunitx整个原因\pgfmathparse\pgfmathresult是因为\pgfmathparse不可扩展。您可以使用包装器来\qty执行分配,然后仅传递结果,但使用siunitxv3,您可以直接使用表达式

\documentclass{article}
%\usepackage{xfp} % pre-2022-06-01 LaTeX
\usepackage{siunitx}

\newcommand{\scale}[1]{\fpeval{#1/3.13-0.3}}

\begin{document}

Without siunitx: \(\scale{5}\)

With siunitx: \(\qty[evaluate-expression]{\scale{5}}{\celsius}\)
\end{document}

(你不需要 \fpeval以便与 一起工作siunitx,但您在 之外工作\qty。)


  • 在 LuaTeX 中可以使用\immediateassignment,但我将在这里忽略它!

相关内容