Beamer-Lesezeichen mit allowframebreaks

Beamer-Lesezeichen mit allowframebreaks

Betrachten Sie das folgende MWE, das dies verwendetAntwortum für jeden Frame ein Lesezeichen zu generieren:

\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}

Wenn allowframebreaksdie Option angegeben ist, bedeutet dies, dass für jeden neuen Frame, der durch die erwähnte Option erstellt wird, ein Lesezeichen generiert wird. Ich möchte, dass die Lesezeichen dieser „Fortsetzungs“-Frames entweder den richtigen Frametitel haben (also „Baz II“ statt nur „Baz“) oder dass nur ein Lesezeichen für den ersten Frame generiert wird und nicht für die Frames, die durch die allowframebreakOption erstellt werden.

Bildbeschreibung hier eingeben

Antwort1

Zählimpuls in Lesezeichen einfügen

Die Grundidee hinter diesem Ansatz besteht darin, zu prüfen, ob der Wert \insertcontinuationcountgrößer als 0 ist. In diesem Fall wird die Fortsetzungsanzahl zum Lesezeichen hinzugefügt.

\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}

Bildbeschreibung hier eingeben


Nur Lesezeichen für den ersten Frame

Dieser Ansatz ist dem obigen sehr ähnlich. Allerdings wird jetzt nur dann ein Lesezeichen hinzugefügt, wenn der Wert \insertcontinuationcountkleiner als 2 ist, da er bei „normalen“ Frames 0 und bei dem ersten Frame einer Fortsetzung 1 ist.

\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}

Bildbeschreibung hier eingeben

verwandte Informationen