Beamer 带有粗体框架标题:还以粗体打印数学表达式

Beamer 带有粗体框架标题:还以粗体打印数学表达式

我正在使用 Beamer 模板,该模板使用粗体字体作为框架标题。在某些幻灯片上,标题中还有数学表达式。我还想将数学表达式打印为粗体。我正在使用unicode-math并使用 进行编译lualatex。在同样使用 进行编译的 LaTeX 文本文档中lualatex,我在章节标题方面遇到了类似的问题。在那里,我能够使用代码片段修复它

\makeatletter
\g@addto@macro\bfseries{\boldmath}
\makeatother

来自互联网。这对于我的 Beamer 演示文稿使用不同字体的情况没有帮助。因此,我尝试

\makeatletter
\g@addto@macro\bfseries{\symbfit}
\makeatother

但是,在我的 Beamer 演示文稿中,使用此版本的代码片段会导致错误消息! LaTeX Error: \symbfitallowed only in math mode. 因此,将此代码片段添加到我的演示文稿源中似乎会导致 Beamer 尝试将此数学字体用于标题的所有部分,从而导致错误。我该如何解决这个问题?

完整的 MWE 是

\documentclass{beamer}
\usetheme{Verona}

\usepackage{amsmath}

\usepackage[mathbf=sym]{unicode-math}
\setmathfont{Fira Math}
\setmathfont[range=up]{Roboto}
\setmathfont[range=\int]{Fira Math}
\setmathfont[range=cal]{Stix Two Math}
\setmathfont[range={\lessapprox}]{Stix Two Math}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% the "problematic" code
\makeatletter
\g@addto@macro\bfseries{\symbfit}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\begin{frame}
    \frametitle{Test \(f_1(x)\)}
    test slide
    \[f_1(x)\]
    \[\symbfit{f_1(x)}\]
\end{frame}

\end{document}

如果我删除有问题的代码,结果如下: 幻灯片的屏幕截图显示标题中的数学表达式未以粗体打印,而主要部分显示 \symbfit 命令正在运行

这很好地说明,原则上,大胆的数学是有效的。

请注意,我不想在每个方法中添加代码来\frametitle手动使其工作。我想要一个通用的解决方案。

我正在使用 TexLive 2019,因为它可从 Ubuntu 20.04 的软件包源中获得。

23年7月5日编辑:我更正了关于在 LaTeX 文本文档中使用代码片段的说法。我使用了 for thatboldmath而不是symbfit,这在问题的第一个版本中是错误的。感谢用户 @samcarter_is_at_topanswers.xyz 质疑我的陈述,这导致了这次修正!

答案1

根据字体中包含的版本,\boldmath可以向框架标题字体添加一个简单的版本:

% !TeX TS-program = lualatex

\documentclass{beamer}
\usetheme{Verona}

\usepackage{amsmath}

\usepackage[mathbf=sym]{unicode-math}
\setmathfont{XITS Math}
\setbeamerfont{frametitle}{series=\bfseries\boldmath}

\begin{document}

\begin{frame}
    \frametitle{Test \(f_1(x)\)}
    test slide
    \[f_1(x)\]
    \[\symbfit{ f_1(x)}\]
\end{frame}

\end{document}

在此处输入图片描述

如果你的字体不支持此功能,你可以伪造它:

% !TeX TS-program = lualatex

\documentclass{beamer}
\usetheme{Verona}

\usepackage{amsmath}

\usepackage[mathbf=sym]{unicode-math}
\setmathfont{Fira Math}

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

\setmathfont[range=up]{Roboto}
\setmathfont[range=\int]{Fira Math}
\setmathfont[range=cal]{Stix Two Math}
\setmathfont[range={\lessapprox}]{Stix Two Math}

\setbeamerfont{frametitle}{series=\bfseries\boldmath}

\begin{document}

\begin{frame}
    \frametitle{Test \(f_1(x)\)}
    test slide
    \[f_1(x)\]
    \[\symbfit{ f_1(x)}\]
\end{frame}

\end{document}

在此处输入图片描述

相关内容