Marcadores do Beamer com permitframbreaks

Marcadores do Beamer com permitframbreaks

Considere o seguinte MWE que usa esteresponderpara gerar um marcador para cada quadro:

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

Quando allowframebreaksa opção é dada, isso significa que um marcador é gerado para cada um dos novos quadros criados pela opção mencionada. Quero que os marcadores desses quadros de "continuação" tenham o título do quadro adequado (ou seja, "Baz II" em vez de apenas "Baz") ou apenas gerem um marcador para o primeiro quadro e não para aqueles criados pela allowframebreakopção.

insira a descrição da imagem aqui

Responder1

Inserir contagem de contagem no marcador

A ideia básica por trás dessa abordagem é verificar se \insertcontinuationcounté maior que 0. Nesse caso, a contagem de continuação é adicionada ao marcador.

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

insira a descrição da imagem aqui


Apenas marcadores para o primeiro quadro

Esta abordagem é muito semelhante à acima. Mas agora, um marcador só é adicionado se \insertcontinuationcountfor menor que 2, porque é 0 para quadros "normais" ou 1 para o primeiro quadro de uma continuação.

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

insira a descrição da imagem aqui

informação relacionada