调用覆盖命令(如 \only)时,是否可以使用字符串代替幻灯片编号?

调用覆盖命令(如 \only)时,是否可以使用字符串代替幻灯片编号?

到目前为止,我在调用诸如 之类的叠加命令时总是使用幻灯片编号\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 手册包含一些其他有用的细节。

相关内容