![Beamer:目录仅在包含小节的章节之前出现](https://linux22.com/image/259604/Beamer%EF%BC%9A%E7%9B%AE%E5%BD%95%E4%BB%85%E5%9C%A8%E5%8C%85%E5%90%AB%E5%B0%8F%E8%8A%82%E7%9A%84%E7%AB%A0%E8%8A%82%E4%B9%8B%E5%89%8D%E5%87%BA%E7%8E%B0.png)
我的演示文稿由多个部分组成。有些部分包含子部分,有些则不包含。我希望 Beamer 在每个子部分之前以及每个不包含其他子部分的部分之前显示目录。
目前,我在序言中写道:
\AtBeginSection[] {
\begin{frame}<beamer>
\frametitle{Inhalt} %
\tableofcontents[currentsection]
\end{frame}
}
\AtBeginSubsection[] {
\begin{frame}<beamer>
\frametitle{Inhalt} %
\tableofcontents[currentsubsection]
\end{frame}
}
因此,如果一个部分由多个子部分组成,则 Beamer 会在部分的第一个子部分之前显示两次目录,一次显示部分,一次显示子部分。我认为这太丑了。我该怎么办?
答案1
您可以非常简单地使用 TeX 条件。唯一的缺点(或功能)是,对于带有子节的节,第一个 ToC 不会“遮蔽”后面的子节。基本上,我们告诉 LaTeX:在节中,制作 ToC 并记住false
。在子节中,如果您看到true
制作 ToC,并记住true
。
\documentclass{beamer}
\newif\iflattersubsect
\AtBeginSection[] {
\begin{frame}<beamer>
\frametitle{Inhalt} %
\tableofcontents[currentsection]
\end{frame}
\lattersubsectfalse
}
\AtBeginSubsection[] {
\iflattersubsect
\begin{frame}<beamer>
\frametitle{Inhalt} %
\tableofcontents[currentsubsection]
\end{frame}
\fi
\lattersubsecttrue
}
\title{TITLE}
\author{AUTHOR}
\begin{document}
\begin{frame}\maketitle\end{frame}
\section{SECT I}
\subsection{I.1}
\begin{frame}I.1\end{frame}
\subsection{I.2}
\begin{frame}I.2\end{frame}
\section{SECT II}
\begin{frame}II frame 1\end{frame}
\begin{frame}II frame 2\end{frame}
\section{SECT III}
\subsection{III.1}
\begin{frame}III.1\end{frame}
\subsection{III.2}
\begin{frame}III.2\end{frame}
\end{document}
答案2
一个简单的测试可以检查是否sectionstartpage
等于subsectionstartpage
并采取相应的行动。下面的示例将在这种情况下隐藏部分的目录,但隐藏子部分的目录将以相同的方式工作。
\documentclass{beamer}
\AtBeginSection[] {
\ifnum\insertsubsectionstartpage=\insertsectionstartpage
\relax%
\else%
\begin{frame}<beamer>
\frametitle{Inhalt} %
\tableofcontents[currentsection]
\end{frame}
\fi%
}
\AtBeginSubsection[] {
\begin{frame}<beamer>
\frametitle{Inhalt} %
\tableofcontents[currentsubsection]
\end{frame}
}
\title{TITLE}
\author{AUTHOR}
\begin{document}
\begin{frame}\maketitle\end{frame}
\section{SECT I}
\subsection{I.1}
\begin{frame}I.1\end{frame}
\subsection{I.2}
\begin{frame}I.2\end{frame}
\section{SECT II}
\begin{frame}II frame 1\end{frame}
\begin{frame}II frame 2\end{frame}
\section{SECT III}
\subsection{III.1}
\begin{frame}III.1\end{frame}
\subsection{III.2}
\begin{frame}III.2\end{frame}
\end{document}