為什麼即使我使用 lmodern,我也會收到有關計算機現代的警告?

為什麼即使我使用 lmodern,我也會收到有關計算機現代的警告?

我想使用字體大小為 13pt 的 KOMA 腳本(請參閱此處非常相關的問題:Koma 腳本與真實 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},但這對我來說似乎很奇怪(我想使用 lmodern,而不是電腦現代)。

我想忽略警告是可以的(PDF不包括cm),但我仍然想了解發生了什麼。我嘗試將字體大小的更改推遲到lmodern加載後,但這沒有幫助。

[ 德語相關問題,由 Markus Kohm 回答,建議使用lmodernhttp://www.komascript.de/node/1137]

答案1

該警告是由於 Computer Modern 字體僅以「離散」尺寸提供。問題在於,顯然,fontsize當 Computer Modern 仍然是預設字體時,Koma 類別過早處理該選項。

您可以透過在開始之前加載來刪除虛假警告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}

相關內容