使用 siunitx 表示具有指数的复数(解决方法)?

使用 siunitx 表示具有指数的复数(解决方法)?

看起来siunitx(由@Joseph Wright 撰写)对于具有指数的复数有一个限制:

\documentclass[]{article}
\usepackage[]{siunitx}
\begin{document}
\num{1 + 2 i}\\ %ok, complex number
\num{2e6}\\ %ok, number with exponent
\num{1 + 2e6 i}\\ %not ok, ! siunitx error: "invalid-token-in-exponent"
\end{document}

有办法解决这个问题吗?

我发现的唯一方法是

\num[parse-numbers=false]{1 + (\num[parse-numbers=true]{2e6}) i}

这违背了目的。

(我使用的是siunitx2.5c 版本。)

请注意,siunitx可以处理复数中的指数,但在两部分的指数相同的情况下,例如\num{1+2i e10},情况就不同。

答案1

中的数字解析器siunitx旨在支持该包的主要目的:排版物理量(带单位的数字)。这些物理量很少有复数部分,如果有复数部分(例如在电子学的某些部分),实数部分和复数部分的量级通常相似。因此,该包理解

1 + 2i e3

作为

$(1 + 2\mathrm{i}) \times 10^{3}$

因为这是迄今为止最常见的要求。

原则上,解析器可以扩展以处理更广泛的输入,但这也需要改变输出的生成方式。这样,在代码复杂性和性能方面就会取得平衡,因为“常见情况”不需要这些。

我们随时欢迎您提出功能请求:请随时在追踪器,以及任何有用的输入语法的链接!

相关内容