为什么尽管我使用 lmodern 但仍会收到有关计算机现代的警告?

为什么尽管我使用 lmodern 但仍会收到有关计算机现代的警告?

我想使用字体大小为 13pt 的 KOMA 脚本(请参阅此处的相关问题:Koma Script 和真实的 13pt)。请考虑以下文档:

\documentclass[fontsize=13pt,DIV=12]{scrartcl}

\usepackage{lmodern}
\usepackage[T1]{fontenc}

\begin{document}
test
\end{document}

我收到以下警告:

Class scrartcl Warning: Using fallback calculation to setup font sizes
(scrartcl)              for basic size `13pt' on input line 1564.

LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <13> not available
(Font)              size <12> substituted on input line 1564.

LaTeX Font Warning: Font shape `T1/cmr/m/n' in size <13> not available
(Font)              size <12> substituted on input line 100.

虽然我完全理解第一个警告(我可以接受计算的字体大小),但我不明白为什么 LaTeX 会抱怨计算机现代字体中缺少字体形状(我理解cmr代表计算机现代罗马字体?)。

\RequirePackage{fix-cm}我可以在 documentclass 之前使用来摆脱字体形状警告,但这对我来说似乎很奇怪(我想使用 lmodern,而不是 computer modern)。

我猜忽略警告是安全的(PDF 不包含 cm),但我仍然想了解发生了什么。我尝试将字体大小的更改推迟到lmodern加载之后,但没有帮助。

[ 相关德语问题,由 Markus Kohm 回答,建议使用lmodernhttp://www.komascript.de/node/1137]

答案1

出现警告是因为 Computer Modern 字体只适用于“离散”尺寸。问题在于,Koma 类显然fontsize过早处理了该选项,此时 Computer Modern 仍是默认字体。

您可以在开始之前通过加载来消除虚假警告fix-cm

\RequirePackage{fix-cm}
\documentclass[fontsize=13pt,DIV=12]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage{lmodern}

\begin{document}
test
\end{document}

你只会得到

Class scrartcl Warning: Using fallback calculation to setup font sizes
(scrartcl)              for basic size `13pt' on input line 1564.

这是不可避免的,除非你使用该silence包将其删除:

\RequirePackage{fix-cm}
\RequirePackage{silence}
\WarningFilter{scrartcl}{Using fallback}

\documentclass[fontsize=13pt,DIV=12]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{lmodern}


\begin{document}
test
\end{document}

一个不同的策略是

\documentclass[DIV=12]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\normalfont
\KOMAoption{fontsize=13pt}
\recalctypearea

\begin{document}
test
\end{document}

但我不推荐它。

答案2

如果你将示例修改为

\documentclass[fontsize=13pt,DIV=12]{scrartcl}

\stop
\usepackage{lmodern}
\usepackage[T1]{fontenc}


\begin{document}

test
\end{document}

cmr您会看到有关在加载之前出现的警告lmodern。因此,该类设置了一些字体,这些字体稍后会被覆盖,但仍会生成一些警告。

这样做可能是安全的(尽管我认为我以前没有尝试过这样做:-)

你不会收到任何警告

\renewcommand\familydefault{lmr}
\renewcommand\encodingdefault{T1}
\selectfont
\DeclareErrorFont{T1}{lmr}{m}{n}{10}
\documentclass[fontsize=13pt,DIV=12]{scrartcl}


\usepackage{lmodern}
\usepackage[T1]{fontenc}


\begin{document}

test
\end{document}

相关内容