读出 .toc 文件,在 beamer 中自定义标题

读出 .toc 文件,在 beamer 中自定义标题

我正在编写自己的 beamer 主题,我有一些奇怪的想法来在 beamer 类中布局我的标题:我在与幻灯片开始的位置相对应的部分顶部和下方设置进度条,即:

----------
          第 1 部分

进度条设计如下:

\progressbar{\footerBarHeight}
\dimen0=\textwidth
\multiply\dimen0 by \insertframenumber
\divide\dimen0 by \inserttotalframenumber
\edef\progressbarwidth{\the\dimen0}
\leavevmode%
\begin{beamercolorbox}[wd=\textwidth,ht=.1ex,dp=.1ex]{progress bar}
    \begin{beamercolorbox}[wd=\progressbarwidth,ht=.1ex,dp=.1ex]{progress bar progress}
    \end{beamercolorbox}%
\end{beamercolorbox}%

因此,我的想法是使用 .toc 文件中的数据

\beamer@sectionintoc {1}{第 1 节}{2}{0}{1}
\defcounter {refsection}{0}\relax
\beamer@subsectionintoc {1}{1}{第 1.1 节}{7}{0}{1}
\defcounter {refsection}{0}\relax
\beamer@subsectionintoc {1}{2}{第 1.2 节}{10}{0}{1}
\defcounter {refsection}{0}\relax
\beamer@sectionintoc {2}{第 2 节}{13}{0}{2}
\defcounter {refsection}{0}\relax
\beamer@sectionintoc {3}{第 3 节}{22}{0}{3}

它提供章节开始的页码并将其与(例如\insertframenumber)进行比较,以对齐并打印三个章节标题\insertsection

我的问题:

(1)我可以使用这些数据吗?Beamer 中是否已定义任何变量来获取页码@sectionintoc

(2)有没有更简单的方法来打印所有三个章节的标题?(也许对某事进行模数迭代)。

答案1

(1)是的\insertsectionstartpage。请参阅手册第 65 页。

(2)是的,

\documentclass{beamer}

\begin{document}

\section{title of section 1}
\section{title of section 2}
\section{title of section 3}
\section{title of section 4}
\section{title of section 5}
\subsection{title of subsection 5-1}

\makeatletter
\def\beamer@endinputifotherversion#1{}
\def\beamer@sectionintoc#1#2#3#4#5{#2;}
\def\beamer@subsectionintoc#1#2#3#4#5#6{}
%\def\beamer@subsubsectionintoc#1#2#3#4#5#6#7{}

\frame{
    \@input{\jobname.toc}
}

\end{document}

相关内容