这是我花了很长时间才弄清楚的一个问题,将其发布到帮助中很有用。
问题如下:
\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