我最近重新安装了我的 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}
答案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。