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

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

Vector Open Stock. CC BY-SA 3.0.

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

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

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

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

入门

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

您还需要安装 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 模式文件。每当您打开带有该扩展名的文件时,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 控制 幻灯片的外观。我通常坚持使用黑色或白色,但同样,您可以随意尝试

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

如果您想在标题下方添加您的姓名,请按 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 模式导出缓冲区。接下来,键入 R+R。Emacs 会在您保存幻灯片文件的文件夹中创建一个 HTML 文件。

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

最后想法

您可以使用 Reveal.js 和 Org-Reveal 做更多的事情。我没有深入研究,因为我喜欢保持幻灯片的简单性。

使用 Emacs 和 Org 模式与 Reveal.js 来创建演示幻灯片可能看起来有些多余。而且,老实说,我不会将这种组合用于我所有的幻灯片演示。但是,当我需要快速将幻灯片组合在一起时,它们会做得很好。

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

标签
That idiot Scott Nesbitt ...
我是一名自由/开源软件的长期用户,并撰写各种有趣和有益的东西。我对自己并不太认真,我做所有的特技。

6 条评论

嗨 Scott,

感谢您这篇关于 Org 模式和 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(当由于依赖于旧的 org 包版本而执行 package-list-packages 时,MELPA 中列出的 ox-reveal 包被标记为不兼容)。
当我点击 C-c C-e R R 时,我的迷你缓冲区中出现以下错误
"Symbol's function definition is void: org-export-get-reference".

您也遇到过这个错误吗?

对不起,我必须更新 org-mode,我的内置版本是 8.something。

回复 yoLotus (未验证)

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

回复 yoLotus (未验证)

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议授权。
© . All rights reserved.