包含大量数字的计算器包?

包含大量数字的计算器包?

我创建了一个使用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 年)。

多谢!

相关内容