我正在使用 进行演示Beamer
,我希望大多数幻灯片itemize
在演示幻灯片上都有一个使用<+->
样式显示的列表。在相关的注释幻灯片上,我希望有几乎相同的列表,只是更冗长,并以同步方式显示。我尝试使用下面的代码执行此操作,但由于某种原因,前两个注释同时出现(即与第一个演示项目同时出现),然后当我到达最后一个演示项目时,注释幻灯片上的所有项目都消失了。
\documentclass[]{beamer}
\usepackage{pgfpages}
\setbeameroption{show notes on second screen=left}
\beamerdefaultoverlayspecification{<+->}
\begin{document}
\begin{frame}{Naive HDR Combination}
\begin{itemize}
\item My first point
\note[item]{A note about my first point}
\item My second point
\note[item]{A note about my second point}
\item My third point
\note[item]{A note about my third point}
\end{itemize}
\end{frame}
\end{document}
有办法让它工作吗?我知道我可以手动设置每个幻灯片的编号\note
,例如\note[item]<2->
,但 a) 这很烦人,并且 b) 如果我稍后决定在列表中添加新项目,我必须重新编号所有后续注释。谢谢。
答案1
我无法解释确切地您所看到的行为,但我的实验让我得出结论,它来自命令\beamerdefaultoverlayspecification
与其余设置之间的交互。似乎正在发生的事情是,\item
出现在注释列表中的对覆盖敏感。因此它们继承了 的设置\beamerdefaultoverlayspecification
。因此,您的笔记列表相当于:
\begin{enumerate}
\item<+-> A note about my first point
\item<+-> A note about my second point
\item<+-> A note about my third point
\end{enumerate}
令人困惑的是幻灯片上的叠加层究竟是如何确定的note
。我不太明白这一点。
该\note<overlay>
规范的工作原理是将注释命令放在\only
调用点。因此,这与注释幻灯片中的行为无关。事实上,我很想称其\item
为注释中可感知覆盖的错误。
因此,在使用笔记时,我建议不是使用\beamerdefaultoverlayspecification
。为了获得相同的效果,您可以放置\begin{itemize}[<+->]
。
但这仍然不能解决您的问题,因为这意味着一个框架的所有注释都会出现在该框架的每一张幻灯片上。解决此问题并避免您提到的问题的一种方法是编写\note<.->[item]{note text}
。<.->
语法的意思是“从这张幻灯片开始”(注意:在 itemize 之外,您可能需要将其偏移 1,因此\note<.(1)->[item]{note text}
。)这至少解决了问题 (b),即指定显式覆盖,因为重新排序列表也会重新排序注释。
为了消除使用任何覆盖规范,可以破解\note
命令,以便它采取默认覆盖规范。我们希望确保它与设置的不一样,\beamerdefaultoverlayspecification
因为我们不希望它干扰框架的正常运行。这是一个可行的示例,但我不能保证它在所有情况下都有效!
\documentclass[]{beamer}
%\url{http://tex.stackexchange.com/q/28972/86}
\usepackage{pgfpages}
\setbeameroption{show notes on second screen=left}
\makeatletter
\def\beamerdefaultnoteoverlay#1{%
\beamer@ifempty{#1}%
{%
\def\beamer@gdefaultnotespec{<*>}%
\def\beamer@defaultnotespec{<*>}}%
{%
\def\beamer@gdefaultnotespec{#1}%
\def\beamer@defaultnotespec{#1}%
}%
}
\beamerdefaultnoteoverlay{}
%% Hack to avoid bug in \renewcommand (fixed in latest version)
\expandafter\let\csname beamerx@\string\beamer@inframenote\endcsname\relax
\newcommand<>{\beamer@inframenote}[2][]{%
\ifbeamer@inlecture%
\beamer@ifempty{#3}%
{%
\let\note@ospec=\beamer@defaultnotespec
}{%
\def\note@ospec{#3}%
}%
\expandafter\only\note@ospec{%
\def\beamer@temp{#1}%
\ifx\beamer@temp\beamer@itemtext%
\expandafter\gdef\expandafter\beamer@noteitems%
\expandafter{\beamer@noteitems\item#2}%
\else
\expandafter\gdef\expandafter\beamer@notes%
\expandafter{\beamer@notes#2}%
\fi%
}%
\fi%
}
\makeatother
\beamerdefaultnoteoverlay{<.->}
\begin{document}
\begin{frame}{Naive HDR Combination}
\begin{itemize}[<+->]
\item My first point
\note[item]{A note about my first point}
\item My second point
\note[item]{A note about my second point}
\item My third point
\note[item]{A note about my third point}
\end{itemize}
\end{frame}
\end{document}