在此主题,@diabonas 教我如何自动将覆盖编号传递给环境\hypertarget
中的过程itemize
。构造是\hypertarget<.>{label4}{\beamerbutton{something}}
这很好用,但仅限于itemize
或enumerate
环境中。当我在任何环境之外尝试它时,<.>
构造都不太有效。在下面的示例中,当我单击第二帧中的按钮时,它会跳回到第三行而不是第四行,并且按钮不显示。有人可以建议如何解决这个问题吗?
\documentclass{beamer}
\begin{document}
\begin{frame}[<+->]
First \\
\pause
Second \\
\pause
Third \\
\pause
Fourth \hypertarget<.>{label4}{\beamerbutton{I'm on the fourth line}} \\
\pause
Fifth \\
\pause
Sixth \\
\end{frame}
\begin{frame}
\hyperlink{label4}{\beamerbutton{I jump to the fourth line of previous frame}}
\end{frame}
\end{document}
答案1
使用的计数器\pause
是beamerpauses
,它比 count 更容易使用beamer@minimum
。但两者都有效。
\documentclass{beamer}
\makeatletter
\newcommand*{\overlaynumber}{\number\beamer@minimum}
\makeatother
\begin{document}
\begin{frame}[<+->]
First \par
\pause
Second \par
\pause
Third \hypertarget<\overlaynumber>{label3}{\beamerbutton{I'm on the third line}} \par
\pause
Fourth \hypertarget<\thebeamerpauses>{label4}{\beamerbutton{I'm on the fourth line}} \par
\pause
Fifth \par
\pause
Sixth \par
\end{frame}
\begin{frame}
\hyperlink{label3}{\beamerbutton{I jump to the third line of previous frame}}\par
\hyperlink{label4}{\beamerbutton{I jump to the fourth line of previous frame}}\par
\end{frame}
\end{document}
答案2
对于或 列表环境,计数器的beamerpause
递增方式不同。和都会递增计数器。 这导致计数器在列表环境中为滑动数字 + 1。 由于主要用于列表,因此它会减少数字。 因此,在您的情况下使用会导致,因此不会打印按钮。\pause
\pause
\item
<.>
<.>
\pause
<3>
但可以添加偏移量(<.(1)>
)。这可用于纠正错误。
此代码显示了行为和修复:
\documentclass{beamer}
\makeatletter
\newcommand*{\overlaynumber}{\number\beamer@minimum}
\makeatother
\begin{document}
\begin{frame}[<+->]
First (\thebeamerpauses) \\
\pause
Second (\thebeamerpauses) \\
\pause
Third (\thebeamerpauses) \\
\pause
Fourth (\thebeamerpauses) \hypertarget<.(1)>{label4}{\beamerbutton{I'm on the fourth line}} \\
% fix here -----------------------------^^^
\pause
Fifth (\thebeamerpauses) \\
\pause
Sixth (\thebeamerpauses) \\
\end{frame}
\begin{frame}
\hyperlink{label4}{\beamerbutton{I jump to the fourth line of previous frame}}
\end{frame}
\begin{frame}[<+->]
\begin{itemize}
\item First (\thebeamerpauses)
\item Second (\thebeamerpauses)
\item Third (\thebeamerpauses)
\item Fourth (\thebeamerpauses) \hypertarget<.>{label42}{\beamerbutton{I'm on the fourth line}}
\item Fifth (\thebeamerpauses)
\item Sixth (\thebeamerpauses)
\end{itemize}
\end{frame}
\begin{frame}
\hyperlink{label42}{\beamerbutton{I jump to the fourth line of previous frame}}
\end{frame}
\end{document}