Beamer 模板具有不同的框架样式选项

Beamer 模板具有不同的框架样式选项

我正在开发一个 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}

在此处输入图片描述

相关内容