Beamer 书签带有 allowframbreaks

Beamer 书签带有 allowframbreaks

考虑以下使用这个的 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}

在此处输入图片描述

相关内容