[Beamer/Latex]: 从不同部分获取\部分名称
[Beamer/Latex]: Getting \part name from different part
您好,我想在 beamer 演示文稿中创建一些我自己的 table 内容,其中将列出所有部分和所有部分。
到目前为止,我想出了这个解决方案来在一张幻灯片中列出所有 \tableofcontents
\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]?
好的,在我的一个 co-student 的帮助下,我找到了解决问题的办法。
\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 才能正常工作,但它应该工作得很好。我设法创建了 table 的内容,分为 4 个部分。
example
希望对大家有所帮助。
您好,我想在 beamer 演示文稿中创建一些我自己的 table 内容,其中将列出所有部分和所有部分。
到目前为止,我想出了这个解决方案来在一张幻灯片中列出所有 \tableofcontents
\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]?
好的,在我的一个 co-student 的帮助下,我找到了解决问题的办法。
\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 才能正常工作,但它应该工作得很好。我设法创建了 table 的内容,分为 4 个部分。
example
希望对大家有所帮助。