我的问题比较简单,但是阅读了新siunitx
文档后,我仍然没有答案。
在数学模式下,如何使单位对命令敏感\mathbf
,\symbf
从而将单位以粗体显示?
对于数字来说,它运行良好,所以我不明白为什么对于单位来说不是这样。
\documentclass{article}
\usepackage{fontspec, unicode-math, siunitx}
\sisetup{
mode=match,
reset-text-family = false ,
reset-text-series = false ,
reset-text-shape = false,
text-family-to-math = false ,
text-series-to-math = false,
propagate-math-font = true,
reset-math-version = false
}
\begin{document}
\noindent
xxxx $\mathbf{2 x = \qty{10}{\kilo\gram}}$ xxxx\\
xxxx $\symbf{2 x = \qty{10}{\kilo\gram}}$ xxxx.\\
\noindent
What I would like to have:\\
xxxx $\symbf{2 x = 10\, kg}$ xxxx.\\
\end{document}
答案1
我已将初始问题记录为https://github.com/josephwright/siunitx/issues/525。这里出现这种情况的原因是这里的“referenece”输出是10\,\mathrm{kg}
,所以我们最终\mathbf{10\,\mathrm{kg}}
得到了不一致的粗体。
目的propagate-math-font
是涵盖字体系列,而不是其他方面:我应该把这一点说得更清楚。我会考虑如何最好地解决这个问题,因为这里有两种说法。
我想说的是,让数学模式文本变粗体是 的工作\boldmath
。因此,我希望使用
\documentclass{article}
\usepackage{siunitx}
\sisetup{reset-math-version = false}
\begin{document}
xxxx {\boldmath$2 x = \qty{10}{\kilo\gram}$} xxxx
\end{document}
这里,可能与语义有关。(\mathbf
本质上是关于外观,表明字体的选择具有数学意义。)x
\boldmath
\mathbf
尽管如此,我决定扩展这里的代码以覆盖\mathbf
。在达到 CTAN 之前,您可以使用
\cs_gset_protected:Npn \__siunitx_print_math_auxiv:n #1
{
\bool_if:NTF \l__siunitx_print_math_font_bool
{
\__siunitx_print_math_aux:N
\mathbf \mathit \mathsf \mathtt
\q_recursion_tail \q_recursion_stop
}
{ \__siunitx_print_math_auxv:n }
{#1}
}
答案2
这可能不是最优雅的解决方案,但您可以强制将\SI{}{}
设置为\text
,然后使用\bfseries
或\textbf
。使用siunitx
选项时detect-all=true
,输出将为粗体。
我在下面举了一个例子,\newcommand
让你的生活变得更轻松。
\documentclass{article}
\usepackage{fontspec, unicode-math, siunitx}
\sisetup{detect-all=true}
\newcommand{\bfqty}[2]{\text{\bfseries\SI{#1}{#2}}}
\begin{document}
\noindent
xxxx $\mathbf{2 x = \text{\bfseries\SI{10}{\kilogram}}}$ xxxx\\
xxxx $\mathbf{2 x = \bfqty{10}{\kilogram}}$ xxxx\\
\noindent
What I would like to have:\\
xxxx $\symbf{2 x = 10\, kg}$ xxxx.\\
\end{document}
编辑:类似的解决方案是,您不必将所有内容都放入环境中,text
如下所示。请注意,这里detect-weight
就足够了,而在上面的示例则需要detect-all
。不过,您仍然需要将整个方程式放入\textbf{}
环境中{\bfseries }
。
\documentclass{article}
\usepackage{fontspec, unicode-math, siunitx}
\sisetup{
mode=text,
detect-weight=true,
}
\begin{document}
\noindent
xxxx \textbf{$\mathbf{2 x = \qty{10}{\kilo\gram}}$} xxxx\\
\noindent
What I would like to have:\\
xxxx $\symbf{2 x = 10\, kg}$ xxxx.\\
\end{document}