Beamer 帧编号见附录

Beamer 帧编号见附录

我有一个 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}

相关内容