为每个部分创建幻灯片计数器

为每个部分创建幻灯片计数器

在 beamer 中,有没有办法让幻灯片计数器随着每个部分而重置(除了不会随着部分而重置的全局计数器)?

请参阅下文了解 MWE

\documentclass{beamer}

\begin{document}

\addtobeamertemplate{navigation symbols}{}{%
  \usebeamerfont{footline}%
  \usebeamercolor[fg]{footline}%
  \hspace{1em}%
  [0/0]  % slide counter per section
  \hspace{1em}%
  \insertframenumber/\inserttotalframenumber%
}

\section{Section 1}
\frame{Frame 1.1}  % Should display [1/3] in footer
\frame{Frame 1.2}  % Should display [2/3] in footer
\frame{Frame 1.3}  % Should display [3/3] in footer

\section{Section 2}
\frame{Frame 2.1}  % Should display [1/2] in footer
\frame{Frame 2.2}  % Should display [2/2] in footer

\end{document}

答案1

这应该可以实现你想要的效果:

\documentclass{beamer}

\newcommand{\insertsectiontotalframes}{\the\numexpr\insertsectionendpage-\insertsectionstartpage+1\relax}
\newcommand{\insertsectioncurrentframe}{\the\numexpr\insertpagenumber-\insertsectionstartpage+1\relax}

\setbeamertemplate{footline}[text line]{%
  \parbox{\linewidth}{\vspace*{-8pt}\insertsectioncurrentframe{} / \insertsectiontotalframes}}

\begin{document}

\section{Section 1}

\begin{frame}{1/3} \end{frame}
\begin{frame}{2/3} \end{frame}
\begin{frame}{3/3} \end{frame}

\section{Section 2}

\begin{frame}{1/2} \end{frame}
\begin{frame}{2/2} \end{frame}

\end{document}

幸运的是,beamer显然已经知道了当前部分的第一帧和最后一帧的帧数。有了这些知识,您可以轻松计算出相对于当前部分的当前帧数以及当前部分的总帧数。

PS:仔细观察beamerbasenavigation.sty会发现更多有趣的\insert...number宏。

相关内容