Beamer:当前子部分中的帧的自定义计数器

Beamer:当前子部分中的帧的自定义计数器

我想要一个包含当前小节名称的 frametitle,后跟一个从 1 开始并随着当前小节中每个新帧而增加的计数器。

我在某处找到了以下解决方案,但我的问题是当我使用任何形式的覆盖时,这个计数器也会增加。

有人知道如何创建一个只按帧增加而不是按幻灯片增加的计数器吗?提前谢谢!

\documentclass{beamer}

% Subsection counter:
\newcounter{stappen}
\newcommand{\snumreset}{\setcounter{stappen}{0}}
\newcommand{\snum}{\stepcounter{stappen} \Roman{stappen}}

\begin{document}
\section{Section 1}
\subsection{Subsec 1}
\snumreset

\begin{frame}
  \frametitle{\subsecname\snum}
  \begin{itemize}
  \item<1-> bla
  \item<2-> counter should not increase
  \item<3-> counter should again not increase
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{\subsecname\snum}
  Counter should be at two. 
\end{frame}
\end{document}

答案1

\documentclass{beamer}

\newcounter{insub}
\AtBeginSubsection[]{\setcounter{insub}{0}}
\AtBeginEnvironment{frame}{\addtocounter{insub}{1}}
\setbeamertemplate{frametitle}{\subsecname{} - \theinsub}

\begin{document}

\subsection{test}
\begin{frame}{.}
    abc
    \pause 
    cdef
\end{frame} 

\begin{frame}{.}
content...
\end{frame}

\subsection{test}
\begin{frame}{.}
    abc
    \pause 
    cdef
\end{frame} 

\end{document}

答案2

您不需要定义自己的计数器,而是可以使用frame number不会随着每次覆盖而增加的计数器。

\documentclass{beamer}
\renewcommand{\insertframenumber}{\Roman{framenumber}}

\begin{document}
\section{Section 1}
\subsection{Subsec 1}


\begin{frame}
  \frametitle{\subsecname\insertframenumber}
  \begin{itemize}
  \item<1-> bla
  \item<2-> counter should not increase
  \item<3-> counter should again not increase
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{\subsecname\insertframenumber}
  Counter should be at two. 
\end{frame}
\end{document}

相关内容