我尝试使用 LuaLaTeX (LuaTeX v0.76/TeX Live 2013) 编译以下示例:
\documentclass{beamer}
\usepackage{fontspec}
\usepackage[ngerman]{babel}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}
\setmonofont{Latin Modern Mono}
\usetheme{Boadilla}
\title{\LaTeX}
\begin{document}
\frame{Test}
\end{document}
但是,我在控制台/日志文件中收到有关 Latin Modern Sans 的字体警告:
LaTeX Font Info: Try loading font information for OT1+LatinModernSans(0) on input line 15.
LaTeX Font Info: No file OT1LatinModernSans(0).fd. on input line 15.
LaTeX Font Warning: Font shape `OT1/LatinModernSans(0)/m/n' undefined
(Font) using `OT1/cmr/m/n' instead on input line 15.
我不明白为什么会收到此警告。如果我执行以下操作之一,它就会消失:
- 停止
\LaTeX
使用\title
- 删除该
\usetheme
行(大概是因为当时没有使用该标题) - 删除该行
\setsansfont{Latin Modern Sans}
;我不明白这一点,LuaTeX 不是默认加载 Latin Modern 吗?还是 Computer Modern?
我发现问题似乎出在\LaTeX
宏上。如果我将 hologo 包与 一起使用\hologo{LaTeX}
,也不会出现任何警告,但我想了解为什么这会导致问题,以及是否存在更深层次的问题。
控制台输出:
$ lualatex test.tex
This is LuaTeX, Version beta-0.76.0-2013121407 (rev 4627)
restricted \write18 enabled.
(./test.tex
LaTeX2e <2011/06/27>
Babel <3.9h> and hyphenation patterns for 33 languages loaded.
(/usr/share/texmf/tex/latex/beamer/base/beamer.cls
(/usr/share/texmf/tex/latex/beamer/base/beamerbasercs.sty)
Document Class: beamer 2012/10/15 development version 3.24 A class for typesetting presentations (rcs-revision 24853e6b98cf)
...
LaTeX Font Warning: Font shape `OT1/LatinModernSans(0)/m/n' undefined
(Font) using `OT1/cmr/m/n' instead on input line 15.
...
LaTeX Font Warning: Some font shapes were not available, defaults substituted.
...
答案1
事实上,如果您从某个标题中删除,警告就会消失\LaTeX
,这意味着主题是使用该命令的旧定义创建的,或者该定义与之不兼容LuaLaTeX
。
事实上“某人”指定某些文本必须使用标准旧 TeX 编码 OT!进行排版;通常,使用的开放类型字体的默认编码Luatex
是 EU2;由于您没有指定任何编码,因此旧编码由主题指定,并且应该需要更正主题(或其beamer
本身?我对此表示怀疑,但谁知道呢......)
xpatch
可以使用包来本地修补一些现有命令,而无需真正进入包中。