siunitx 和轻量级字体的组合无法编译……?

siunitx 和轻量级字体的组合无法编译……?

问题

我正在尝试将该包siunitx与 Opensans Light 字体结合使用。为了siunitx检测字体粗细,我传递了\sisetup{detect-weight}。但是,文档编译失败。有人能重现这种行为吗?有解决方法吗?

谢谢你!

最小示例

\documentclass{minimal}

\usepackage[default]{opensans}
\usepackage{siunitx}
\sisetup{detect-weight}

\begin{document}

\fontseries{l}\selectfont This is quite light: \SI{1}{\milli\gram}

\end{document}

编辑1

澄清一下:\fontseries{l}\fontseries{m}或替换可以\fontseries{b}按预期工作

答案1

问题在于,siunitx假设对于提供“浅色”字体的包,命令的\lseries定义方式与 相同\mdseries。但事实并非如此。适用于文本模式打印的补丁是

\documentclass{minimal}

\usepackage[default]{opensans}
\usepackage{siunitx}
\usepackage{xpatch}

\ExplSyntaxOn
\xpatchcmd{\__siunitx_detect_font_weight_text:}
  { \lseries }
  { \fontseries{l} \selectfont }
  {}{}
\ExplSyntaxOff
\begin{document}
\sisetup{detect-weight, mode = text}
\fontseries{l}\selectfont This is quite light: \SI{1}{\milli\gram}

\end{document}

相关内容