appendixnumberbeamer 包无法正确计算 beamer 中的幻灯片数量

appendixnumberbeamer 包无法正确计算 beamer 中的幻灯片数量

我最近重新安装了我的 Miktex(版本 2.9。Windows 10 64 位)。

我不确定这是否相关:我发现我无法再编译用 beamer 编写的演示幻灯片。因此,我按照在线说明使用 MikTex 包管理器手动安装了 beamer 和翻译器包来解决问题。

问题如下:我发现appendixnumberbeamer包无法计算出 之前的幻灯片数量\appendix。例如,我之前有 35 张幻灯片\appendix,之后有 4 张幻灯片。但是,我的幻灯片显示只有 4 张幻灯片,幻灯片编号可能显示35/4。之后的幻灯片编号\appendix是正确的。

我尝试在我的桌面上编译完全相同的文件,我的桌面有相同的程序和系统,但 MikTex 安装得更早。该软件包在我的桌面上运行良好,并给出了正确的幻灯片数量。有人知道是什么原因导致了这个问题吗?

这是一个最小兼容的代码示例:

\documentclass[mathserif,10pt]{beamer}

\usetheme{Boadilla}
\usecolortheme{beaver}


\usepackage{appendixnumberbeamer}


%----------------------------------------------
\title[Title]{Title}
\author[Last name, First name] % (optional, for multiple authors)
{First~Last}

\institute[Institute]{Institute} % (optional)


\date[\today] % (optional)
{ \today}


\begin{document}
\frame{\titlepage}
%-------------------------------------

\begin{frame}
\frametitle{Normal slide 1}
\end{frame}

\begin{frame}
\frametitle{Normal slide 2}
\end{frame}

\begin{frame}
\frametitle{Normal slide 3}
\end{frame}


\begin{frame}
\frametitle{Normal slide 4}
\end{frame}
%--------------------------------------------------

\appendix

\begin{frame}
\frametitle{Appendix slide 1}
\end{frame}

\begin{frame}
\frametitle{Appendix slide 2}
\end{frame}

\end{document}

Red Circle shows the wrong slide numbers

Slides numbers in the appendix are correct though.

答案1

问题在于提交https://github.com/josephwright/beamer/commit/cb9eed469a3e6d730d0fdbd950288c06927708e9#diff-a9851e406d02cf9fb3729ed1045df4d3总帧数的定义改为全局的。

一个肮脏的黑客:为了继续使用 appendixnumberbeamer 包,你可以回到该beamerbasemisc.sty文件的先前版本,例如从https://raw.githubusercontent.com/josephwright/beamer/d46c01c35e839704109ae2cf34bd112de970910d/base/beamerbasemisc.sty并将其放在与您的.tex文件相同的文件夹中。


无需appendixnumberbeamer软件包的解决方案:

\documentclass{beamer}

\usetheme{Boadilla}
\usecolortheme{beaver}

\newcounter{appendixframenumber}
\newcounter{appendixtotalframenumber}

\makeatletter
\setbeamertemplate{footline}
{%
  \leavevmode%
  \hbox{%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{author in head/foot}%
    \usebeamerfont{author in head/foot}\insertshortauthor\expandafter\ifblank\expandafter{\beamer@shortinstitute}{}{~~(\insertshortinstitute)}
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{title in head/foot}%
    \usebeamerfont{title in head/foot}\insertshorttitle
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,right]{date in head/foot}%
    \usebeamerfont{date in head/foot}\insertshortdate{}\hspace*{2em}%
    \ifnum\insertframenumber>\totvalue{documentendframe}
        % appendix frames
        \setcounter{appendixframenumber}{\insertframenumber}%
        \addtocounter{appendixframenumber}{-\totvalue{documentendframe}}%
        \setcounter{appendixtotalframenumber}{\inserttotalframenumber}%
        \addtocounter{appendixtotalframenumber}{-\totvalue{documentendframe}}%
        \theappendixframenumber /\theappendixtotalframenumber%
    \else%
        % frames from main part
        \insertframenumber /\total{documentendframe}%
    \fi%
    \hspace*{2ex} 
  \end{beamercolorbox}}%
  \vskip0pt%
}
\makeatother

\usepackage{totcount}
\newtotcounter{documentendframe}

\makeatletter
\renewcommand<>\appendix{%
  \only#1{\part{\appendixname}%
  \addtocontents{nav}{\protect\headcommand{\protect\beamer@appendixpages{\the\c@page}}}%
  \global\let\appendix\beamer@appendix}%
  \setcounter{documentendframe}{\insertframenumber}
}
\makeatother

\begin{document}
\frame{\titlepage}
%-------------------------------------

\begin{frame}
\frametitle{Normal slide 1}
\end{frame}

\begin{frame}
\frametitle{Normal slide 2}
\end{frame}

\begin{frame}
\frametitle{Normal slide 3}
\end{frame}

\begin{frame}
\frametitle{Normal slide 4}
\end{frame}
%--------------------------------------------------

\appendix

\begin{frame}
\frametitle{Appendix slide 1}
\end{frame}

\begin{frame}
\frametitle{Appendix slide 2}
\end{frame}

\end{document}

从 beamer v. 3.49 开始,您可以在主题之后appendixframenumber使用来模拟包的行为。\setbeamertemplate{page number in head/foot}[appendixframenumber]

\documentclass{beamer}

\usetheme{Boadilla}
\usecolortheme{beaver}

\setbeamertemplate{page number in head/foot}[appendixframenumber]

\begin{document}
\frame{\titlepage}
%-------------------------------------

\begin{frame}
\frametitle{Normal slide 1}
\end{frame}

\begin{frame}
\frametitle{Normal slide 2}
\end{frame}

\begin{frame}
\frametitle{Normal slide 3}
\end{frame}

\begin{frame}
\frametitle{Normal slide 4}
\end{frame}
%--------------------------------------------------

\appendix

\begin{frame}
\frametitle{Appendix slide 1}
\end{frame}

\begin{frame}
\frametitle{Appendix slide 2}
\end{frame}

\end{document}

答案2

appendixnumberbeamer软件包刚刚更新以修复此问题,请参阅https://github.com/jlelong/appendixnumberbeamer。新版本也已上传至CTAN。

相关内容