有没有办法beamer
获取当前活动主题的字符串名称?我想编写一个基于 beamer 的类,该类 (1) 如果用户未指定主题,则加载特定主题,并且 (2) 根据加载的主题执行某些修改。
以下是我正在寻找的 MWE:
\documentclass[11pt]{beamer}
\usepackage{xstring}
\usepackage{etoolbox}
\AtEndPreamble{
\makeatletter
\IfStrEqCase*{\beamer@theme}{
{default}{%
\usetheme{Berlin}
}{Madrid}{%
% do something
}{metropolis}{%
% do something else
}%
}[]
\makeatother
}
\begin{document}
\begin{frame}{Title}
Hello World
\end{frame}
\end{document}
答案1
如果加载了某些主题文件,您可以使用钩子来更改变量:
\documentclass{beamer}
\def\beamertheme{default}
\AddToHook{file/beamerthememoloch.sty/after}{\def\beamertheme{moloch}}
\AddToHook{file/beamerthemeMadrid.sty/after}{\def\beamertheme{Madrid}}
\usetheme{Madrid}
\begin{document}
\begin{frame}{Title}
Hello World \beamertheme
\end{frame}
\end{document}
(请记住,默认主题始终会被加载,即使它的某些部分后来被其他主题覆盖)