您好我想在beamer演示文稿中创建一些我自己的内容表,其中将列出所有部分列出的所有部分。
到目前为止,我想出了一个解决方案,在一张幻灯片中列出所有\ tableof内容
\begin{frame}
\begin{multicols}{2}
\setcounter{tocdepth}{1}
\foreach\x in {1,...,\totvalue{part}}{%
\vskip 0.4cm
\tableofcontents[part=\x]%
}%
\setcounter{tocdepth}{2}
\end{multicols}
\end{frame}
问题在于我得到了每个部分的部分,但没有列出部分名称。
有没有办法如何通过for-cycle的索引\ x访问部件名称?像\ insertpart [\ x]?
这样的东西答案 0 :(得分:1)
好的,在我的一位同学的帮助下,我想出了解决问题的方法。
\makeatletter
\AtBeginPart{
\write\@auxout{%
\noexpand\expandafter\noexpand\gdef\noexpand\csname
part\thepart name\noexpand\endcsname{\beamer@partname}}
}
\makeatother
\begin{document}
\frame{\maketitle}
\section*{Outline}
\begin{frame}{Outline of Presentation}
\begin{multicols}{2}
\setcounter{tocdepth}{1}
\foreach\x in {1,...,\totvalue{part}}{%
\medskip\expandafter\let\expandafter\partname
\csname part\x name\endcsname
\penalty-999
\textit{\partname}
\medskip
{\let\vfill=\relax\tableofcontents[part=\x]}\vfill
\penalty-999
}%
\setcounter{tocdepth}{2}
\end{multicols}
\end{frame}
不幸的是,我不能写下它究竟是如何工作的深刻描述,但基本上它在第一次运行pdflatex时需要部件名称并将它们保存到.aux文件中。然后在第二次运行pdflatex时,它会正确打印出来。然后对每个块添加负惩罚,因此partname不会从part-toc的其余部分中分离出来。
因此需要两次运行pdflatex才能正常工作,但它应该可以很好地工作。我设法创建了4个部分的内容表。
希望它会帮助别人。