如何在Org-mode中重复使用beamer幻灯片帧?

5

使用Beamer,可以通过标记应该重复的帧来重复显示帧,例如:

\begin{frame}[label=framelabel]
...
\end{frame}

然后在需要重复该幻灯片的位置使用\againframe{framelabel}命令。

如何在Org-mode的Beamer导出中使用这种方法?很明显,可以通过将标签放在BEAMER_envargs中来添加:

* Org-mode section
:PROPERTIES:
:BEAMER_envargs: [label=questions]
:END:

但是在使用Org-mode时,通过\againframe存在两个问题:
  1. \againframe无论是放置在Org-mode部分下还是直接放置在Org-mode部分中,都会出现放置不当的问题。前一种情况的问题是它被放置在一个框架内,而应该放置在框架之间。后一种情况的问题是它被放置在\frametitle内。
  2. \againframe要么被Org-mode部分吞噬,要么被标记为一个部分,这两种情况都不能很好地表示其功能。
那么,有没有一种有效的方法来使用Beamer中的\againframe,或者有我忽略的使用Org-mode重复帧的其他方法?
我已经查看了http://lists.gnu.org/archive/html/emacs-orgmode/2011-05/msg00954.html,但仍未解决问题。
我正在运行Emacs 23.3.1中的Org-mode 7.6,并使用Beamer 3.13。

这不是最优解,但过去我只是折叠了该部分,然后杀死并复制该部分对应的区域。再复制一次,你就有了该部分的另一个副本。或者,使用Beamer的only<>结构是否适合您想要的? - cm2
@cm2 感谢您的建议。如果我正确理解您的建议,两种方法都有不同的脆弱性。您的意思是使用 C-c C-x C-w 来简单地复制该部分并将其放置在所需位置吗?这种方法的脆弱性在于,如果一个部分被更改,则其副本不会自动更改。如果我正确理解了 \only 方法,它将需要计算应重复的正确幻灯片编号,因此,如果在其中插入幻灯片,它将会中断,对吗? - N.N.
是的,两者都很脆弱。\only建议是如果您想要重复一张幻灯片并只进行一些小改变-就像逐步显示幻灯片的部分一样。实际上,如果您想在演示文稿的后面完全重复幻灯片,\only将无法起作用。 - cm2
@cm2 我需要完整的重复。 - N.N.
2个回答

12

当前的org-mode已经支持了再次使用幻灯片帧(againframe)。只需创建一个框架并在相应的部分添加BEAMER_env = againframe选项,或者如果您在org-startup上初始化了beamer模式,则可以使用C-c C-b a进行插入。

更多信息请参见org-mode文档

原始建议中提供了一个示例:

* section
** My frame title                     :B_frame:
:PROPERTIES:
:BEAMER_env: frame
:END:

Some text. Some text.  Some text. Some text.
Some text. Some text.  Some text. Some text.

** section                                         :B_againframe:
  :PROPERTIES:
  :BEAMER_env: againframe
  :BEAMER_act: 2
  :BEAMER_ref: *My frame title
  :END:

  This section will create "\againframe<2>{sec-1-2}".

** Following frame
etc.

2
我认为目前不可能实现这一点。限制在于org文档的树形结构。从您的问题中我所理解的是,\againframe{...}命令基本上会重复一个幻灯片。在org术语中,这意味着用于生成幻灯片的原始树将被重复。由于org文档格式不允许您拥有任何不属于树的内容(除了文件顶部的frontmatter/header之外),我认为这是不可能的。这个问题在邮件列表上已经讨论过几次,据我所知,没有计划实现这样的功能。

如我在答案中所写,可以向帧传递参数。您只需将 :BEAMER_envargs: [label=questions] 添加到节的属性中,以将参数 [label=questions] 添加到\begin{frame}。如果您阅读我的问题,您会看到问题实际上是如何在Org-mode中使用\againframe宏。 - N.N.
@N.N. 抱歉,我完全误解了你的问题。现在我明白了,但我仍然认为这是不可能的。至少不是简单的。我会编辑我的原始回答来解释。 - suvayu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接