Beamer 和 cmbright 中的大胆数学

Beamer 和 cmbright 中的大胆数学

我偶然发现了以下问题:文档

\documentclass{scrartcl}
\usepackage{cmbright,amsmath}
\usepackage[T1]{fontenc}
\begin{document}
    \mathversion{bold} $a \cap b \cup c = \beta$ {\fontseries{sb}\slshape a,b,c}
\end{document}

编译良好,得到。但是,如果我将文档类更改为beamer,则会为粗体数学字母选择错误的字体(大概是T1/cmbr/bx/n?)。文档:

\documentclass{beamer}
\usepackage{cmbright,amsmath}
\usepackage[T1]{fontenc}
\begin{document}
    \begin{frame}
        \mathversion{bold} $a \cap b \cup c = \beta$ {\fontseries{sb}\slshape a,b,c}
    \end{frame}
\end{document}

给出。我试图声明另一个数学版本:

\documentclass{beamer}
\usepackage{cmbright,amsmath}
\usepackage[T1]{fontenc}
\DeclareMathVersion{varbold}
\SetSymbolFont{letters}{varbold}{OML}{cmbrm}{b}{it}
\begin{document}
    \begin{frame}
        \mathversion{varbold} $a \cap b \cap c = \beta$ {\fontseries{sb}\slshape a,b,c}
    \end{frame}
\end{document}

或者甚至使用\SetSymbolFont{letters}{varbold}{T1}{cmbr}{sb}{sl}(当然,除了拉丁字母之外,其他一切都是垃圾,但这个问题先不管)也没有带来任何改进。发生了什么?

答案1

beamer为了获得无衬线数学,该包默认重新定义了许多字体。这与cmbright(通过重新定义粗体数学来使用bx而不是sb)相冲突。

由于您已经按照自己想要的方式设置了字体,因此可以通过添加以下行来抑制这些重新定义

\usefonttheme{professionalfonts}

到你的序言。你也可以使用professionalfonts包选项。

编辑

这一次,不是我提交了另一个关于如何用其他方法做到这一点的答案unicode-math

这是一个很好的答案!只需进行一些更改,它甚至可以支持标准的\mathversion{bold}\boldmath\boldsymbol命令。我还设置了类似于和 的\sbseries和命令。\textsb\bfseries\textbf

\documentclass[professionalfonts]{beamer}
\usepackage{unicode-math}
\defaultfontfeatures[FiraSans]{
  FontFace = {sb}{n}{FiraSans-Semibold.otf},
  FontFace = {sb}{sl}{FiraSans-SemiboldItalic.otf}
  FontFace = {sb}{it}{FiraSans-SemiboldItalic.otf}
}
\usepackage{FiraSans}
\usepackage{firamath-otf}

\DeclareRobustCommand\sbseries{\fontseries{sb}\selectfont}
\DeclareTextFontCommand{\textsc}{\sbseries}

\setmathfont[version=bold, FakeBold = 1.2]{Fira Math}

\begin{document}
    \begin{frame}
        \mathversion{bold} $a \cap b \cup c = \beta$ {\sbseries\slshape a,b,c}
    \end{frame}
\end{document}

Fira 示例

如果需要,您可以调整该FakeBold值以使字体稍微暗一些。

如果您不打算在同一文档中同时使用粗体和半粗体(这通常不是一个好主意),那么您可以将粗体粗细定义为半粗体。

答案2

使用 xelatex 或 lualatex 运行:

\documentclass[professionalfonts]{beamer}
\usepackage{amsmath}
\usepackage{FiraSans}
\usepackage[fakebold]{firamath-otf}
\begin{document}
\begin{frame}

$a \cap b \cap c = \beta$ 

$\setBold a \cap b \cap c = \beta\unsetBold$

\end{frame}
\end{document}

在此处输入图片描述

相关内容