字体/siunitx:了解“detect-all”和“detect-inline-family=math”的工作原理

字体/siunitx:了解“detect-all”和“detect-inline-family=math”的工作原理

对于以下内容,我需要

  1. 理解为什么两者都不detect-all使detect-inline-family=math打印\num字体与周围的内联数学相同,唯一的方法是通过math-rm = \symup按照建议的方式这个答案

  2. 了解为什么我需要加载该选项math-rm = \symup才能使\num复制文档成为默认数学字体。

  3. 知道是否可以让默认数学字体粗细与周围的普通文本一样细,因为它在我眼里看起来更粗一些。

在此处输入图片描述

\documentclass[14pt]{article}

\usepackage[no-math]{fontspec}
\setmainfont{Latin Modern Roman}

\usepackage{unicode-math}
\setmathfont[math-style=ISO]{Cambria Math}

\usepackage[
detect-all,
detect-inline-family=math
]{siunitx}

\begin{document}
    \centering
    text: 123 \num{123}\\
    inline math: $123~\num{123}$\\
    display math: \[123~\num{123}\]
    
    \verb|\sisetup{math-rm = \symup}|
    \sisetup{math-rm = \symup} % https://tex.stackexchange.com/a/438342/2288
    
    \vspace{\baselineskip}
    text: 123 \num{123}\\
    inline math: $123~\num{123}$\\
    display math: \[123~\num{123}\]
\end{document}

答案1

\mathrm(和\mathbf等)在默认设置中使用周围文本字体的字形,\symrm(和\symbf?等)使用数学字体的字形:

\documentclass[14pt]{article}

\usepackage{unicode-math}
\setmainfont{Arial}
\setmathfont[math-style=ISO]{Cambria Math}
\begin{document}\pagestyle{empty}
$\mathrm{mathrm}\quad\symrm{symrm}$
\end{document}

在此处输入图片描述

默认情况下\num使用其中一种\mathXXX字体,默认情况下此\mathXXX字体使用文本字体,因此\num即使在数学中也使用文本字体。math-rm = \symup您可以强制它使用数学字体。

detect-inline-family=math并不意味着\num会使用数学字体,而是意味着\num如果位于数学命令中,则会做出反应。例如尝试

  $123~\num{456}~\mathsf{\num{789}}$

在此处输入图片描述

  1. 知道是否可以让默认的数学字体粗细和周围的字体一样轻

嗯,Cambria Math 更大胆一些。为什么不使用更合适的默认 (拉丁现代数学)?

相关内容