
Я пытаюсь автоматизировать верхний регистр для заголовков кадров в Beamer таким образом, чтобы верхний регистр игнорировал весь контент математического режима в этих заголовках. Я виделЗаголовки фреймов заглавными буквами, но решение там не может правильно обрабатывать математическое содержимое. Чтобы игнорировать math-mode для верхнего регистра, я попытался использовать пакет 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
бимер добавляет дополнительный набор {..}
вокруг заголовка (именно поэтому вы не получили синтаксическую ошибку при использовании \uppercase
без группы фигурных скобок), однако это не позволяет MakeTextUppercase видеть математику. Так
Таким образом, вы можете использовать ту же неявно добавленную группу в качестве разделителя аргументов для\makeTextUppercase
\documentclass{beamer}
\usepackage[overload]{textcase}
\setbeamertemplate{frametitle}{%
{\expandafter\MakeTextUppercase\insertframetitle}%
}
\begin{document}
\begin{frame}{Title $a = \sin(b)$}
\end{frame}
\end{document}