为什么 babel 会使用 \babelfont 产生有关 \rmfamily 和 \ttfamily 的警告

为什么 babel 会使用 \babelfont 产生有关 \rmfamily 和 \ttfamily 的警告

我有 babel v3.34 一个简单的例子,其中我添加了一个无衬线字体系列,并\babelfont{sf}[Language=Default]{DejaVu Serif} 产生了这样的警告

软件包 babel 警告:以下字体不是 babel 标准系列:

  • \rmfamily / lmr [lmroman10-regular]:+tlig; 位于 10.95pt
  • \ttfamily / lmtt [lmmono10-regular]: at 10.95pt
    本质上没有什么问题,但“babel”不会设置脚本和语言。考虑用 \babelfont 定义一个新的系列。
\documentclass{beamer}
\usepackage[english]{babel}
\babelfont{sf}[Language=Default]{Deja Vu Serif}

\begin{document}
\begin{frame}{}
Test 
\end{frame}

\end{document}

为什么我需要添加罗马字体系列和电传字体系列?

(相当于 MWEfontspec产生结果而没有任何警告)

@JavierBezos

答案1

的主要目的\babelfont是一次性在多语言文档中定义不同语言所需的字体及其相应的语言系统(脚本和语言)。因此,如果您加载了 4 种语言,则\babelfont{rm}{FreeSerif}定义 4 种字体(当然还有它们的变体),这些字体可通过 随语言切换babel。它只是一个让事情变得更容易和对用户透明的工具。

\babelfont如果您设置了语言系统\setmainfont(或者不设置,取决于您的需要),那么在单语文档中没有必要使用。

babel假设(实际上,我假设 :-))如果您正在\babelfont为一个家族使用,您很可能想要定义其余的家族。如果不这样做,您会发现家族之间存在一些不一致之处。此检查是在文档的开头进行的,此时我们无法知道将使用哪些家族。

正如消息所解释的那样,不定义所有系列本质上没有什么错误。事实上,根本不使用本质上\babelfont也没有什么错误。但您必须意识到这可能会导致一些问题。这就是警告的真正原因。

答案2

该软件包babel通知您缺少衬线系列和单声道系列的定义。

\documentclass{beamer}
\usefonttheme{professionalfonts}
\usepackage[english]{babel}
\babelfont{rm}[Language=Default]{DejaVu Serif}
\babelfont{sf}[Language=Default]{DejaVu Serif}
\babelfont{tt}[Language=Default]{DejaVu Sans Mono}

\begin{document}
\begin{frame}{}
Test
\end{frame}

\end{document}

相关内容