我用它beamer
来写一份演示文稿。我包含了该libertine
软件包来更改默认字体,并且我正在使用该professionalfonts
主题来避免与 beamer 的字体设置发生冲突。
然而,我不喜欢 Libertine 的等宽字体系列,所以我想将\tt
文本恢复为 Computer Modern。因此,我\renewcommand{\ttdefault}{cmtt}
在序言中提到了这一点。
问题是使用pdflatex
可以得到预期的效果,而使用 会中断lualatex
。有人能告诉我出了什么问题以及如何修复它吗?
这是 MWE
\documentclass{beamer}
\usefonttheme{professionalfonts}
\usepackage[T1]{fontenc}
\usepackage{libertine}
\renewcommand{\ttdefault}{cmtt}
\begin{document}
\begin{frame}
\begin{center}
\Huge\sc
Thanks!
{\Large\tt http://www.nice.website}
\end{center}
\end{frame}
\end{document}
和lualatex
:
和pdflatex
:
答案1
Seb 指出,该fontspec
软件包通常用于处理 LuaLaTeX 中的 (OpenType) 字体。不过,加载该软件包并非强制性要求(但使用 OpenType 字体有好处)。
根据浪荡手册,有一个软件包选项type1
(或nofontspec
)用于恢复为 所使用的 Type 1 字体。使用或pdflatex
进行编译时,此选项才有用。使用 时,它不会执行任何操作。lualatex
xelatex
pdflatex
修改后的文档(lualatex
和 的字体相同pdflatex
):
\documentclass{beamer}
\usefonttheme{professionalfonts}
\usepackage[T1]{fontenc}
\usepackage[type1]{libertine}
\renewcommand{\ttdefault}{cmtt}
\begin{document}
\begin{frame}
\begin{center}
\Huge\sc
Thanks!
{\Large\tt http://www.nice.website}
\end{center}
\end{frame}
\end{document}
如果没有该type1
选项,则在使用 Lua(La)TeX 或 Xe(La)TeX 时libertine
会自动加载。因此,字体编码将分别为 EU2 或 EU1。当使用( ) 编译 MWE 时,会出现警告,提示字体在 EU2 (EU1) 编码中不可用,而是使用替代字体。fontspec
lualatex
xelatex
cmtt
答案2
这是因为 LuaLaTeX 以不同的方式处理字体。
与你的 PDFLaTeX 选项等效的选项是
\usepackage{fontspec} % Font handling
\setmainfont[]{Linux Libertine O} % Main font is Linux Libertine
\setmonofont[]{CMU Typewriter Text} % Monospace font is Computer Modern Typewriter
为了更深入地了解 LuaLaTeX 中字体的情况,你可以看看Fontspec 包文档。