如何使用 Emacs Org 模式和 Reveal.js 创建幻灯片

使用 Org-Reveal 包,您可以将 Emacs 文本文件转换为简单的 Reveal.js 幻灯片。
353 位读者喜欢这篇文章。
Business presentation

Vector Open Stock。CC BY-SA 3.0。

在过去一年左右的时间里,我开始重新大量使用 Emacs 和 Org mode 包(用于做笔记、自我组织等等)。我也开始涉足简短的演示。我一直在想如何将 Emacs 与演讲结合起来。

您可能会问演示与文本编辑器有什么关系? 实际上有很多!

像许多演讲者一样,我在演示时使用幻灯片。我的幻灯片非常简洁——每张幻灯片只有几个单词或一张图片。我使用 Reveal.js 创建这些幻灯片,这也让我有机会拥抱我内心的极客,并手工编写一些 HTML。

那么,Emacs 和 Reveal.js 的融合发生在何处呢?这体现在一个名为 Org-Reveal 的 Emacs 包中。让我们来看看如何使用 Emacs、Org-Reveal 和 Reveal.js 创建简单的演示幻灯片。

开始入门

我假设您的计算机上已安装 Emacs 和 Org mode。如果还没有,请为您的操作系统获取 Emacs下载最新版本的 Org mode。Org mode 网站还解释了如何安装它。

您还需要安装 Org-Reveal,并获取 Reveal.js 存档的副本。您可以将 Reveal.js 解压缩到您喜欢的任何位置。我将其放在文件夹 ~/slides/reveal.js 中,我在其中存储我的幻灯片。

完成所有这些操作后,将以下内容添加到您的 .emacs 文件中,以将 Org-Reveal 集成到 Emacs 中

