我对当前版本 (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}
答案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