[Tex/LaTex] appendixnumberbeamer package fails to count correct number of slides in beamer

beamerpdftex

I recently reinstalled my Miktex (version 2.9. Windows 10 64 bit).

I am not sure if it is relevant: I found that I can no longer compile my presentation slides written in beamer. So I follow the instruction online and installed beamer and translator package manually using MikTex Package Manager to fix the problem.

Here is the problem:
I find out that appendixnumberbeamer package fails to count the correct number of slides before \appendix. For example, I have 35 slides before \appendix and 4 slides after it. However, my slides show that I have only 4 slides and the slide number may show 35/4. The slide numbers after \appendix are correct.

I tried to compile the exact same file on my desktop, which has the same programs and system but MikTex was installed much earlier. The package works fine on my desktop and it gives me the correct number of slides. Does anyone know what might cause this problem?

Here is a mimum compatible code exmaple:

\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.

Best Answer

The problem is that in the commit https://github.com/josephwright/beamer/commit/cb9eed469a3e6d730d0fdbd950288c06927708e9#diff-a9851e406d02cf9fb3729ed1045df4d3 the definition of the total frame number was changed to global.

A dirty hack: in order to continue to use the appendixnumberbeamer package you could go back to a previous version of the beamerbasemisc.sty file, e.g. from https://raw.githubusercontent.com/josephwright/beamer/d46c01c35e839704109ae2cf34bd112de970910d/base/beamerbasemisc.sty and place it in the same folder as your .tex file.


Solution without the appendixnumberbeamer package:

\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}

Starting with beamer v. 3.49 you can emulate the behaviour of the appendixframenumber package by using \setbeamertemplate{page number in head/foot}[appendixframenumber] after your theme.

\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}