如果我使用该siunitx
包来生成一个虚数,
\SI{120i}{\per\centi\meter}
那么它会在 120 之前放置一个 0(可能是期望包含实数的复数符号的一些产物)。
这看起来像是一个错误。此外,它把数字放在括号中,如果它是一个具有实部和虚部的复数,那么这是有意义的,但如果它本身只有一个虚部,那么就没有意义了。
我曾考虑过关闭解析,但是这可能会产生其他格式问题,例如,我喜欢将“i”变为斜体”,这可以通过选项进行设置,但如果关闭解析则不行。
答案1
对于那些等不及 CTAN 更新的人,以下方法应该有效
\documentclass{article}
\usepackage{siunitx}
\ExplSyntaxOn
\cs_set_protected:Npn \siunitx_number_in_complex:N #1 {
\bool_set_false:N \l_siunitx_number_in_first_bool
\bool_if:NTF \l_siunitx_number_in_complex_root_bool
{
\siunitx_number_in_parse_error:nn
{ duplicate-complex-root-token } { \token_to_str:N #1 }
}
{
\cs_set_eq:NN \siunitx_number_in_check:n
\siunitx_number_in_check_full:n
\bool_set_true:N \l_siunitx_number_in_complex_root_bool
\prop_put:Nnn \l_siunitx_number_in_prop { complex-root } {#1}
\tl_if_empty:NF \l_siunitx_number_parsed_tl
{
\cs_set_eq:NN \siunitx_number_in_parse_loop:N
\siunitx_number_in_parse_complex:N
}
\bool_if:NT \l_siunitx_number_in_decimal_bool
{
\bool_if:NF \l_siunitx_number_in_complex_bool
{
\prop_if_in:NnT \l_siunitx_number_in_prop
{ mantissa-uncertainty }
{
\siunitx_number_in_complex_aux:nn
{ mantissa-decimal } { complex-decimal }
\siunitx_number_in_complex_aux:nn
{ mantissa-uncertainty } { complex-uncertainty }
}
\siunitx_number_in_complex_aux:nn { mantissa-integer }
{ complex-integer }
\siunitx_number_in_complex_aux:nn
{ mantissa-decimal-marker } { complex-decimal-marker }
\prop_del:Nn \l_siunitx_number_in_prop { mantissa }
\prop_put:Nnn \l_siunitx_number_in_prop { complex }
{ true }
}
}
\prop_if_in:NnF \l_siunitx_number_in_prop { mantissa }
{
\prop_if_in:NnT \l_siunitx_number_in_prop { mantissa-sign }
{
\siunitx_number_in_complex_aux:nn { mantissa-sign }
{ complex-sign }
}
}
\bool_set_true:N \l_siunitx_number_in_complex_bool
\bool_set_false:N \l_siunitx_number_in_first_bool
\siunitx_number_in_init_part:n { complex }
\prop_if_in:NnT \l_siunitx_number_in_prop
{ complex-decimal-marker }
{ \bool_set_true:N \l_siunitx_number_in_decimal_bool }
\prop_if_in:NnTF \l_siunitx_number_in_prop
{ complex-sign }
{ \bool_set_true:N \l_siunitx_number_in_sign_bool }
{ \prop_del:Nn \l_siunitx_number_in_prop { mantissa } }
}
}
\ExplSyntaxOff
\begin{document}
\SI{120i}{\per\centi\metre}
\end{document}
(抱歉,这里只有一行更改了,但是函数有点长!)