我正在开发一个 beamer 模板,试图模仿我所在学院现有的 .ppt 模板。我现在的问题是,beamer 模板应该能够在一个演示文稿中为标题设置不同风格的框架。(不要问为什么这是必要的,我不知道)
在研究beamerbaseframe.sty
并尝试了框架选项之后,我想出了以下代码
\documentclass{beamer}
\usetheme{mytheme}
\begin{document}
\begin{frame}
left
\end{frame}
\begin{frame}[rightslide]
right
\end{frame}
\begin{frame}
should be left again :(
\end{frame}
\end{document}
使用beamerthememytheme.sty
\setbeamertemplate{headline}{%
\rule{.5\paperwidth}{14mm}
}
\define@key{beamerframe}{rightslide}[true]{%
\setbeamertemplate{headline}{\hfill\rule{.5\paperwidth}{14mm}}%
}
所以问题现在是:如何使用选项在幻灯片后恢复为默认标题rightslide
?
答案1
您可以定义两个不同的模板,并在新框架开始之前将标题重置为默认样式。
\documentclass{beamer}
\usepackage{etoolbox}
\defbeamertemplate{headline}{mydefault}{%
\rule{.5\paperwidth}{14mm}%
}
\defbeamertemplate{headline}{rightslide}{%
\emph{\hfill\rule{.5\paperwidth}{14mm}}%
}
\BeforeBeginEnvironment{frame}{%
\setbeamertemplate{headline}[mydefault]%
}
\makeatletter
\define@key{beamerframe}{rightslide}[true]{%
\setbeamertemplate{headline}[rightslide]%
}
\makeatother
\begin{document}
\begin{frame}
left
\end{frame}
\begin{frame}[rightslide]
right
\end{frame}
\begin{frame}
is left again
\end{frame}
\end{document}
答案2
采用与 Moloch Beamer 主题类似的方法突出框架,可以使用组将更改限制在这一帧中:
\documentclass{beamer}
\makeatletter
\setbeamertemplate{headline}{%
\rule{.5\paperwidth}{14mm}
}
\providebool{rightslide}
\define@key{beamerframe}{rightslide}[true]{%
\booltrue{rightslide}
\begingroup
\setbeamertemplate{headline}{\hfill\rule{.5\paperwidth}{14mm}}%
}
\pretocmd{\beamer@reseteecodes}{%
\ifbool{rightslide}{
\endgroup
\boolfalse{rightslide}
}{}
}{}{}
\makeatother
\begin{document}
\begin{frame}
left
\end{frame}
\begin{frame}[rightslide]
right
\end{frame}
\begin{frame}
is left again :)
\end{frame}
\end{document}