siunitx 使用与单位不同的字体来呈现数值

siunitx 使用与单位不同的字体来呈现数值

我正在尝试以无衬线字体呈现图形标题。

我已经设置了标题包,以使用 sf 字体作为文本(简单)和数学(通过包sansmath)。

我正在努力适应siunitx这一点。\SI或者\qty将呈现数字采用衬线字体。

这有点像后续问题。请注意,我使用所有的siunitx开关来检测数学模式、字体系列等。

例子:

\documentclass[11pt,a4paper]{scrarticle}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[T1]{fontenc}

\usepackage{sansmath}

\usepackage[separate-uncertainty=true, multi-part-units=single]{siunitx}
\sisetup{
    mode = match,
    propagate-math-font = true ,
    reset-math-version = false ,
    reset-text-family = false ,
    reset-text-series = false ,
    text-family-to-math = true ,
    text-series-to-math = true
}

\parindent=0in

\begin{document}
\sansmath
\begin{tabular}{ll}
    1. Plain serif text:            & 123\,m                 \\
    \sffamily 2. Plain sans math:   & $123\,m$               \\ 
    \sffamily 3. Plain sans text:   & \sffamily 123\,m       \\
    \sffamily 4. siunitx sans text: & \sffamily\qty{123}{m}   \\
    \sffamily 5. siunitx sans math: & \sffamily$\qty{123}{m}$
\end{tabular}
\end{document}

输出:

输出

我明白除了最后一个之外的所有情况。为什么这些数字是带衬线的?

附言:顺便说一句,如果我省略最后一个\sffamily,那么该单位也会设置衬线。

答案1

正如你所观察到的,这是text-series-to-math主动发生的。要理解发生了什么,你需要知道两件事

  • 数学模式和文本模式在字体方面有很大不同;特别是\mathversion用于设置\sansmath(形状)以及例如\boldmath(一系列)。

  • 在 v3 中,siunitx旨在将数量格式化为“标准”形式,如下所示123\,\mathrm{m},然后应用转换以获得所需的输出。

这导致了一个奇怪的结果,因为text-series-to-math发现文本系列是中等的,因此设置了\mathversion,但会触发\sansmath。另一方面,处理的代码部分\mathrm确实保持活动状态,因此使用\mathsf,因此单位不受影响。

我会思考是否有任何方法可以使这一点更清楚或更好地区分数学版本的不同方面。


目前,如果你设置

\sisetup{series-version-mapping / m = sans}

那么一切都会好起来。

相关内容