如何在 beamer 中为 ToC 框架选择不同的 frametitle 模板?

如何在 beamer 中为 ToC 框架选择不同的 frametitle 模板?

因此,在设计 beamer 主题时,我偶然发现了通过 pagestyle 选择页面特定模板的巧妙解决方案(标题页脚注不同的主题)。虽然这对很多模板都有效,但它对模板不起作用frametitle,正如你在我的 MWE 中看到的那样:

\documentclass{beamer}

\defbeamertemplate*{frametitle}{regular}{Regular Frametitle}
\defbeamertemplate{frametitle}{special}{Special Frametitle}

\makeatletter
\def\ps@navigation@sectionpage{%
    \setbeamertemplate{headline}{Special Headline}
    \setbeamertemplate{frametitle}[special]
    \setbeamertemplate{footline}{Special Footline}
}
\makeatother

\begin{document}
\begin{frame}
\frametitle{~}
This page shall have the regular frametitle
\end{frame}

\begin{frame}
\frametitle{~}
This page shall have the special headline, frametitle and footline
\makeatletter\thispagestyle{navigation@sectionpage}\makeatother
\end{frame}

\begin{frame}
\frametitle{~}
This page shall have the regular frametitle
\end{frame}
\end{document}

我想要实现的是,通过某种自动方式使包含的幻灯片的 framtitle 有所不同\tableofcontents,因此我想引入一个宏来选择特殊的页面样式然后弹出\tableofcontents。也许这不是最明智的解决方案,但是有没有其他方法可以实现与此页面样式选择相同的行为frametitle

答案1

frametitle 的问题在于,它由 beamer 专门处理。正如您在当前版本第 75 页上看到的(https://mirror.kumi.systems/ctan/macros/latex/contrib/beamer/doc/beameruserguide.pdf):

遇到命令时,框架标题不会立即排版\frametitle。相反,命令的参数存储在内部,并且只有在读取完整个框架后才会排版框架标题。这样您就可以访问可能使用该命令引入的⟨frame title text⟩和。⟨subframe title text⟩\framesubtitle

因此基本上这里发生了一些魔法,因此所描述的工作流程毫无用处。不过我找到了一种方法来实现我想要的行为,正如你可以在我怎样才能在 beamer 中的议程页面上自动显示框架标题?

相关内容