以下示例给出了如下所示的警告:
\documentclass{book}
\usepackage{amsmath}
\usepackage[matha]{mathabx}
\usepackage{mathpazo}
\begin{document}
$\text{$a$}$
\end{document}
LaTeX Font Warning: Size substitutions with differences
(Font) up to 0.43996pt have occurred.
使用:
This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdflatex)
以下每一种操作都可以使警告消失:
- 省略
mathabx
或mathpazo
- 将文档字体大小更改为 11pt 或 12pt
- 写作
$a$
或者$\text{a}$
问题:这个警告应该被认真对待吗?它是否指向一些可能会损害文档外观的东西?如果是这样,有什么解决办法吗?
我没有在 PDF 输出中看到任何问题,但想确定一下。
答案1
如果你添加
\usepackage{tracefnt}
您可以从字体系统获取更多信息,特别是它会告诉您哪种字体被替换:
LaTeX Font Warning: Font shape `U/matha/m/n' in size <7.6> not available
(Font) size <8> substituted on input line 8.
因此,您可以决定不关心上标使用的是 8pt 字体而不是 7.6pt 字体(.4pt 实际上不是很大:-) 但如果您确实关心那么...
从包装上看,替换的原因是
\DeclareFontShape{U}{matha}{m}{n}{
<5> <6> <7> <8> <9> <10> gen * matha
<10.95> matha10 <12> <14.4> <17.28> <20.74> <24.88> matha12
}{}
这说明该字体仅提供离散尺寸,因此 LaTeX 会用最接近的尺寸替换。
如果(如这里)字体现在以可扩展的形式提供,则这些替换的需要实际上并不适用,因此,就像fix-cm
(或更旧的type1cm
)软件包将标准声明替换为允许字体缩放的声明一样,您可以在此处执行相同的操作
\DeclareFontShape{U}{matha}{m}{n}{
<-6> matha5
<6-7> matha6
<7-8> matha7
<8-9> matha8
<9-10> matha9
<10-12> matha10
<12-> matha12
}{}
表示对于 7pt <= s < 8pt 之间的任何尺寸请求使用 matha7 的缩放版本。
因此,此操作没有任何警告
\documentclass{book}
\usepackage{amsmath}
%\usepackage{tracefnt}
\usepackage[matha]{mathabx}
\DeclareFontShape{U}{matha}{m}{n}{
<-6> matha5
<6-7> matha6
<7-8> matha7
<8-9> matha8
<9-10> matha9
<10-12> matha10
<12-> matha12
}{}
\usepackage{mathpazo}
\begin{document}
$\text{$a$}$
\end{document}