我最近才知道这个fix-cm
包的存在。我查看了 fixltx2e.pdf 中的文档,但我不清楚它到底修复了什么问题。我应该担心我一直以来得到的字形都不理想吗?或者我应该只担心日志是否包含类似以下内容:
LaTeX Font Warning: Size substitutions with differences
(Font) up to 13.12pt have occurred.
或者
LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <X> not available
?
我应该一直使用它吗?有什么缺点吗?
人们的担忧源于该文档的这一部分:
T1 和 TS1 编码的 CM 字体(又名“EC”)的外观尽可能与传统(OT1 编码)字体相似。特别是,许多不完整或丑陋的设计尺寸不再使用,大尺寸粗体无衬线字体的外观得到显著改善,并且避免了文本字体与相应数学字体之间的不匹配。
这是否适用于 PDF 中嵌入 Postscript Type 1 CM 字体的默认情况pdflatex
?有人可以提供使用时具有不同外观的输出示例吗fix-cm
?
在搜索信息时,我发现了软件包anyfontsize
,它显然允许对任何字体进行任意缩放,而不仅仅是 Computer Modern。这是否能实现与相同的功能fix-cm
,但更通用?fixltx2e 文档坚持认为必须在使用命令fix-cm
之前加载,如下所示:\documentclass
\RequirePackage
\RequirePackage{fix-cm}
\documentclass ...
并表示不要对任何其他包执行此操作。同时,anyfontsize
只需使用 正常加载即可\usepackage{anyfontsize}
。如果anyfontsize
完成相同的操作,为什么不需要先使用 加载\RequirePackage
?相反,如果可以在普通包中完成修复,为什么要fix-cm
如此严格?
感谢您对替代字体包的建议。假设我想使用 Computer Modern,并且我想坚持使用 TeX Live 2012 中的默认版本(我相信这是 CM 到 Postscript Type 1 的 Bluesky 转换),因为我听说这是最高质量的矢量化(至少如果你不需要 中的新符号lmodern
)。关于这个问题的讨论应该属于另一个问题,例如为什么拉丁现代语言会产生奇怪的输出?或者拉丁现代与 cm-super?。
答案1
通常,最好切换到更现代的字体包。fix-cm
如果您使用的是标准 Computer Modern 字体并注意到问题(例如日志文件中的那些消息),请使用。顾名思义,该包仅适用于字体cm
,此外还适用于 latex 符号字体lasy
。文档中提到的一个缺点是它可能导致生成一些大.pk
文件。
\RequirePackage
使用而不是来加载它的原因\usepackage
是,该命令\usepackage
明确检查它是否在之后调用\documentclass
,否则会发出警告。 \usepackage
是用于加载包的用户级命令。 \RequirePackage
是等效命令,通常用于包和类文件。根据文档, 的加载顺序fix-cm
很重要,尽管文档还指出,\usepackage
在前言中通过通常的方式无法工作的情况很少见。引用:
如果在序言中加载了该包,则任何 CM 字体可能已被使用,无法重新定义。然而,我们试图拦截最有可能出现的问题,即隐藏的 \normalfont。[...]
fix-cm
如果 EC 字体已预加载到 LATEX 格式文件中,则仍可能失败。但是,这种情况不太可能发生,并且只可能发生在自定义格式中。
anyfontsize
本质上是包的扩展type1cm
,而不是fix-cm
,它的目的更多的是允许字体大小的连续缩放,而不是加载某些固定的设计大小。
答案2
我会完全避免使用计算机现代,而使用拉丁现代
\usepackage{lmodern}
Latin Modern 是一套真正的手工矢量字体(CM 通过 Metafont 生成位图,CM-super 则从 CM 自动矢量化),提供更多字形、更多重音和更多变体。您可以在此处阅读更多相关信息:拉丁现代与 cm-super?
至于渲染拉丁现代字体时出现的任何问题,几乎肯定是由于 TeX 安装中的错误/文件丢失造成的,而不是拉丁现代字体集中的问题。