在 beamer 中,我使用一种惯例,即插入章节标题作为框架标题,然后提供更具体的标题作为副标题。在这种情况下,我认为在框架副标题后面显示“子框架”编号比在框架标题后面显示更有意义,这似乎是标准的。
我“借用”了 beamerbaselocalstructure.sty 的以下部分
\long\def\beamer@@frametitle[#1]#2{%
\beamer@ifempty{#2}{}{%
\gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space\usebeamertemplate*{frametitle continuation}\fi}}%
\gdef\beamer@frametitle{#2}%
\gdef\beamer@shortframetitle{#1}%
}%
}
和
\mode
<all>
{
\let\beamer@aftersubtitle=\relax
\newcommand<>\framesubtitle[1]{\only#2{\beamer@ifempty{#1}{}{\gdef\insertframesubtitle{{#1}}\beamer@aftersubtitle}}}
}
并将其修改为如下格式并放入 Beamer 文档中:
\makeatletter
\long\def\beamer@@frametitle[#1]#2{%
\beamer@ifempty{#2}{}{%
\gdef\insertframetitle{{#2}}%
\gdef\beamer@frametitle{#2}%
\gdef\beamer@shortframetitle{#1}%
}%
}
\mode
<all>
{
\let\beamer@aftersubtitle=\relax
\renewcommand<>\framesubtitle[1]{\only#2{\beamer@ifempty{#1}{}{\gdef\insertframesubtitle{{#1\ifnum\beamer@autobreakcount>0\relax{}\space\usebeamertemplate*{frametitle continuation}\fi}}\beamer@aftersubtitle}}}
}
\makeatother
它几乎有效:在第一帧中,字幕显示为“字幕 I”,但在第二帧(自动断开)中,字幕变成了“字幕 II II”,而我想要的是“字幕 II”。我搞不清楚代码的哪一部分导致“II”重复出现?
我知道我不应该像这样乱搞,因为 beamer 可能有一个适当的界面来重新定义框架字幕,但我根本不知道。