Заголовки кадров проекторного устройства, содержащие математические символы, прописными буквами

Заголовки кадров проекторного устройства, содержащие математические символы, прописными буквами

Я пытаюсь автоматизировать верхний регистр для заголовков кадров в 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}

Связанный контент