beamer + cmbright + xelatex 不兼容?

beamer + cmbright + xelatex 不兼容?

我想使用 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}

生产

pdflatex

然而,用 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似乎存在特定的不兼容性。cmbrightxelatex

为什么会这样?有没有什么办法可以解决这个问题?

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}

代码输出

相关内容