如何修补 beamer\frame
命令(frame
环境),使其\note{}
在每一帧上执行。这个问题与这个\note{}
但是,我希望执行附加宏(在我的情况下),而不是前但在每一帧,即:
\begin{frame}
% empty dummy note, ensures that beamer renders a note page for this frame
% if compiled with \setbeameroption{show notes}
\note{}
% frame content (may contain "real" \note commands, which accumulate)
\end{frame}
我正在尝试在生成的 PDF 中实现这一点每一个幻灯片(即使来自未指定注释的框架)后面都有注释页,这样我就可以使用pdfnup --nup 1x2
(或类似工具)将它们配对在同一页上。也就是说,以下最小示例应生成一个 4 页 PDF 文件:
\documentclass{beamer}
\setbeameroption{show notes}
\begin{document}
\begin{frame}{Slide with notes}
Slide content
\note{Cool note!}
\end{frame}
\begin{frame}{Slide without a single note (a notes page should follow nevertheless!)}
More slide content:
\end{frame}
\end{document}
附注:我愿意不是想要任何基于此的解决方案pgfpages
(例如“在第二个屏幕上显示注释”),因为此包在发货级别与textpos
包发生干扰,而对于绝对定位,我绝对需要这个包。结果看起来最多“有趣”!
欢迎任何想法!
答案1
这似乎对你的小例子有用:
\makeatletter
\def\beamer@framenotesbegin{% at beginning of slide
\gdef\beamer@noteitems{}%
\gdef\beamer@notes{{}}% used to be totally empty.
}
\makeatother
请注意,我并没有对此考虑太多,因此如果它不起作用,请抱怨。:)
答案2
一个巧妙的方法是将代码放在其他地方,每帧都会进行评估,而不是尝试挂接到框架环境本身。例如,模板可以包含任意代码,因此您可以重新定义一个经常使用的模板以包含相关命令。
在类似情况下,我已连接到命令,\frametitle
因为这样更强大一些。我不知道是否在内部\begin{frame}{Some Title}
调用\frametitle
,所以我不知道这是否适合您。
答案3
也许最简单的方法是创建一个包装器环境。基本示例:
\documentclass{beamer}
\newenvironment{nframe}[1]{%
\begin{frame}[environment=nframe]\frametitle{#1}\note{}%
}{%
\end{frame}%
}
\begin{document}
\begin{nframe}{Title}
Foo
\end{nframe}
\end{document}
我认为如果你不提供一个框架标题,这很尴尬...将第二个参数留空则没有框架标题。
这是一个显然不起作用的解决方案,为了后代,我将其保留在这里。
调整链接问题中的答案,你不能使用etoolbox
就像\appto
这样:\appto{\frame}{\note{}}
在每一帧的开头都包含一个注释?