Beamer \tableofcontents 在 \setcounter{section}{...} 之后无法显示正确的章节编号

Beamer \tableofcontents 在 \setcounter{section}{...} 之后无法显示正确的章节编号

我使用 beamer 为我的讲座制作演示文稿(我讨厌 PowerPoint)。每个演示文稿代表教科书的一章。因此,我需要 beamer 演示文稿中的章节编号与教科书章节中的章节编号相匹配。但是,由于我们有时会跳过章节,因此我必须使用\setcounter{section}{...}

在下面显示的代码中,第二张和第三张幻灯片的标题分别将节号正确显示为19。但是,第一张幻灯片上的目录将节号错误地显示为 和12目录似乎忽略了该\setcounter{section}{...}命令。

查看文件toc,确实如此

\beamer@endinputifotherversion {3.26pt}
\beamer@sectionintoc {1}{First}{2}{0}{1}
\beamer@sectionintoc {9}{Ninth}{3}{0}{2}

宏的第三和第五个参数\beamer@sectionintoc没有改变,以反映节号的非连续值。

为了让 beamer 在目录中显示正确的章节编号,是否还需要进行其他设置?

\documentclass{beamer}
% This gets rid of the font warnings
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\setbeamertemplate{section in toc}[sections numbered]

\setbeamercolor{headline colour}{fg=blue,bg=yellow}
\setbeamertemplate{headline}
{
   \leavevmode%
   \hbox{%
      \begin{beamercolorbox}[wd=\paperwidth,ht=4ex,dp=1.5ex]{headline colour}%
      \raggedright
      \hspace*{2em}%
      {\small%
         \ifx\insertsection\empty%
            \relax%
         \else
            Section \#\thesection\ \insertsectionhead%
         \fi
      }%
      \hspace*{2em}%
      \end{beamercolorbox}%
   }%
}

\begin{document}

\begin{frame}
   {Table of Contents}
   \tableofcontents
\end{frame}

\section{First}
\begin{frame}
   Something in the First section.
\end{frame}

\setcounter{section}{8}
\section{Ninth}
\begin{frame}
   Another thing in the Ninth section.
\end{frame}

\end{document}

答案1

该类beamer使用独立的计数器来记录目录,因此设置计数器是不够的section,还要设置 TeX 计数器\beamer@tocsectionnumber(必须使用原始命令对其进行操作)。我建议使用命令直接设置请求的数字:

\setnextsection{9}

这比将其设置为比想要的少一个更容易。

\documentclass{beamer}
% This gets rid of the font warnings
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\makeatletter
\newcommand{\setnextsection}[1]{%
  \setcounter{section}{\numexpr#1-1\relax}%
  \beamer@tocsectionnumber=\numexpr#1-1\relax\space}
\makeatother

\setbeamertemplate{section in toc}[sections numbered]

\setbeamercolor{headline colour}{fg=blue,bg=yellow}
\setbeamertemplate{headline}
{
   \leavevmode%
   \hbox{%
      \begin{beamercolorbox}[wd=\paperwidth,ht=4ex,dp=1.5ex]{headline colour}%
      \raggedright
      \hspace*{2em}%
      {\small%
         \ifx\insertsection\empty%
            \relax%
         \else
            Section \#\thesection\ \insertsectionhead%
         \fi
      }%
      \hspace*{2em}%
      \end{beamercolorbox}%
   }%
}

\begin{document}

\begin{frame}
   {Table of Contents}
   \tableofcontents
\end{frame}

\section{First}
\begin{frame}
   Something in the First section.
\end{frame}

\setnextsection{9}
\section{Ninth}
\begin{frame}
   Another thing in the Ninth section.
\end{frame}

\end{document}

在此处输入图片描述

相关内容