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」ではなく「Baz II」) を持たせるか、またはオプションによって作成されたフレームではなく最初のフレームに対してのみブックマークを生成するようにしたいと思います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}

ここに画像の説明を入力してください

関連情報