
我正在嘗試在投影機中自動實現幀標題的大寫,使得大寫忽略這些標題中的所有數學模式內容。我見過大寫框架標題,但是那裡的解決方案無法正確處理數學內容。為了忽略大寫的數學模式,我嘗試使用 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 在標題周圍添加了一組額外的{..}
(這就是為什麼在不使用大括號組的情況下使用時沒有收到語法錯誤的原因\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}