我偶然发现了以下问题:文档
\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}
如果需要,您可以调整该FakeBold
值以使字体稍微暗一些。
如果您不打算在同一文档中同时使用粗体和半粗体(这通常不是一个好主意),那么您可以将粗体粗细定义为半粗体。