我无法让以下命令工作。我有一个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
我没有测试它不起作用的具体原因,但很明显计算不足并且它显示在每张幻灯片上,尽管显示的数字是正确的。
但是,您可以使用内部计数器,beamer
即beamerpauses
计数器。顾名思义,只要给出覆盖规范,它就会递增。
\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}