为什么 TeX 只能找到 11pt 和 12pt 字体的 tfm 文件,而找不到 10pt 字体的 tfm 文件?

为什么 TeX 只能找到 11pt 和 12pt 字体的 tfm 文件,而找不到 10pt 字体的 tfm 文件?

这个答案我做了一件不该做的事:我修改了字体度量文件cmsy10.tfm,并将其保存在我的工作 TeX 目录中,而没有更改名称。这产生了预期的效果:\hat{\mathcal C}由于字体度量的修改,编译包含的 LaTeX 文件产生了不同的帽子定位。

然而,这是通过

\documentclass[12pt]{article}

它也适用于11pt,但如果我尝试使用10pt,我会得到原始字体指标,尽管 的输出pdflatex显示使用了字体(与和cmsy10.pfb相同)!11pt12pt

为什么会发生这种情况?如何解决该问题?(对于一些初步测试来说,使用不变的文件名的方法相当诱人,因为原则上它非常简单。)

答案1

cmsy10.tfm确实已预加载。但是,当主字体大小不是 10pt 时,会再次读取度量文件,因为分别使用了scaled 109511ptscaled 1200和 12pt 的字体。

如果将修改后的命名cmsy10.tfm为并执行相同的modcmsy10.tfm更改cmsy5,则写入cmsy6cmsy7cmsy8cmsy9cmbsy5cmbsy6cmbsy7cmbsy8cmbsy9cmbsy10

\DeclareFontShape{OMS}{cmsy}{m}{n}{%
      <5><6><7><8><9><10>gen*modcmsy%
      <10.95><12><14.4><17.28><20.74><24.88>modcmsy10%
      }{}
\DeclareFontShape{OMS}{cmsy}{b}{n}{%
      <5><6><7><8><9>gen*modcmbsy%
      <10><10.95><12><14.4><17.28><20.74><24.88>modcmbsy10%
      }{}

序言中的内容应该能让你更轻松地步入正轨。

你还必须教导pdftex大家字体确实是旧字体。因此,你应该在序言中添加

\pdfmapline{+modcmsy10 CMSY10 <cmsy10.pfb}
\pdfmapline{+modcmsy5 CMSY5 <cmsy5.pfb}
\pdfmapline{+modcmsy6 CMSY6 <cmsy6.pfb}
\pdfmapline{+modcmsy7 CMSY7 <cmsy7.pfb}
\pdfmapline{+modcmsy8 CMSY8 <cmsy8.pfb}
\pdfmapline{+modcmsy9 CMSY9 <cmsy9.pfb}
\pdfmapline{+modcmbsy10 CMBSY10 <cmbsy10.pfb}
\pdfmapline{+modcmbsy5 CMBSY5 <cmbsy5.pfb}
\pdfmapline{+modcmbsy6 CMBSY6 <cmbsy6.pfb}
\pdfmapline{+modcmbsy7 CMBSY7 <cmbsy7.pfb}
\pdfmapline{+modcmbsy8 CMBSY8 <cmbsy8.pfb}
\pdfmapline{+modcmbsy9 CMBSY9 <cmbsy9.pfb}

modcmsy.map您还可以保存包含以下内容的文件

modcmsy10 CMSY10 <cmsy10.pfb
modcmsy5 CMSY5 <cmsy5.pfb
modcmsy6 CMSY6 <cmsy6.pfb
modcmsy7 CMSY7 <cmsy7.pfb
modcmsy8 CMSY8 <cmsy8.pfb
modcmsy9 CMSY9 <cmsy9.pfb
modcmbsy10 CMBSY10 <cmbsy10.pfb
modcmbsy5 CMBSY5 <cmbsy5.pfb
modcmbsy6 CMBSY6 <cmbsy6.pfb
modcmbsy7 CMBSY7 <cmbsy7.pfb
modcmbsy8 CMBSY8 <cmbsy8.pfb
modcmbsy9 CMBSY9 <cmbsy9.pfb

并调用\pdfmapfile{+modcmsy.map},效果相同。文件可以位于pdftex查找地图文件的任何位置。例如,在 GNU/Linux 系统上使用 TeX Live 时,可以

~/texmf/fonts/map/modcmsy/modcmsy.map

类似地,您可以将修改后的modcmsy10.tfm文件存储为

~/texmf/fonts/tfm/modcmsy/modcmsy10.tfm

(以及同一目录中的其他内容)。该\DeclareFontShape指令可以与\pdfmapfile自定义包中的行一起运行.sty,例如

~/texmf/tex/latex/modcmsy/modcmsy.sty

相关内容