在运行时设置框架的框架选项

在运行时设置框架的框架选项

我正在设计一个自定义主题。我想要实现的是,我想构造一个 if 语句来处理框架的选项。例如,您可以看到以下代码:

\documentclass{beamer}

\makeatletter
    \ifnumequal{\c@framenumber}{1}{%
          % First frame
          %Set first frame options to [plain,t]
     }{%
          \ifnumequal{\c@framenumber}{\inserttotalframenumber}{
                  % Last frame
                  %Set last frame options to [plain,c]
          }{%
                 % Other frames
                 %set other frame options to [t]
           }%
      }%
\makeatother

\begin{document}

  \begin{frame}{First Frame}
     Top aligned
  \end{frame}

  \begin{frame}{Second Frame}
      Top aligned.
  \end{frame}

  \begin{frame}{Last Frame}
     Center aligned

  \end{frame}

 \end{document}

有人能告诉我这是否可能吗?

答案1

以下不会将框架选项设置为plain等,但会执行由此选项触发的命令。由于它在框架之前运行,因此必须测试框架编号0\totalframenumber-1

我添加了一个随机主题来识别该plain选项是否有效。

\documentclass{beamer}
\usepackage{etoolbox}

\makeatletter
\BeforeBeginEnvironment{frame}{%
    \ifnum\insertframenumber=0%
        %plain
        \def\beamer@entrycode{\vspace*{-\headheight}}%
        \def\beamer@exitcode{\vspace*{-\footheight}\thispagestyle{empty}}%
        %top
        \beamer@centeredfalse%
    \else%
    \ifnum\insertframenumber=\numexpr\inserttotalframenumber-1\relax%
            %plain
            \def\beamer@entrycode{\vspace*{-\headheight}}%
            \def\beamer@exitcode{\vspace*{-\footheight}\thispagestyle{empty}}%
            %center
            \beamer@centeredtrue%
    \else%      
            %top
            \beamer@centeredfalse%      
    \fi%
    \fi%
}
\makeatother

\usetheme{Berlin}

\begin{document}

  \begin{frame}{First Frame}
     Top aligned
  \end{frame}

  \begin{frame}{Second Frame}
      Top aligned.
  \end{frame}

  \begin{frame}{Last Frame}
     Center aligned
  \end{frame}

 \end{document}

在此处输入图片描述

相关内容