beamer 的字体设置
在使用 beamer
文档类的时候, 可能会有需要更换字体.
如果按照 article
的方式设置正文字体:
1 | \documentclass{beamer} |
会发现字体并没有发生变化
查阅 texdoc beamer
的 18.1 节会发现如果想使用其他字体,
需要设置 \usefonttheme{professionalfonts}
,
但是添加了该命令后修改依旧失败.
在群里咨询后得知, \setmainfont{Fira Sans}
命令修改的字体为 rmfamily
, 默认为衬线体.
所以要先将字体设置为衬线体 \usefonttheme{serif}
,
再进行修改:
1 | \documentclass{beamer} |
另外, 因为 beamer
文档类默认正文使用无衬线体,
于是也可以偷鸡地设置 \setsansfont{Fira Sans}
但是这样做会导致数学模式的 \mathrm
变成衬线体
1 | \documentclass{beamer} |
在 texdoc fontspec
中查找原因, 可以在 3.2 节 Maths fonts
adjustments 中找到
即在默认设置下, fontspec
宏包会将数学字体设置成
Computer Modern
, 于是我们需要用 no-math
选项来阻止它, 同时 \mathrm{d}
也会调用
rmfamily
的字体, 我们将它改为 \mathsf{d}
:
1 | \documentclass{beamer} |
这个暂时不知道是什么原因导致的. 如果想正文和数学公式都使用 Fira
系列的字体, 同时保留衬线字体, 可以如下设置: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15\documentclass{beamer}
% \usepackage[no-math]{fontspec}
\usepackage{unicode-math}
\usefonttheme{serif}
% \setsansfont{Fira Sans}
\setmainfont{Fira Sans}
\setsansfont{CMU Serif}
\setmathfont{Fira Math}
\begin{document}
\begin{frame}
Handgloves, $\sin$, $\mathrm{Handgloves}$
\textsf{this is CMU Serif}
\end{frame}
\end{document}
如果设置中文字体, 使用 ctexbeamer
文档类并设置
\setCJK(main, sans, mono)font
, 类比上文即可.