在 siunitx 中使用文本字体而不是数学字体

在 siunitx 中使用文本字体而不是数学字体

如何将用包设置数值和单位的字体siunitx改为文档中使用的主文本字体?

直观上看,主字体应该是标准字体设置。然而,似乎使用了数学字体,见下面的代码。

% !TeX program = lualatex

\documentclass[a4paper]{article}

\usepackage{fontspec}
\setmainfont{TeX Gyre Heros}

\usepackage{unicode-math}
\setmathfont{XITS Math}

\usepackage{siunitx}

\begin{document}
The gain $G=\SI{2}{dB}$, which is \SI{1}{dB} higher than before.
\end{document}

在此处输入图片描述

答案1

摘自该包的用户指南第 5 页siunitx

默认情况下,所有文本都以当前的直立数学字体排版。可以通过设置适当的选项来更改:\sisetup{detect-all}将使用当前字体进行排版。

简而言之,发布\sisetup{detect-all}序言中的指令(加载siunitx,自然)。这不仅会影响 的输出\SI,还会影响\si\num和包\numlist的所有其他用户宏的输出siunitx

答案2

在最近的版本(版本 3?)中siunitx,该\sisetup{detect-all}选项仍然有效,但已被弃用(另请参阅在 GitHub 上打包代码)。如果你用这个进行编译,你将在日志文件中收到以下消息:

Package siunitx Info: Option "detect-all" has been deprecated in this release.
(siunitx)             
(siunitx)             Use "mode = match, propagate-math-font = true,
(siunitx)             reset-math-version = false, reset-text-family = false,
(siunitx)             reset-text-series = false, text-family-to-math = true,
(siunitx)             text-series-to-math = true" as a replacement.

它的替代品是一系列更细粒度的命令,如上面的日志输出所示。您可以使用

\usepackage[
  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
]{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
}

每个选项均记录在用户手册的第 4 部分中。

相关内容