我有一个 Beamer 演示文稿,其中附录中有一些附加幻灯片。附加幻灯片只是为了以防有人问到具体问题;我不一定会用到它们。
我使用的主题会在每页底部打印当前帧数和总帧数。我的问题是总帧数包括附录中的所有“额外”帧。假设我有 20 个“真实”帧,然后附录中有 5 个额外帧。现在的问题是\inserttotalframenumber
(主题用来打印总帧数)返回 25。这会误导观众,因为我可能永远不会展示这 5 个额外帧中的任何一个。
理想的行为是\inserttotalframenumber
返回 20,而不是 25。如果我确实前进到附录框架之一,那么我希望该框架为“26/25”、“27/25”等等。如何做到这一点?
编辑:
我看到这是通过将计数器的值写入文档末尾的文件\inserttotalframenumber
中来定义的。我想实现我想要的行为的一种方法是执行类似beamerbasemisc.sty
\c@framenumber
.aux
\AtEndDocument{
\immediate\write\@auxout{\string\@writefile{nav}%
{\noexpand\headcommand{\noexpand\def\noexpand\inserttotalframenumber{\insertframenumber}}}}
}
在我的文档的最后一张“真实”幻灯片上。不过这似乎有点儿不妥。有没有更好的方法?
答案1
为此,我使用了以下宏:
\newcommand{\backupbegin}{
\newcounter{framenumberappendix}
\setcounter{framenumberappendix}{\value{framenumber}}
}
\newcommand{\backupend}{
\addtocounter{framenumberappendix}{-\value{framenumber}}
\addtocounter{framenumber}{\value{framenumberappendix}}
}
然后将奖励幻灯片放在两个命令之间:
\appendix
\backupbegin
\frame{\frametitle{One more thing}}
\backupend
这也会让您获得所需的编号。
答案2
我遇到了同样的问题并找到了答案在 stackoverflow 上。
答案很简单,只需包括appendixnumberbeamer
包裹:
\usepackage{appendixnumberbeamer}
答案3
您可以noframenumbering
在附录中为每个框架启用(未记录)选项。这也适用于在框架总数中省略标题页。
\begin{document}
\begin{frame}[plain,noframenumbering]
\titlepage
\end{frame}
...
\appendix
\begin{frame}[noframenumbering]
...
\end{frame}
\end{document}
不幸的是,此设置不会被 产生的其他帧继承allowframebreaks
。要解决此问题,请将以下内容添加到您的序言中。
\usepackage{etoolbox}
\makeatletter
\preto{\appendix}{%
\patchcmd{\beamer@continueautobreak}{\refstepcounter{framenumber}}{}{}{}}
\makeatother
答案4
这个伟大的命令\insertpresentationendpage
将解决您的问题。只需将其放在\appendix
备份幻灯片的开头即可。
\documentclass[t]{beamer}
\usepackage[absolute,overlay]{textpos}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{%
\begin{picture}(54,12.5)(0,0)
\put(0.9,0.52){%
\begin{minipage}[b][12.5mm][c]{112.5mm}
\raggedleft
\insertpagenumber/\insertpresentationendpage
\end{minipage}
}
\end{picture}
}
\begin{document}
\begin{frame}
slide in the main part
\end{frame}
\appendix
\section*{Backup}
\begin{frame}
\frametitle{backup}
not counting in the total frame number
\end{frame}
\end{document}
编辑:
作为大卫·Z在他的评论中指出,这在使用覆盖时不起作用。以下解决方法(窃自diabonas 的答案)解决了这个问题:
\documentclass[t]{beamer}
\usepackage[absolute,overlay]{textpos}
\setbeamertemplate{navigation symbols}{}
\def\insertpresentationendframe{\inserttotalframenumber}
\makeatletter
\g@addto@macro{\appendix}{\immediate\write\@auxout{\string\@writefile{nav}{\noexpand\headcommand{\noexpand\def\noexpand\insertpresentationendframe{\the\c@framenumber}}}}}
\makeatother
\setbeamertemplate{footline}{%
\begin{picture}(54,12.5)(0,0)
\put(0.9,0.52){%
\begin{minipage}[b][12.5mm][c]{112.5mm}
\raggedleft
\insertframenumber/\insertpresentationendframe
\end{minipage}
}
\end{picture}
}
\begin{document}
\begin{frame}
slide in the main part
\end{frame}
\begin{frame}
a frame with overlays
\begin{onlyenv}<1>
overlay1
\end{onlyenv}
\begin{onlyenv}<2>
overlay2
\end{onlyenv}
\end{frame}
\appendix
\section*{Backup}
\begin{frame}
\frametitle{backup}
not counting in the total frame number
\end{frame}
\end{document}
新的
从 beamer 版本 >= 3.49 开始,许多默认主题如果\setbeamertemplate{page number in head/foot}[appendixframenumber]
在主题后使用则可以自动对附录进行单独编号。
梅威瑟:
\documentclass{beamer}
\usetheme{Madrid}
\setbeamertemplate{page number in head/foot}[appendixframenumber]
\begin{document}
\begin{frame}
\frametitle{First slide}
\end{frame}
\appendix
\begin{frame}
content...
\end{frame}
\end{document}