到目前为止,我在调用诸如 之类的叠加命令时总是使用幻灯片编号\only<...>
。但对我来说,这有点麻烦,因为我必须在脑海中计算幻灯片的位置。如果我可以使用字符串(如\label
和\ref
机制)代替幻灯片编号,它会变得更优雅,不是吗?
调用覆盖命令时,是否可以使用字符串代替幻灯片编号\only
?
最小工作示例:
\documentclass{beamer}
\usepackage{pstricks-add}
\usepackage[active,tightpage]{preview}
\PreviewBorder=0pt
\PreviewEnvironment{pspicture}
\begin{document}
\begin{frame}
\begin{pspicture}(6,6)
\pnode(0,0){A}
\pnode(6,0){B}
\pnode(6,6){C}
\pnode(0,6){D}
\pnode(1,1){P}
\pnode(5,1){Q}
\pnode(3,5){R}
\only<5>{\psclip{\pscircle[linestyle=none,dimen=middle](3,3){3}}}
\only<1->{\pspolygon*[linecolor=red](A)(B)(Q)(P)}
\only<2->{\pspolygon*[linecolor=green](B)(C)(R)(Q)}
\only<3->{\pspolygon*[linecolor=blue](C)(D)(R)}
\only<4->{\pspolygon*[linecolor=yellow](D)(A)(P)(R)}
\only<5>{\endpsclip}
\end{pspicture}
\end{frame}
\end{document}
编辑:哦,不。我只知道一个框架中的幻灯片编号可以重复用于其他框架。我在写这个问题时认为幻灯片编号从 beamer 文档中的第一张幻灯片一直延续到最后一张幻灯片。我的问题现在没有意义了!
以下最小(不)工作示例说明了我在撰写此问题时的想象:
\documentclass{beamer}
\usepackage{pstricks-add}
\usepackage[active,tightpage]{preview}
\PreviewBorder=0pt
\PreviewEnvironment{pspicture}
\begin{document}
\begin{frame}
\begin{pspicture}(6,6)
\pnode(0,0){A}
\pnode(6,0){B}
\pnode(6,6){C}
\pnode(0,6){D}
\pnode(1,1){P}
\pnode(5,1){Q}
\pnode(3,5){R}
\only<5>{\psclip{\pscircle[linestyle=none,dimen=middle](3,3){3}}}
\only<1->{\pspolygon*[linecolor=red](A)(B)(Q)(P)}
\only<2->{\pspolygon*[linecolor=green](B)(C)(R)(Q)}
\only<3->{\pspolygon*[linecolor=blue](C)(D)(R)}
\only<4->{\pspolygon*[linecolor=yellow](D)(A)(P)(R)}
\only<5>{\endpsclip}
\end{pspicture}
\end{frame}
\begin{frame}
\begin{pspicture}(6,6)
\pnode(0,0){A}
\pnode(6,0){B}
\pnode(6,6){C}
\pnode(0,6){D}
\pnode(1,1){P}
\pnode(5,1){Q}
\pnode(3,5){R}
\only<10>{\psclip{\pscircle[linestyle=none,dimen=middle](3,3){3}}}
\only<6->{\pspolygon*[linecolor=red](A)(B)(Q)(P)}
\only<7->{\pspolygon*[linecolor=green](B)(C)(R)(Q)}
\only<8->{\pspolygon*[linecolor=blue](C)(D)(R)}
\only<9->{\pspolygon*[linecolor=yellow](D)(A)(P)(R)}
\only<10>{\endpsclip}
\end{pspicture}
\end{frame}
\end{document}
我认为如果帧顺序改变的话会变得麻烦,因为我需要修改每帧的幻灯片编号。
答案1
是的,只要你使用的数字是任意的,你都可以;在 的情况下\label
,\ref
你不能直接使用,\ref
因为关联的字符串不是数字;你可以refcount
先使用包将字符串转换为数字。一个简单的例子:
\documentclass{beamer}
\newcounter{refcount}
\begin{document}
\begin{frame}
\begin{enumerate}[<+->]
\item\label{a} Item on first slide.
\item\label{b} Item on second slide.
\item\label{c} Item on third slide.
\end{enumerate}
\only<\getrefnumber{b}>{Text on second slide}
\end{frame}
\end{document}
在您的具体示例中,您可以执行如下操作:
\documentclass{beamer}
\usepackage{pstricks-add}
\usepackage[active,tightpage]{preview}
\PreviewBorder=0pt
\PreviewEnvironment{pspicture}
\newcounter{tmp}
\begin{document}
\begin{frame}
\begin{pspicture}(6,6)
\pnode(0,0){A}
\pnode(6,0){B}
\pnode(6,6){C}
\pnode(0,6){D}
\pnode(1,1){P}
\pnode(5,1){Q}
\pnode(3,5){R}
\only<\thetmp>{\psclip{\pscircle[linestyle=none,dimen=middle](3,3){3}}}
\only<+->{\pspolygon*[linecolor=red](A)(B)(Q)(P)}
\only<+->{\pspolygon*[linecolor=green](B)(C)(R)(Q)}
\only<+->{\pspolygon*[linecolor=blue](C)(D)(R)}
\only<+->{\pspolygon*[linecolor=yellow](D)(A)(P)(R)}
\setcounter{tmp}{\value{beamerpauses}}
\only<\thetmp>{\endpsclip}
\end{pspicture}
\end{frame}
\end{document}
部分9.6.4 增量规范beamer 手册包含一些其他有用的细节。