我经常收到警告Size substitutions with differences up to ... have occurred
,即使使用 Palatino 之类的字体也是如此,据我所知,这些字体被定义为任意可缩放的。为什么会发生这种替换?
此外,是否有一种系统的方法来找出哪种字体变化导致了问题,并手动强制编译器包含正确的大小?
我对 TeX 后端如何处理字体只有非常基本的了解,所以如果我的问题完全没有意义,请随时启发我。
编辑:我并不是想找到一种方法来消除我编译的任何特定文档上的警告。只要结果看起来正确,我通常会忽略所有此类警告。我只是想了解为什么会发生这种情况,即使在使用像这样的包时也是如此mathpazo
。如果它仍然有帮助,我提供了一个从我遇到此问题的上一个文档创建的 MWE。
\documentclass{article}
\usepackage{mathpazo,amsmath,stmaryrd}
\begin{document}
$\text{$a$}$
\end{document}
根据已经给出的答案,我猜测某个地方的某些宏最终会使用位图字体。
答案1
您不会收到错误但会收到警告,如果值很小您通常可以忽略警告。
字体大小可以(在文件中)以离散步骤或连续步骤的形式声明.fd
。在第一种情况下,如果当前请求的大小不在列表中,LaTeX 将选择下一个离散大小并警告您有关替换的信息。
对于位图字体也完全有可能使用连续声明 - 但这意味着对于每个新尺寸都必须创建一个新字体,旧的字体.fd
确实避免了这种情况以节省磁盘空间 - 现在这并不重要。
在大多数情况下,大小替换警告表明您正在使用一些历史文件,该文件也可以用于位图字体。通过在前面.fd
添加 可以避免许多警告。\RequirePackage{fix-cm}
\documentclass
答案2
St. Mary Road 字体已设置了光学尺寸、、、、和stmary5
。该文件是在无法任意调整大小的时候编写的,因为每个尺寸都意味着要生成一个新的位图文件。stmary6
stmary7
stmary8
stmary9
stmary10
Ustmary.fd
.pk
字体已转换为 Type1,但.fd
文件仍然无法识别。您可以使用以下方法教 LaTeX 使用任意大小:
\documentclass{article}
\usepackage{mathpazo,amsmath,stmaryrd}
\DeclareFontFamily{U}{stmry}{}
\DeclareFontShape{U}{stmry}{m}{n}
{
<-5.5> stmary5
<5.5-6.5> stmary6
<6.5-7.5> stmary7
<7.5-8.5> stmary8
<8.5-9.5> stmary9
<9.5-> stmary10
}{}
\begin{document}
$\text{$a$}$
\end{document}
这样.fd
就不会读取文件并且可以定义任意大小的字体。
答案3
它与光学尺寸有关。字体有额外的文件来告诉它在特定尺寸下看起来如何(粗略地说),如果没有你想要的尺寸的信息,你会收到警告,因此会使用另一个(接近的)尺寸。
您可以使用其他字体包来修复此问题,例如pxfonts
palatino:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{pxfonts}
\begin{document}
\fontsize{12pt}{13pt}\selectfont
This is a text in 12.0\,pt. XX
%
\fontsize{12.5pt}{13pt}\selectfont
XX This is a text in 12.5\,pt.
\end{document}