beamer 在哪里使用标题模板?

beamer 在哪里使用标题模板?

我一直在研究 Beamer 的框架创建代码的内部结构,试图自定义我创建的主题。我的目标是在noframenumbering提供框架选项的幻灯片上隐藏页码。但这不是我的问题。在弄清楚如何做到这一点的过程中,我花了相当多的时间追踪内部结构,比如\beamer@@@@frame看看它在哪里实际使用了headline模板,然后那是我不知道该怎么做。

以下是我的总结思考我目前已经搞清楚了。(请记住,我对 TeX 不太熟悉,所以我可能会误用“调用”等术语。)在我的主文档中,我可能会使用命令\frame\begin{frame}。无论哪种方式,执行最终都会在宏中结束\beamer@framecommand。这反过来又调用\beamer@frame,然后调用\beamer@@@frame,然后又调用\beamer@@@@frame

看起来典型的执行路径\beamer@@@@frame

 % buried within conditionals
 \let\beamer@howtotreatframe\beamer@doseveralframes
% ...
\beamer@howtotreatframe

然后我去看看的定义\beamer@doseveralframes,这相当于

% stuff
\def\beamer@doifinframe{%
  \begin{beamer@frameslide}%
    #1%
  \end{beamer@frameslide}%
}
% stuff

然后我查看beamer@frameslide文件前面的环境定义。我看到它创建了一个框\beamer@frametitlebox来存储框架标题,然后在

\setbox\beamer@framebox=\vbox{%
  \nobreak\vbox{}\nobreak\par\nobreak\beamer@entrycode\nobreak%
  \nointerlineskip\unvbox\beamer@frametitlebox%
  % etc.
}
% ...
\beamer@undolabels
\beamer@framenotesend
\box\beamer@framebox

好的,这就是frametitle使用模板的地方(?),但我没有看到任何关于的内容headline,即使检查了我从这些快速代码片段中遗漏的许多宏的定义。

headline从另一端来看,我看到的唯一使用模板的地方是在

\def\ps@navigation{%
  \def\@oddhead{%
    % stuff
    \beamer@typesetheadorfoot{headline}%  (effectively \usebeamertemplate***{headline})
    % other stuff
  }%
}

但我没有看到它\ps@navigation,也\@oddhead没有在任何地方使用它,只有定义。缺少的环节是什么?

答案1

追踪beamer到底发生了什么就像试图解开煮过头的意大利面条。然而,grep可以提供一些起点:

beamer.cls

\RequirePackage{beamerbaserequires}

beamerbaserequires.sty

\RequirePackage{beamerbaseframecomponents}

beamerbaseframecomponents.sty

\def\ps@navigation{

这是定义新的页面样式 - 如plainempty。样式名称为navigation。定义oddheadjust 本质上是告诉 LaTeX 在奇数页的页眉中输入什么内容,如果文档是单面的,则在所有页面的页眉中输入什么内容。

和:

\pagestyle{navigation}

表示将其用作默认页面样式。

编辑:请注意,我是反向执行此操作grep,然后反转结果的顺序,以便beamer从类文件向前跟踪的使用情况。

相关内容