我创建了一个使用calculator
包的新命令。它用于交叉乘法,基本上是传递单位。
新命令说:
\newcommand{\regladetres}[6]{\MULTIPLY{#5}{#3}{\numerador}\DIVIDE{\numerador}{#1}{\resultado}\ROUND[2]{\resultado}{\resultado}\begin{align*}
\SI{#1}{#2} & \text{\line(1,0){40}}\SI{#3}{#4}\\
\SI{#5}{#6} & \text{\line(1,0){40}}x=\frac{\SI{#5}{\cancel#6}\cdot\SI{#3}{#4}}{\SI{#1}{\cancel#2}}=\SI{\resultado}{#4}
\end{align*}
}
当数字小于 15999 时工作正常,但当乘以 15999x15999 时失败或当数字(任何)大于 15999 时。
我该如何使用大数?在深层,没有更大的只有 101325。我认为问题不是出在siunitx
包上,因为我使用更大的数字没有问题。
多谢!
达里奥
答案1
首先:\SI
中的宏siunitx
已经过时,应该用 替换\qty
。
其次,对于这样的用例,您可能应该使用 LuaLaTeX 编译器,以便您可以在 Lua 中进行计算并在 LaTeX 中打印它们。
\documentclass{article}
\usepackage{luacode}
\usepackage{siunitx}
\directlua{
a = 15999
b = 15999
c = 1e8
d = 3.4e12
}
\begin{document}
First ratio : \qty{\directlua{tex.print(a/b)}}{m}
Second ratio : \qty{\directlua{tex.print(c/d)}}{Hz}
\end{document}
如您所见,您在\directlua
宏中输入的所有内容都是 Lua 代码。然后,在 Lua 代码中,该tex.print
函数将其参数的值发送给 LaTeX。
此外,如果您有多个\directlua
宏,它们将被视为同一代码块的一部分,因此您可以将一个宏中的变量重用到另一个宏中。
如果您想要格式化数字,您可以在 Lua 中使用常用的字符串格式化函数进行执行,然后再将它们发送回 LaTeX。
答案2
好吧,这个问题不是问题。该calculator
包无法处理大于 2^14 的数字。文档第 13.1 节这样说:
The largest TeX number is 16383.99998 ≈ 214 ; \cctr@logmaxnum is the logarithm of this num-
ber, 9.704 ≈ log 16384.
同时,我等待新的 Debian 升级以使用新软件包。因为像nicematrix
和这样的软件包siunitx
已经过时了(2020 年)。
多谢!