beamer 动画帧:变量重置

beamer 动画帧:变量重置

我正在尝试改进该pdfpcnotes包,将注释提取beamer到外部文件中pdfpc。主要思想是我们有一个计数器(\lastframenumber),它检查我们是否进入下一帧,当发生这种情况时,它会执行一次操作。我的问题是,在这种设置中,如果我们处于动画帧中(beamer即为单个帧生成多个页面),\lastframenumber则会在动画的每个步骤中重置为前一帧,因此不是执行一次操作,而是在每个动画步骤中执行一次,这是一种不受欢迎的情况,但我不明白为什么会发生这种情况。有什么想法吗?这是不起作用的代码。该pnote命令将在框架内使用。

\def\lastframenumber{0}
    \newcommand<>{\pnote}[2][]{%
        \show\lastframenumber
        \ifdim\theframenumber pt >\lastframenumber pt
            \edef\lastframenumber{\theframenumber}
        \fi

答案1

解决方案基本上归因于符号 1:在原始设置中,\lastframenumber只有每次调用时 '存活' \pnote。似乎对于具有覆盖的框架,对于生成的每个页面,都会再次读取整个框架,调用\pnote每个页面,从而触发\ifdim框架每个页面的 。\global在定义前面添加使变量在命令调用之外保持 '存活',从而使其实际上保留最后一个框架编号:

\global\def\lastframenumber{0}
\newcommand<>{\pnote}[2][]{%
    \ifdim\theframenumber pt >\lastframenumber pt
        \global\edef\lastframenumber{\theframenumber}
    \fi

相关内容