siunitx 选项“符号或分数”在 v3 的文本模式下不起作用

siunitx 选项“符号或分数”在 v3 的文本模式下不起作用

我对当前版本 (v. 3.0.15) 的软件包有疑问siunitx。在文本模式下使用命令显示单元时\per,该单元不采用周围文本的属性 (粗体、斜体等)。

这是我的错误还是与新版本相关的错误?

3.0.15版本在编译时也出现以下错误:

! Missing $ inserted.
<inserted text> 
$
l.21 ...a \qty{11000}{\kilo\metre\per\hour} bla bla}
                                                  \\
I've inserted something that you may have forgotten.
(See the <inserted text> above.)
With luck, this will get me unwedged. But if you
really didn't forget anything, try typing `2' now; then
my insertion and my current dilemma will both disappear.

这是我的 MWE,我添加了使用该包的 2 版进行编译获得的结果:

%%%%%% VERSION 3.0.15 %%%%%%

\documentclass{article}

\usepackage{siunitx}

\sisetup{
    mode                    = match,
    reset-text-family       = false,
    reset-text-series           = false,
    reset-text-shape        = false,
    propagate-math-font = true,
    reset-math-version      = false,
    per-mode                = symbol-or-fraction,
}

\begin{document}

\begin{tabular}{|c|c|}
\hline
\textsf{Bla bla \qty{11000}{\kilo\metre} bla bla}&\textsf{Bla bla \qty{11000}{\kilo\metre\per\hour} bla bla}\\
\textit{Bla bla \qty{11000}{\kilo\metre} bla bla}&\textit{Bla bla \qty{11000}{\kilo\metre\per\hour} bla bla}\\
\textbf{Bla bla \qty{11000}{\kilo\metre} bla bla}&\textbf{Bla bla \qty{11000}{\kilo\metre\per\hour} bla bla}\\\hline
\end{tabular}

\end{document}



%%%%%% VERSION 2 %%%%%%

%\documentclass{article}
%
%\usepackage{siunitx}[=v2]
%
%\sisetup{
%   detect-all,
%   detect-inline-family    = math,
%   detect-inline-weight    = math,
%   detect-display-math = true,
%   per-mode                = symbol-or-fraction,
%}
%
%\begin{document}
%
%\begin{tabular}{|c|c|}
%\hline
%\textsf{Bla bla \SI{11000}{\kilo\metre} bla bla}&\textsf{Bla bla \SI{11000}{\kilo\metre\per\hour} bla bla}\\
%\textit{Bla bla \SI{11000}{\kilo\metre} bla bla}&\textit{Bla bla \SI{11000}{\kilo\metre\per\hour} bla bla}\\
%\textbf{Bla bla \SI{11000}{\kilo\metre} bla bla}&\textbf{Bla bla \SI{11000}{\kilo\metre\per\hour} bla bla}\\\hline
%\end{tabular}
%
%\end{document}

对于版本 3.0.15:
V3.0.15

对于版本 2:
V2

答案1

这是一个疏忽:在内部,symbol-or-fraction使用\mathchoice,并且需要在文本模式下的打印例程中进行额外处理。我已经调整了此区域的代码,您可以使用以下方式回顾性地添加它

\ExplSyntaxOn
\cs_gset_protected:Npn \__siunitx_print_text_replace:n #1
  {
    \group_begin:
    \tl_if_head_eq_meaning:nNTF {#1} \mathchoice
      { \__siunitx_print_text_replace:Nnnnn #1 }
      {
        \tl_set:Nn \l__siunitx_print_tmp_tl {#1}
        \__siunitx_print_text_replace:N \l__siunitx_print_tmp_tl
        \tl_use:N \l__siunitx_print_tmp_tl
      }
    \group_end:
  }
\cs_new_protected:Npn \__siunitx_print_text_replace:Nnnnn #1#2#3#4#5
  {
    \ensuremath
      {
        \mathchoice
          { \__siunitx_print_print_replace_frac:n {#2} }
          { \__siunitx_print_print_replace_frac:n {#3} }
          { \__siunitx_print_print_replace_frac:n {#4} }
          { \__siunitx_print_print_replace_frac:n {#5} }
      }
  }
\cs_new_protected:Npn \__siunitx_print_print_replace_frac:n #1
  {
    \exp_args:NnV \tl_if_head_eq_meaning:nNTF {#1} \l_siunitx_unit_fraction_tl
      { \__siunitx_print_text_fraction:Nnn #1 }
      { \mbox { \__siunitx_print_text_replace:n {#1} } }
  }
\ExplSyntaxOff

相关内容