我尝试进行一些计算,然后想将结果用于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
执行分配,然后仅传递结果,但使用siunitx
v3,您可以直接使用表达式
\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
,但我将在这里忽略它!