Beamer 讲义中的编号

Beamer 讲义中的编号

考虑以下 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)/21(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}

相关内容