我正在使用 Beamer 做一个演示文稿,它很长。它被分成几个部分,在每个部分结束时我都会休息一下。因此,我希望对当前幻灯片进行双计数器。例如:假设我目前在第 2 部分(由 20 张幻灯片组成)的第 3 张幻灯片,第 1 部分由 50 张幻灯片组成,第一个计数器将是 3/20,而第二个计数器将是 53/70(如果只有两个部分)。
这是我的工作环境:
\documentclass[t,10pt,xcolor=dvipsnames]{beamer}
\mode<presentation>
{
\usetheme{AnnArbor}
\setbeamercovered{transparent}
\useinnertheme{rounded}
\usecolortheme{spruce}
}
\setbeamercolor{section in head/foot}{fg=White}
\section{Sec1}
\subsection{Sub 1}
\begin{frame}{Fra 1}
\end{frame}
\begin{frame}{Fra 2}
\end{frame}
\begin{frame}{Fra 3}
\end{frame}
\section{Sec2}
\subsection{Sub 1}
\begin{frame}{Fra 1}
\end{frame}
\begin{frame}{Fra 2}
\end{frame}
\end{document}
有什么帮助吗?
答案1
不需要新的计数器,只需要一点计算。Beamer 将节的开始和结束页码存储在宏\insertsectionstartpage
和中\insertsectionendpage
。因此,可以通过以下方式计算节中的页数
\insertsectionendpage-\insertsectionstartpage+1
章节内的页码是
\insertframenumber-\insertsectionstartpage+1
其中\insertframenumber
存储当前帧的页码。
\patchcmd
使用从包中将这些修补etoolbox
到插入页脚的 Beamer 命令\beamer@@tmpl@footline
,您将在页脚的左侧获得部分页码计数器,在右侧获得总页码计数器。
代码
\documentclass[t,10pt,xcolor=dvipsnames]{beamer}
\usepackage{etoolbox}
\mode<presentation>
{
\usetheme{AnnArbor}
\setbeamercovered{transparent}
\useinnertheme{rounded}
\usecolortheme{spruce}
}
\setbeamercolor{section in head/foot}{fg=White}
\makeatletter
% change author box alignment
\patchcmd{\beamer@@tmpl@footline}% <cmd>
{center}% <search>
{left}% <replace>
{}% <success>
{}% <failure>
% add page to author box
\patchcmd{\beamer@@tmpl@footline}% <cmd>
{\usebeamerfont{author in head/foot}\insertshortauthor\expandafter\beamer@ifempty\expandafter{\beamer@shortinstitute}{}{~~(\insertshortinstitute)}}% <search>
{\def\sectotpage{\number\numexpr\insertsectionendpage-\insertsectionstartpage+1}%
\def\pageinsec{\number\numexpr\insertframenumber-\insertsectionstartpage+1}%
\rlap{\hspace*{2ex}\pageinsec{} / \sectotpage} \hfill
\usebeamerfont{author in head/foot}\insertshortauthor\expandafter\beamer@ifempty\expandafter{\beamer@shortinstitute}{}{~~(\insertshortinstitute)}}% <replace>
{}% <success>
{}% <failure>
\makeatother
\author{Author}
\begin{document}
\newcommand\nf{\frame{Frame in Section~\thesection.}}
\section{Sec 1}
\nf\nf\nf\nf\nf
\section{Sec 2}
\nf\nf\nf\nf\nf\nf
\section{Sec 3}
\nf\nf\nf\nf\nf\nf\nf
\end{document}