删除字体警告

删除字体警告

给出这个简单的 LaTeX 代码

\documentclass [spanish] {book}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{lmodern}

\begin{document}
    \frontmatter
    \tableofcontents
    \chapter{Hola}
\end{document}

我收到警告Font shape `T1/lmr/bx/sc' undefined(Font) using `T1/lmr/bx/n' instead`

我用西班牙语写作,使用了很多 TikZ,所以我必须小心不要破坏图片。我该如何摆脱它?我在字体方面做错了什么?

答案1

警告是不可避免的,除非使用低级别的代码。

问题是babel-spanish,默认情况下,要使用小写罗马数字,而不是像英语那样的小写数字。

然而,与欧洲现代字体(T1 编码的默认字体)相反,拉丁现代字体没有粗体小写字体。因此babel-spanish使用了一个技巧:它使用普通粗体字体中的大写字母来伪造字体,但尺寸要小一些(与下标相对应的尺寸)。

您有三种策略。前两种策略需要在之前添加一些代码\begin{document}

策略1

用 European Modern 中对应的字体替换不存在的 Latin Modern 字体。

\sbox0{%
  \fontseries{bx}\scshape
  \global\expandafter\let\csname T1/lmr/bx/sc/10\expandafter\endcsname\the\font
}

缺点:你需要对每个需要的字体大小都这样做。对于目录,这才是真正的问题,只需10要这样做(或10.95使用11pt选项,或1212pt选项)。

策略2

自从你知道将会使用伪造的小型大写罗马数字,避免只产生恼人警告的检查业务。

\makeatletter
%% lmodern has no boldface small caps and we know it
%% so we avoid all the warnings related to the faking business
\def\es@xlsc#1#2#3{%
  \leavevmode
  \hbox{\check@mathfonts\fontsize\sf@size\z@\selectfont#1{#3}}%
}
\makeatother

策略 3

使用大写罗马数字。

\usepackage[spanish,es-ucroman]{babel}

答案2

正如@Skillmon 所说,“问题”在于您在某个地方尝试使用套件中lmodern没有的字体(可能是部分标题中的粗体内容?我不知道),因此进行了替换。

如果您对替换感到满意,您可以将警告隐藏在地毯下。鉴于警告如下:

LaTeX Font Warning: Font shape `T1/lmr/bx/sc' undefined
(Font)              using `T1/lmr/bx/n' instead on input line 2.


Package spanish Warning: Replacing `T1/lmr/bx/sc' by 
(spanish)                faked small caps on input line 2.

LaTeX Font Warning: Some font shapes were not available, defaults substituted.

你可以使用这个你的\documentclass

\RequirePackage{silence}
\WarningFilter{latexfont}{Font shape `T1/lmr/bx/sc'}
\WarningFilter{spanish}{Replacing `T1/lmr/bx/sc'}
% I normally leave that last one alone, as a reminder I am shoving
% things under the carpet, but well...
\WarningFilter{latexfont}{Some font shapes were}

...哈拉,没有警告 ;-)

(但这是作弊行为,因此请谨慎使用,并且只有在您确定的情况下才可使用)。

顺便提一下,PGF-Tiz 与此无关!

相关内容