我正在尝试改进该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