考虑以下 MWE。
\documentclass[handout]{beamer}
\newcounter{slidenumber}
\defbeamertemplate*{footline}{infolines theme frame plus slide}{
\setcounter{slidenumber}{\insertpagenumber}%
\addtocounter{slidenumber}{-\insertframestartpage}%
\addtocounter{slidenumber}{1}%
\leavevmode%
\hbox{%
\begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex,center]{date in head/foot}%
\insertframenumber(\alph{slidenumber}{})/ \inserttotalframenumber\hspace*{2ex}
\end{beamercolorbox}}%
\vskip0pt%
}
\setbeamertemplate{footline}[infolines theme frame plus slide]
\begin{document}
\begin{frame}
\only<handout:1>{Handout 1 of frame 1}
\only<handout:2>{Handout 2 of frame 1}
\end{frame}
\begin{frame}
Frame 2
\end{frame}
\end{document}
第 1 帧有两张幻灯片,我想将它们编号为1(a)/2
。1(b)/2
第 2 帧只有一张幻灯片,目前编号为2(a)/2
。但是,我想将其编号为2/2
。
一般来说,我希望有多个幻灯片的框架编号为
<frame_num>(<slide_num_in_frame>)/<total_frame_num>
以及只有一张幻灯片的帧,编号为
<frame_num>/<total_frame_num>
我怎样才能实现这个效果?
答案1
使用 ifthen 包是可能的。其 if 子句的语法为 \ifthenelse{⟨test⟩}{⟨then clause⟩}{⟨else clause⟩}。
\documentclass[handout]{beamer}
\usepackage{ifthen}
\newcounter{slidenumber}
\defbeamertemplate*{footline}{infolines theme frame plus slide}{
\setcounter{slidenumber}{\insertpagenumber}%
\addtocounter{slidenumber}{-\insertframestartpage}%
\addtocounter{slidenumber}{1}%
\leavevmode%
\hbox{%
\begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex,center]{date in head/foot}%
\ifthenelse{\insertframeendpage=\insertframestartpage}{
\insertframenumber/ \inserttotalframenumber\hspace*{2ex}}{
\insertframenumber(\alph{slidenumber}{})/\inserttotalframenumber\hspace*{2ex}}
\end{beamercolorbox}}%
\vskip0pt%
}
\setbeamertemplate{footline}[infolines theme frame plus slide]
\begin{document}
\begin{frame}
\only<handout:1>{Handout 1 of frame 1}
\only<handout:2>{Handout 2 of frame 1}
\end{frame}
\begin{frame}
Frame 2
\end{frame}
\end{document}