Beamer:带有计数器或索引的后缀等效框架标题?

Beamer:带有计数器或索引的后缀等效框架标题?

我想知道如何在等效的帧标题后面加上计数器或索引。例如,当我有两张具有相同内容的幻灯片时\frametitle(例如“奇妙的标题“),它应该导致

Marvelous title (1)
Marvelous title (2)

我知道,手动添加“(1)”和“(2)”的工作量并不大,但我问自己是否可以自动完成。

答案1

这里有一个解决方案。每次排版框架标题时,我们都会向文件中写入一行aux。读回时,这会给我们一个使用该框架的次数计数。如果该计数大于 1,那么当我们遇到该框架标题时,我们需要附加该框架的编号,该编号由另一个计数给出。

注意事项:我们只在第一的帧的幻灯片。因此,如果出于某种原因跳过第一张幻灯片,可能会发生奇怪的事情。同样,可以使用覆盖将标题从一张幻灯片更改为另一张幻灯片。这不会检查这一点,如果这样做,可能会出现严重错误。

这是代码,它是我回答的代码的改编版 重复使用上一张 Beamer 幻灯片的标题

\documentclass{beamer}
%\url{https://tex.stackexchange.com/q/66274/86}
%\url{https://tex.stackexchange.com/q/65975/86}
\makeatletter
\def\beamer@checkframetitle{%
\begingroup
  \edef\temp{%
    \endgroup
    \noexpand\frametitle
    [\unexpanded\expandafter{\beamer@savedshortframetitle}]%
    {\unexpanded\expandafter{\beamer@savedframetitle}}%
  }
\temp
\@ifnextchar\bgroup\beamer@inlineframetitle{}}

\addtobeamertemplate{frametitle}{}{%
\only<1>{\immediate\write\@auxout{\string\beamer@countframes{max}{\beamer@frametitle}}}%
}

\long\def\beamer@@frametitle[#1]#2{%
  \beamer@ifempty{#2}{}{%
    \@ifundefined{beamer@framecount@max@#2}{%
    \gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space\usebeamertemplate*{frametitle continuation}\fi}}%
    }{%
    \ifnum\csname beamer@framecount@max@#2\endcsname>1\relax
    \beamer@countframes{cur}{#2}%
    \gdef\insertframetitle{{#2\beamer@autobreakcount\csname beamer@framecount@cur@#2\endcsname\relax{}\space\usebeamertemplate*{frametitle continuation}}}%
    \else
    \gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space\usebeamertemplate*{frametitle continuation}\fi}}%
    \fi}
  \gdef\beamer@frametitle{#2}%
  \gdef\beamer@shortframetitle{#1}%
  \global\let\beamer@savedshortframetitle\beamer@shortframetitle
    \global\let\beamer@savedframetitle\beamer@frametitle
}%
}
  \global\let\beamer@savedshortframetitle\@empty
    \global\let\beamer@savedframetitle\@empty

\def\beamer@countframes#1#2{%
  \@ifundefined{beamer@framecount@#1@#2}{%
    \expandafter\gdef\csname beamer@framecount@#1@#2\endcsname{1}%
  }{%
    \@tempcnta\csname beamer@framecount@#1@#2\endcsname\relax%
    \advance\@tempcnta by 1\relax
    \expandafter\xdef\csname beamer@framecount@#1@#2\endcsname{\the\@tempcnta}%
  }%
}

\makeatother

\begin{document}
\begin{frame}{The Frame Title}
A frame with a title
\end{frame}
\begin{frame}
A frame without a title
\end{frame}
\begin{frame}
\frametitle{The Next Frame Title}
A frame with a title
\end{frame}
\begin{frame}
A second frame without a title
\end{frame}
\begin{frame}{The Third Frame Title}
But not the third frame
\end{frame}
\begin{frame}{The Fourth Frame Title}
Another title,\pause another frame.
\end{frame}
\end{document}

结果:

同名投影仪框架的自动编号

相关内容