我正在尝试将 Beamer 中的帧标题自动转换为大写,这样大写就会忽略这些标题中的所有数学模式内容。我见过大写框架标题,但那里的解决方案无法正确处理数学内容。为了忽略大写的数学模式,我尝试使用 textcase 包,但这会对框架标题产生意外行为。下面是一个最小示例,显示了这种意外行为。\insertframetitle
框架内容中的最后一行按我预期的方式显示,但该行未使用\insertframetitle
。
\documentclass{beamer}
\usepackage[overload]{textcase}
\setbeamertemplate{frametitle}{
\MakeUppercase{\insertframetitle} and \uppercase\insertframetitle
}
\begin{document}
\begin{frame}{Title $a = \sin(b)$}
\MakeUppercase\insertframetitle\\
\uppercase\insertframetitle\\
\MakeUppercase{Title $a = \sin(b)$}
\end{frame}
\end{document}
答案1
beamer 在标题周围添加了一组额外的(这就是为什么在使用没有括号组{..}
时没有出现语法错误的原因,但它阻止了 MakeTextUppercase 看到数学运算。所以\uppercase
因此,您可以使用相同的隐式添加组作为参数分隔符\makeTextUppercase
\documentclass{beamer}
\usepackage[overload]{textcase}
\setbeamertemplate{frametitle}{%
{\expandafter\MakeTextUppercase\insertframetitle}%
}
\begin{document}
\begin{frame}{Title $a = \sin(b)$}
\end{frame}
\end{document}