\only 与 counter、pdfcomment 和 beamer 类一起使用

\only 与 counter、pdfcomment 和 beamer 类一起使用

我无法让以下命令工作。我有一个beamer演示文稿,每个框架上有几张幻灯片。然后我想使用该pdfcomment包在幻灯片上显示一些注释。通常这可以正常工作,但在具有多个步骤的框架上,这很烦人,因为注释会出现在每张幻灯片上(即使相应的文本尚未出现,它们也会在每张幻灯片上可见!)。所以我的解决方案如下:

我计算了框架上的幻灯片编号,然后使用命令\only仅显示框架最后一张幻灯片的注释。在我的示例中,这是框架上的第五张幻灯片。命令的工作方式如下:

\only<5>{\pdfcomment[style=note,author=name]{comment...}}

但是,由于手动查找框架上的最后一张幻灯片非常烦人,因此我尝试定义一个命令,其内容为:

\newcommand{\pdfnote}[2]{%
\setcounter{slidenum}{\insertpagenumber}
\addtocounter{slidenum}{1}
\addtocounter{slidenum}{-\insertframestartpage}
\only<\value{slidenum}>{\pdfcomment[style=note,author=#1]{#2}}%
}

基本上,它使用计数器slidenum,其中包含框架上的最后一张幻灯片,例如 2。例程有效,只是pdfcomment在所有幻灯片上都可见!这有点奇怪,因为当我简单地用 2 替换时,它就起作用了。而且我只是在命令之前\value{slidenum}添加了一行,所以检查计数器是否正确。此外,我用一个简单的文本替换了。这也有效。\arabic{slidenum}\only\pdfcomment

顺便说一句:\only确实有效, 但\onslide根本不起作用pdfcomment。我真的不明白。你有什么想法吗?下面是一个完整的示例。

\documentclass{beamer}

\usepackage[draft,author=admin]{pdfcomment}

\definestyle{note}{icon=Comment,color=white,open=true}
\definestyle{warning}{icon=Comment,color=red,open=true}

\newcounter{slidenum}

\newcommand{\pdfnote}[2]{%
\setcounter{slidenum}{\insertpagenumber}
\addtocounter{slidenum}{1}
\addtocounter{slidenum}{-\insertframestartpage}
%\arabic{slidenum}
\only<\value{slidenum}>{\pdfcomment[style=note,author=#1]{#2}}%
}

\begin{document}

\begin{frame}

test\\ \pause
next line
\pdfnote{me}{my comment}

\end{frame}

\end{document}

答案1

我没有测试它不起作用的具体原因,但很明显计算不足并且它显示在每张幻灯片上,尽管显示的数字是正确的。

但是,您可以使用内部计数器,beamerbeamerpauses计数器。顾名思义,只要给出覆盖规范,它就会递增。

\documentclass{beamer}
\usepackage[draft,author=admin]{pdfcomment}
\definestyle{note}{icon=Comment,color=white,open=true}
\definestyle{warning}{icon=Comment,color=red,open=true}
\newcommand{\pdfnote}[2]{%
\onslide*<\value{beamerpauses}>{\pdfcomment[style=note,author=#1]{#2}}%
}
\begin{document}
\begin{frame}
test\\ \pause
next line
\pdfnote{me}{comment 1}
\\ \pause
adsf
\pdfnote{me}{comment 2}
\end{frame}
\end{document}

我已经改为\only展示\onslide*另一种可能性,这实际上与手册中所述相同。

答案2

下面我定义了一个\thelastslideofframe命令,第二次pdflatex运行后,扩展到当前帧中的幻灯片数量。它可以被送入\only<>等等,并可以\pause与以及明确的叠加规范一起使用。

\documentclass{beamer}

\usepackage[draft,author=admin]{pdfcomment}

\definestyle{note}{icon=Comment,color=white,open=true}
\definestyle{warning}{icon=Comment,color=red,open=true}

\makeatletter
\newcommand\thelastslideofframe{%
  \the\numexpr0\beamer@endpageofframe-0\beamer@startpageofframe+1%
}
\makeatother
\newcommand{\pdfnote}[2]{%
  \only<\thelastslideofframe>{\pdfcomment[style=note,author=#1]{#2}}%
}

\begin{document}

\begin{frame}
  \onslide<3>{This is slide 3, the last slide of this frame!\par}
  test\\ \pause
  next line
  \pdfnote{me}{My comment, on last slide only (after second compilation)}
\end{frame}

\end{document}

相关内容