我有一个包含 5 个部分的目录,我想要 5 个框架,每个框架上都有一个目录,其中包含其部分以高亮显示,其他部分以阴影显示。
到目前为止我所拥有的是以下内容:
\documentclass{beamer}
\usetheme{Madrid}
\begin{document}
\begin{frame}{Overview}
\only<1>{
\tableofcontents[sections={1}]
\tableofcontents[sections={2-5},sectionstyle=shaded,subsectionstyle=shaded]
}
\only<2>{
\tableofcontents[sections={1},sectionstyle=shaded,subsectionstyle=shaded]
\tableofcontents[sections={2}]
\tableofcontents[sections={3-5},sectionstyle=shaded,subsectionstyle=shaded]
}
\only<3>{
\tableofcontents[sections={1,2},sectionstyle=shaded,subsectionstyle=shaded]
\tableofcontents[sections={3}]
\tableofcontents[sections={4-5},sectionstyle=shaded,subsectionstyle=shaded]
}
\only<4>{
\tableofcontents[sections={1-3},sectionstyle=shaded,subsectionstyle=shaded]
\tableofcontents[sections={4}]
\tableofcontents[sections={5},sectionstyle=shaded,subsectionstyle=shaded]
}
\only<5>{
\tableofcontents[sections={1-4},sectionstyle=shaded,subsectionstyle=shaded]
\tableofcontents[sections={5}]
}
\end{frame}
\section{Section 1}
\begin{frame}{Frame 1}
\end{frame}
\section{Section 2}
\begin{frame}{Frame 2}
\end{frame}
\section{Section 3}
\begin{frame}{Frame 3}
\end{frame}
\section{Section 4}
\begin{frame}{Frame 4}
\end{frame}
\section{Section 5}
\begin{frame}{Frame 5}
\end{frame}
\end{document}
我想知道是否有更好的方法来做到这一点?
谢谢
答案1
输入此代码后\begin{document}
,它将执行以下操作:
\begin{frame}
\titlepage
\end{frame}
\begin{frame}
\frametitle{Plan}
\tableofcontents[pausesections]
\end{frame}
\AtBeginSection[]{
\begin{frame}
\frametitle{Plan}
\tableofcontents[currentsection]
\end{frame}}
答案2
您可以使用该currentsection
选项并在计数器中设置一个临时值section
。
\documentclass{beamer}
\usetheme{Madrid}
\newcommand\tocforsect[2]{%
\begingroup
\edef\safesection{\thesection}
\setcounter{section}{#1}
\tableofcontents[#2,currentsection]
\setcounter{section}{\safesection}
\endgroup
}
\begin{document}
\begin{frame}{Overview}
\only<1>{\tocforsect{1}{sectionstyle=shaded,subsectionstyle=shaded}}
\only<2>{\tocforsect{2}{sectionstyle=shaded,subsectionstyle=shaded}}
\only<3>{\tocforsect{3}{sectionstyle=shaded,subsectionstyle=shaded}}
\only<4>{\tocforsect{4}{sectionstyle=shaded,subsectionstyle=shaded}}
\only<5>{\tocforsect{5}{sectionstyle=shaded,subsectionstyle=shaded}}
\end{frame}
\section{Section 1}
\begin{frame}{Frame 1}
\end{frame}
\section{Section 2}
\begin{frame}{Frame 2}
\end{frame}
\section{Section 3}
\begin{frame}{Frame 3}
\end{frame}
\section{Section 4}
\begin{frame}{Frame 4}
\end{frame}
\section{Section 5}
\begin{frame}{Frame 5}
\end{frame}
\end{document}
答案3
对于普通列表来说,这很简单:
\setbeamercovered{transparent}% see beamer documentation p 190
\beamerdefaultoverlayspecification{<+>}% see beamer documentation p 89
不幸的是,这不起作用,\tableofcontents[pausesections]
因为这在内部使用了功能远不够强大的\pause
命令。
所以我尝试重新定义\pause
命令来调用\onslide
。实际上,根据beamer 文档第 78 页\pause
通常已经在内部使用\onslide
。
然而,似乎不可能在框架内定义带有参数的命令(并且\pause
有一个可选参数,再次参见beamer 文档第 78 页)并\pause
在帧开始时被覆盖。
因此,我在框架前面和\let
框架内部定义了一个新命令:
\documentclass{beamer}
\usetheme{Madrid}
\newcommand{\mypause}[1][+]{\onslide<#1>}
\begin{document}
\begin{frame}{Overview}
\setbeamercovered{transparent}% doc p 190
\let\pause\mypause
\tableofcontents[pausesections]
\end{frame}
\section{Section 1}
\begin{frame}{Frame 1}
\end{frame}
\section{Section 2}
\begin{frame}{Frame 2}
\end{frame}
\section{Section 3}
\begin{frame}{Frame 3}
\end{frame}
\section{Section 4}
\begin{frame}{Frame 4}
\end{frame}
\section{Section 5}
\begin{frame}{Frame 5}
\end{frame}
\end{document}
答案4
\documentclass{beamer}
\usetheme{Madrid}
\begin{document}
\begin{frame}{Contents}
\tableofcontents
\end{frame}
\section{Section 1}
\tableofcontents[currentsection]
\begin{frame}{Frame 1.1}
\end{frame}
\begin{frame}{Frame 1.2}
\end{frame}
\begin{frame}{Frame 1.3}
\end{frame}
\section{Section 2}
\tableofcontents[currentsection]
\begin{frame}{Frame 2.1}
\end{frame}
\begin{frame}{Frame 2.2}
\end{frame}
\begin{frame}{Frame 2.3}
\end{frame}
\section{Section 3}
\tableofcontents[currentsection]
\begin{frame}{Frame 3.1}
\end{frame}
\begin{frame}{Frame 3.2}
\end{frame}
\begin{frame}{Frame 3.3}
\end{frame}
\section{Section 4}
\tableofcontents[currentsection]
\begin{frame}{Frame 4.1}
\end{frame}
\begin{frame}{Frame 4.2}
\end{frame}
\begin{frame}{Frame 4.3}
\end{frame}
\section{Section 5}
\tableofcontents[currentsection]
\begin{frame}{Frame 5.1}
\end{frame}
\begin{frame}{Frame 5.2}
\end{frame}
\begin{frame}{Frame 5.3}
\end{frame}
\end{document}