我想要一个包含当前小节名称的 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}