我在 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 页,然后您单击超链接点。
您可以重新定义此宏来实现您的逻辑,例如
\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%
}
这个可以让你通过点击超链接点来循环浏览框架。
播放代码
\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}