将章节标题添加到框架列表 - \insertsection 不起作用

将章节标题添加到框架列表 - \insertsection 不起作用

通过答案的帮助有没有什么办法可以用投影仪生成帧列表?我成功创建了框架列表。但我还想包括章节标题之间。这个答案不幸的是它对我来说不起作用,因为我需要不受影响的原始 ToC。

因此,我想我可以创建一个命令\sectioninlbf,每次执行后都会调用它\section(以后可以自动执行...),并在 lbf 文件中创建一个新的内容行。然而\insertsection命令似乎被完全忽略了。

我究竟做错了什么?

平均能量损失

\documentclass{beamer}

\usepackage{hyperref}

\makeatletter
\newcommand\listofframes{\@starttoc{lbf}}
\makeatother

\makeatletter
\addtobeamertemplate{frametitle}{}{%
    \mode<presentation>
    {
    \only<1>{
    \hypertarget{\insertframetitle}{}%
          \addcontentsline{lbf}{section}{\protect\makebox[2em][l]{%
          \protect\usebeamercolor[fg]{structure}\scriptsize\insertframenumber\hfill}%
          \ifx\insertframesubtitle\@empty%
              \scriptsize\protect\hyperlink{\insertframetitle}{\insertframetitle}%
          \else%
              \scriptsize\protect\hyperlink{\insertframetitle}{\insertframesubtitle}%
          \fi%
          \par}%
    }
    }
}
\makeatother

\newcommand{\sectioninlbf}{
\addcontentsline{lbf}{section}{%
        \vspace{0.3\baselineskip}
        \protect\footnotesize%
        \protect\insertsection Here I want the section title.\par}%
}

\begin{document}

\begin{frame}
\frametitle{General outline}
\tableofcontents[hideallsubsections]
\end{frame}

\begin{frame}
\frametitle{List of Frames}
\listofframes
\end{frame}

\section{Test section one}\sectioninlbf

\begin{frame}
\frametitle{Test Frame One}
test
\end{frame}

\section{Test section two}\sectioninlbf
\begin{frame}
\frametitle{Test Frame Two}
\framesubtitle{Test Frame Two Subtitle}
test
\end{frame}
\begin{frame}
\frametitle{Test Frame Three}
\uncover<1->{test}
\uncover<2->{test}
\uncover<3->{test}
\end{frame}

\end{document}

在此处输入图片描述

更新

由于 Sam Carter 的回答改变了我最初的方法,我需要扩展 MWE 以包含更多要求:如果存在 framesubtitle,framesubtitle 应该替换目录中的 frametitle。还需要帧号。我还使用不同的 frametitle 模板,其中一些将 frametitles 和 framesubtitles 添加到目录中,而另一些则不添加。所以我不知道修补 frametitle 的基本命令是否是个好主意,除非存在开/关开关。

答案1

基于https://tex.stackexchange.com/a/17233/36296

我看到你问题中的两个要求:

  1. “正常”目录应该仍然可用:\tableofcontents[hideallsubsections]

  2. 应该与覆盖一起工作:我稍微修改了代码,以便只有框架中的第一个幻灯片被添加到目录中。

  3. 显示帧数

  4. 包括字幕(如果有)


\documentclass{beamer}

\makeatletter
\addtobeamertemplate{frametitle}{}{%
    \only<1>{%
        \addtocontents{toc}{%
         \protect\beamer@subsectionintoc{\the\c@section}{0}{%
                    \insertframenumber\quad%
              \ifx\insertframesubtitle\@empty%
                  \insertframetitle%
              \else%
                  \insertframesubtitle%
              \fi%
         }{\the\c@page}{\the\c@part}{\the\beamer@tocsectionnumber}%
        }%
    }%
}%
\makeatother

\begin{document}

\begin{frame}
\tableofcontents[hideallsubsections]
\end{frame}

\begin{frame}
\tableofcontents
\end{frame}

\section{First Section}

\begin{frame}{First frame}
Text
\end{frame}

\begin{frame}{Second frame}
Text
\end{frame}



\section{Second Section}

\begin{frame}
\frametitle{Third frame}
\framesubtitle{mySubtitle}
Text
\end{frame}

\begin{frame}
\frametitle{Fourth frame}
Text
\pause
more text
\end{frame}

\end{document}

在此处输入图片描述

答案2

答案最终非常简单:

应该使用\insertsection未记录的(?) ,并且一切都按预期工作。\secname

\newcommand{\sectioninlbf}{
\addcontentsline{lbf}{section}{%
        \vspace{0.3\baselineskip}
        \protect\footnotesize%
        \secname\par}%
}

将导致:

在此处输入图片描述

相关内容