![在运行时设置框架的框架选项](https://linux22.com/image/333542/%E5%9C%A8%E8%BF%90%E8%A1%8C%E6%97%B6%E8%AE%BE%E7%BD%AE%E6%A1%86%E6%9E%B6%E7%9A%84%E6%A1%86%E6%9E%B6%E9%80%89%E9%A1%B9.png)
我正在设计一个自定义主题。我想要实现的是,我想构造一个 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}