;; Reveal.js + Org mode
(require 'ox-reveal)
(setq Org-Reveal-root "file:///path-to-reveal.js")
(setq Org-Reveal-title-slide nil)

在上面, path-to-reveal.js 是您解压缩 Reveal.js 存档的位置。在我的设置中,该条目是 file:///home/scott/slides/reveal.js

这有点工作量。幸运的是,您只需要做一次。现在,您已准备就绪。

创建幻灯片演示文稿和幻灯片

启动 Emacs 并创建一个新文件。将文件命名为您想要的任何名称,但请确保它具有扩展名 .org。该扩展名告诉 Emacs 这是一个 Org mode 文件。每当您打开具有该扩展名的文件时,Emacs 都会应用正确的语法突出显示,并在菜单栏上提供 Org 菜单。

将以下信息添加到文件的顶部

#+OPTIONS: num:nil toc:nil
#+REVEAL_TRANS: None/Fade/Slide/Convex/Concave/Zoom
#+REVEAL_THEME: Black/White/League/Sky/Beige/Simple/Serif/Blood/Night/Moon/Solarized
#+Title: Title of Your Talk
#+Author: Your Name
#+Email: Your Email Address or Twitter Handle

该块就像幻灯片演示文稿的元数据。让我们看一下该块中的前三项

  • num:niltoc:nil 禁止在生成幻灯片时对标题进行编号和创建目录
  • #REVEAL_TRANS 控制您在幻灯片之间移动时的过渡效果。我通常选择 None,但您可以随意尝试
  • #REVEAL_THEME 控制幻灯片的外观。我通常坚持使用 Black 或 White,但同样,您可以随意尝试

通过键入星号、后跟一个空格、后跟一些文本,在元数据块后添加标题。这将是标题幻灯片。(使标题成为一个好标题!)

如果您想在标题下方添加您的姓名,请按 Enter 键。Emacs 在标题下方添加一个空白的缩进空间。在该空间中键入您的姓名和任何其他信息。

通过向文件添加标题(记住,标题前面带有星号和空格?)向演示文稿添加新幻灯片。很简单,不是吗?

以下是 Emacs 中一个简单的演示文稿的样子

Presentation in Emacs

opensource.com

这是它在 Web 浏览器中的样子

Opening slide in browser

opensource.com

如果您想创建仅包含文本的幻灯片,这效果很好。那么包含图片的幻灯片呢?

添加图片

我在幻灯片中使用图片的频率与使用文本的频率一样高。这些图片不是为了让我的观众眼花缭乱或分心。它们提供了一些视觉背景,并充当我的视觉提示。它并非适用于每张幻灯片或每次演讲,但使用正确的图片可能会很有效。而且它可能很有趣。

要向幻灯片添加图片,首先在保存幻灯片文件的文件夹中创建一个用于存放图片的子文件夹。我通常将该文件夹称为 images,虽然缺乏想象力,但它确实名副其实。将您想在幻灯片中使用的图片放入该文件夹。

接下来,在幻灯片文件中创建一个空标题——一个带有星号但没有文本的标题。按 Enter 键以在该标题下方添加一个空白空间,然后将此文本块添加到该空间

:PROPERTIES:
:reveal_background: images/name-of-image
:reveal_background_size: width-of-image
:reveal_background_trans: slide
:END:

name-of-image 替换为图片的文件名(包括其扩展名)。将 width-of-image 替换为图片的宽度(以像素为单位)——例如,640px。确保您的图片不太宽,否则它们会超出屏幕边缘。我尽量使幻灯片中的图片宽度保持在 1,000 像素以下。

添加演讲者备注

Reveal.js 有一个巧妙的功能,可让您在提供幻灯片的计算机上显示演讲者备注。只有您才能看到这些备注,并且它们仅在您按下键盘上的 s 键时才会出现。

要向幻灯片添加备注,请按 Enter 键以在标题下方创建一个空白空间,然后将此文本块添加到该空间

#+BEGIN_NOTES
Your note
#+END_NOTES

Your note 替换为提醒或提示您该幻灯片要点的文本。

生成幻灯片

您已经制作了演示文稿中的每张幻灯片。接下来做什么?您将需要生成幻灯片演示文稿的 HTML 版本。为此,请在键盘上按 Ctrl+c Ctrl+e。这将打开 Org mode 导出缓冲区。接下来,键入 R+R。Emacs 会在您保存幻灯片文件的文件夹中创建一个 HTML 文件。

在 Web 浏览器中打开该 HTML 文件。您可以通过按键盘上的箭头键在幻灯片之间移动。

最后思考

Reveal.js 和 Org-Reveal 还有很多功能可以做。我没有深入探讨,因为我喜欢保持幻灯片简洁。

使用 Emacs 和 Org mode 与 Reveal.js 创建演示幻灯片看起来可能有点过分。而且,老实说,我并非在所有幻灯片演示文稿中都使用这种组合。但是,当我需要快速整理幻灯片演示文稿时,它们做得非常出色。

而且,因为我在乎,所以我创建了一个 简单的 Org-Reveal 幻灯片模板,您可以下载并使用或修改它以满足您的心意。不用客气。

标签
That idiot Scott Nesbitt ...
我是一位自由/开源软件的长期用户,为乐趣和利益编写各种东西。我并没有把自己看得太严肃,我所有的特技都是自己完成的。

6 条评论

嗨,Scott,

感谢您这篇关于 Org mode 和 reveal.js 的精彩文章。您是否尝试将 `org-reveal-root` 设置为 CDN?我可以使用 reveal.js 3.0,使用:

```
(setq org-reveal-root "https://cdn.jsdelivr.net.cn/reveal.js/3.0.0/")
```

但我正在寻找使用 CDN 的最新 reveal.js 版本。这也将使我们免于下载/克隆最新 reveal.js 版本。

还没有尝试过,但这绝对值得一看。感谢指出!

回复 作者:psachin

好文章,谢谢!

我按照您的说明创建了一个演示文稿:我解压缩了 revealjs 3.6.0,并手动下载了 org-reveal(当我对 package-list-packages 执行操作时,MELPA 中列出的 ox-reveal 包由于依赖于旧的 org 包版本而被标记为不兼容)。
当我点击 C-c C-e R R 时,我的迷你缓冲区中出现以下错误
“符号的函数定义为空:org-export-get-reference”。

您也遇到过这个错误吗?

抱歉,我必须更新 org-mode,我的内置版本是 8.x。

回复 作者:yoLotus (未验证)

我也遇到了同样的问题。从 git 安装 org 解决了这个问题。我尝试了一下,首先我从 ~/.emacs.d/elpa/org 中删除了 org 文件夹。
然后从 git 进行了新的 org-install
请参阅:使用 Org 的 git 仓库,https://orgmode.org/manual/Installation.html
现在它运行顺畅了,我甚至可以添加作者和标题,这在使用 org 包存档中的版本时是不可能的。

回复 作者:yoLotus (未验证)

从 git 安装 org 为我解决了这个问题(linux 机器)。
https://orgmode.org/manual/Installation.html
首先我删除了 ~/.emacs.d/elpa/org-.... 下的 org 文件夹(不确定是否必要)。

回复 作者:yoLotus (未验证)

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.