我使用 beamer 为我的讲座制作演示文稿(我讨厌 PowerPoint)。每个演示文稿代表教科书的一章。因此,我需要 beamer 演示文稿中的章节编号与教科书章节中的章节编号相匹配。但是,由于我们有时会跳过章节,因此我必须使用\setcounter{section}{...}
。
在下面显示的代码中,第二张和第三张幻灯片的标题分别将节号正确显示为1
和9
。但是,第一张幻灯片上的目录将节号错误地显示为 和1
。2
目录似乎忽略了该\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}