siunitx 使用了错误的无衬线字体

siunitx 使用了错误的无衬线字体

这是我花了很长时间才弄清楚的一个问题,将其发布到帮助中很有用。

问题如下:

\documentclass{article}


\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[font={sf}]{caption}

\usepackage{siunitx}
\sisetup{detect-family=true}

\usepackage[scaled]{berasans}


\begin{document}

\begin{figure}
  Dummy figure
  \caption{Caption with units: \SI{10}{m} vs 10~m}
\end{figure}


\end{document}

如果没有这\usepackage[scaled]{berasans}条线,一切都会正常工作,图例中的字体也是同质的。但是,随着默认无衬线字体的重新定义,图例\SI{10}{m}中的命令的字体与下面的命令的字体之间存在明显的不匹配10~m(是的,我知道间距不对,但这不是重点)。

答案1

我花了很长时间才意识到问题在于命令的输出\SI不是使用 排版的\sfdefault,而是使用\mathsf,而这并没有被 重新定义\usepackage[scaled]{berasans}

我的解决方法是在序言中添加以下内容:

\DeclareMathAlphabet{\mathsf}{T1}{fvs}{m}{n}

这将重新定义默认系列,使其与包定义的系列\mathsf相同。berasans\sfdefault

相关内容