
Ich versuche, Großbuchstaben für Frame-Titel in Beamer so zu automatisieren, dass Großbuchstaben alle Inhalte im Mathematikmodus in diesen Titeln ignorieren. Ich habe gesehenRahmentitel in Großbuchstaben, aber die Lösung dort kann mit mathematischen Inhalten nicht richtig umgehen. Um den Mathematikmodus für Großbuchstaben zu ignorieren, habe ich versucht, das Textcase-Paket zu verwenden, aber das hat ein unerwartetes Verhalten mit Frame-Titeln. Unten sehen Sie ein minimales Beispiel, das dieses unerwartete Verhalten mit zeigt \insertframetitle
. Die letzte Zeile im Inhalt des Frames wird wie erwartet angezeigt, aber diese Zeile verwendet nicht \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}
Antwort1
beamer fügt einen zusätzlichen Satz von {..}
um den Titel herum hinzu (weshalb Sie keinen Syntaxfehler erhalten haben, wenn Sie ihn \uppercase
ohne Klammerngruppe verwenden, es verhindert jedoch, dass MakeTextUppercase die Mathematik sieht. Also
Sie können also dieselbe implizit hinzugefügte Gruppe als Argumenttrennzeichen verwenden für\makeTextUppercase
\documentclass{beamer}
\usepackage[overload]{textcase}
\setbeamertemplate{frametitle}{%
{\expandafter\MakeTextUppercase\insertframetitle}%
}
\begin{document}
\begin{frame}{Title $a = \sin(b)$}
\end{frame}
\end{document}