Закладки Beamer с allowframebreaks

Закладки Beamer с allowframebreaks

Рассмотрим следующий 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}

введите описание изображения здесь


Только закладки для первого кадра

Этот подход очень похож на тот, что выше. Но теперь закладка добавляется только если меньше \insertcontinuationcount2, поскольку он равен 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}

введите описание изображения здесь

Связанный контент