siunitx 不检测数字样式

siunitx 不检测数字样式

尽管进行了设置,Siunitx 仍无法识别旧式数字,detect-all您能帮帮我吗?

MNWE:

\documentclass{standalone}

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

\newfontfamily\oldstyle[Numbers={Monospaced,OldStyle}]{TeX Gyre Pagella}

\usepackage[detect-all]{siunitx}

\begin{document}
  \oldstyle\num{123}123
\end{document}

其结果是:

在此处输入图片描述

答案1

只需说服希尼奇使用您新创建的字体系列:

\sisetup{text-rm=\oldstyle}

完整示例:

\documentclass{standalone}

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

\newfontfamily\oldstyle[Numbers={Monospaced,OldStyle}]{TeX Gyre Pagella}

\usepackage[detect-all]{siunitx}

\AtBeginDocument{
\sisetup{text-rm=\oldstyle}
}

\begin{document}
  \oldstyle\num{123}123
\end{document}

在此处输入图片描述


您必须这样做,正如手册中所述:

siunitx 包控制用于打印输出的字体,不受周围材料的干扰。标准方法是完全忽略周围材料,并使用当前的正文字体。

为了解决这个问题,只有几种可能性:

detect-all结合以下四个单个命令

  • detect-weight
  • detect-family
  • detect-shape
  • detect-mode

所以它没有检测到全部- 因此这个名字有点误导。

数字样式是一种比较特殊的字体设置,并不包含在内detect-all


作为希尼奇旨在用于数字和单位的科学符号,数字样式不能轻易改变,这是可以理解的,因为它看起来不太“科学”不再。我在论文中也使用旧式数字作为章节编号等。实际上,我siunitx最初希望采用这种设置,但很高兴它没有采用。

相关内容