![beamer + cmbright + xelatex 不兼容?](https://linux22.com/image/479176/beamer%20%2B%20cmbright%20%2B%20xelatex%20%E4%B8%8D%E5%85%BC%E5%AE%B9%EF%BC%9F.png)
我想使用 CM Bright 在 Beamer 幻灯片和 XeLaTeX 中显示公式。
使用 CM Bright 和 pdfLaTeX 非常简单。代码
\documentclass{beamer}
\usepackage{cmbright}
\begin{document}
\begin{frame}
Formula: \(F = o^r \mu_l^a\)
\end{frame}
\end{document}
生产
然而,用 XeLaTeX 编译的相同代码却
希腊字母 µ 仍被 CM Bright 版本取代,但拉丁字母全部为 CM Roman。
现在看起来cmbright
和 XeLaTeX 之间不兼容。但是,如果我对 执行相同的操作article
:
\documentclass{article}
\usepackage{cmbright}
\begin{document}
Formula: \(F = o^r \mu_l^a\)
\end{document}
并使用 XeLaTeX 进行编译,我得到
文本字体为 CM Roman,但公式始终为 CM Bright。(另请参阅这个答案。
因此,++beamer
似乎存在特定的不兼容性。cmbright
xelatex
为什么会这样?有没有什么办法可以解决这个问题?
PS:为什么是 XeLaTeX?因为我打算使用 OpenType 字体来制作文本。题外话,如果有人推荐哪种 OpenType 无衬线字体适合 CM Bright,请告诉我!
答案1
如果您按照链接问题中所述加载字体,您将获得所需的输出。
XeLaTeX 需要 OpenType 或 TrueType 字体,而不是 pdfLaTeX 使用的 Type1 字体。因此,要将 CMBright 与 XeLaTeX 结合使用以处理文本,您需要加载 OpenType 版本的字体。但是没有数学字体的 OpenType 版本,因此我们首先将 OpenType 字体加载为无衬线字体,并选择抑制对数学设置可能产生的no-math
更改。fontspec
然后我们加载cmbright
包,它将有效地加载数学字体。加载后,您可以再次更改 sans 字体cmbright
,但这实际上不会有效,因为即使在数学中,您最终也会得到 CMBright 和您随后设置的任何字体的混合,这看起来不太好。
% !TEX TS-program = XeLaTeX
\documentclass[professionalfonts]{beamer}
\usepackage[no-math]{fontspec}
\setsansfont{cmunb}[ %CMU Bright for text
Extension=.otf,
UprightFont=*mr,
ItalicFont=*mo,
BoldFont=*sr, % semibold
BoldItalicFont=*so, % semibold oblique
NFSSFamily=cmbr
]
\usepackage{cmbright} %CMU Bright for math
\begin{document}
\begin{frame}
Formula: \(F = o^r \mu_l^a\)
\end{frame}
\end{document}