考虑以下使用这个的 MWE回答为每个帧生成一个书签:
\documentclass{beamer}
\usepackage{etoolbox}
\usepackage{lmodern}
\usepackage{lipsum}
\usepackage{bookmark}
\makeatletter
\apptocmd{\beamer@@frametitle}{%
\only<1>{\bookmark[page=\the\c@page,level=3]{#1}}}%
\makeatother
\begin{document}
\begin{frame}
\frametitle{Foo}
\end{frame}
\begin{frame}[allowframebreaks]
\frametitle{Baz}
\lipsum
\end{frame}
\end{document}
当allowframebreaks
给出选项时,这意味着将为由所述选项创建的每个新框架生成一个书签。我希望这些“延续”框架的书签具有正确的框架标题(即“Baz II”而不仅仅是“Baz”),或者仅为第一帧生成书签,而不是为由该allowframebreak
选项创建的帧生成书签。
答案1
在书签中插入计数
这种方法背后的基本思想是检查是否\insertcontinuationcount
大于 0。在这种情况下,延续计数将添加到书签中。
\documentclass{beamer}
\usepackage{etoolbox}
\usepackage{lmodern}
\usepackage{lipsum}
\usepackage{bookmark}
\makeatletter
\apptocmd{\beamer@@frametitle}{%
\only<1>{\bookmark[page=\the\c@page,level=3]{#1 \expandafter\ifnum\insertcontinuationcount>0\relax\insertcontinuationcount\fi}}}%
\makeatother
\begin{document}
\begin{frame}
\frametitle{Foo}
\end{frame}
\begin{frame}[allowframebreaks]
\frametitle{Baz}
\lipsum
\end{frame}
\end{document}
仅限第一帧的书签
这种方法与上面的方法非常相似。但现在,只有小于 2 时才会添加书签\insertcontinuationcount
,因为对于“正常”帧,它是 0;对于连续的第一帧,它是 1。
\documentclass{beamer}
\usepackage{etoolbox}
\usepackage{lmodern}
\usepackage{lipsum}
\usepackage{bookmark}
\makeatletter
\apptocmd{\beamer@@frametitle}{%
\only<1>{\expandafter\ifnum\insertcontinuationcount<2\relax\bookmark[page=\the\c@page,level=3]{#1}\fi}}%
\makeatother
\begin{document}
\begin{frame}
\frametitle{Foo}
\end{frame}
\begin{frame}[allowframebreaks]
\frametitle{Baz}
\lipsum
\end{frame}
\end{document}