帶有allowframbreaks的Beamer書籤

帶有allowframbreaks的Beamer書籤

考慮下面使用這個的 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}

在此輸入影像描述

相關內容