Beamer:导航栏跳转到第一帧的最后一张幻灯片

Beamer:导航栏跳转到第一帧的最后一张幻灯片

我在 beamer 中使用Frankfurt-theme。当我使用导航栏时,演示文稿会“跳转”到该部分的第一张幻灯片(演示文稿中仅显示“A”,请参阅 mwe)。但是,我通常在演示文稿之后使用导航栏。因此,演示文稿最好跳转到第一帧的最后一张幻灯片(例如,演示文稿中显示“AB”,请参阅 mwe)。有没有办法实现这种效果?如何实现?

\documentclass[xcolor=dvipsnames,onlyslideswithnotes,t]{beamer}
\setbeamertemplate{footline}[frame number]
\usetheme{Frankfurt} 

\setbeamertemplate{navigation symbols}{}

\begin{document}
\section{Jump}
\begin{frame}
A \pause
B 
\end{frame}

\begin{frame}
CD
\end{frame}

\section{Hide}
\begin{frame}
EF
\end{frame}

\end{document}

(注:问题Beamer:如何导航到下一帧的最后一张幻灯片似乎与我的问题有关。)

答案1

beamerbasenavigation.sty此行为受(第 734-741 行)控制

\def\beamer@link(#1/#2){%
  \def\beamer@goto{{Navigation#1}}% default: first slide of frame
  \ifnum\c@page<#2%
  \ifnum\c@page<#1\else% go to last slide of frame, on all slides of
                                % the frame, except for the last one
  \def\beamer@goto{{Navigation#2}}% jump to last slide of frame
  \fi\fi%
  \expandafter\hyperlink\beamer@goto}

这是人类语言的逻辑:假设有一个框架跨越第 5、6、7、8 页,然后您单击超链接点。

  • 在第 1-4 页之后,您将进入第 5 页。
  • 在第 5 至第 7 页,您将被带到第 8 页。
  • 在第 8 页末尾,您将被带到第 5 页。

您可以重新定义此宏来实现您的逻辑,例如

\def\beamer@link(#1/#2){%
    \ifnum\c@page<#1%
        \def\beamer@goto{{Navigation#1}}%
    \else%
        \def\beamer@goto{{Navigation#2}}%
    \fi%
    \expandafter\hyperlink\beamer@goto%
}
  • 在第 1-4 页之后,您将进入第 5 页。
  • 在第 5 页末尾,您将进入第 8 页。

再举一个例子

\makeatletter
\def\beamer@link(#1/#2){%
    \ifnum\c@page<#1%
        \def\beamer@goto{{Navigation#1}}%
    \else\ifnum\c@page<#2
        \def\beamer@goto{{Navigation\the\numexpr\c@page+1}}%
    \else\ifnum\c@page=#2%
        \def\beamer@goto{{Navigation#1}}%
    \else%
        \def\beamer@goto{{Navigation#2}}%
    \fi\fi\fi%
    \expandafter\hyperlink\beamer@goto%
}
  • 在第 1-4 页之后,您将进入第 5 页。
  • 在第 5 至第 7 页,您将进入下一页。
  • 在第 8 页,您将进入第 5 页。
  • 在第 9 页末,您将被带到第 8 页。

这个可以让你通过点击超链接点来循环浏览框架。


播放代码

\documentclass[xcolor=dvipsnames,onlyslideswithnotes,t]{beamer}
\setbeamertemplate{footline}[frame number]
\usetheme{Frankfurt}
\setbeamertemplate{navigation symbols}{}

\usepackage{tikz}

\begin{document}

\section{Jump}

\makeatletter
\def\beamer@link(#1/#2){%
    \ifnum\c@page<#1%
        \def\beamer@goto{{Navigation#1}}%
    \else\ifnum\c@page<#2
        \def\beamer@goto{{Navigation\the\numexpr\c@page+1}}%
    \else\ifnum\c@page=#2%
        \def\beamer@goto{{Navigation#1}}%
    \else%
        \def\beamer@goto{{Navigation#2}}%
    \fi\fi\fi%
    \expandafter\hyperlink\beamer@goto%
}

\frame{
    \vfill
    first frame
    page 1 \pause
    page 2 \pause
    page 3 \pause
    page 4
}

\frame{
    \vfill
    second frame
    page 5 \pause
    page 6 \pause
    page 7 \pause
    page 8
}

\frame{
    \vfill
    third frame
    page 9 \pause
    page 10 \pause
    page 11 \pause
    page 12
}

\part{visualization}

\def\hyperlink#1{\def\gotothisnode{#1}}
\frame{
    \vfill
    \centering
    \tikz[xscale=.8]{
        \draw
            \foreach\p in{1,...,12}{
                (\p,2)node[circle](Frompageno\p){\p}
            }
            \foreach\p in{5,6,7,8}{
                (\p,0)node[circle](Navigation\p){\p}
            }
        ;
        \foreach\p in{1,...,12}{
            \c@page\p\relax
            \beamer@link(5/8)
            \draw[-latex](Frompageno\p)--(\gotothisnode);
        }
    }
}

\end{document}

相关内容