Preparing slides with org-mode and reveal.js


I haven't used powerpoint (or Impress from Libreoffice) for quite a few years now. There are lot of reasons not to use powerpoint and my principal ones are

  1. Linear approach

The default way to make presentations is to keep adding slides one after the other in a way that is non-intuitive and doesn't match the usual approach to understanding or explaining something. When preparing a talk, I like to plan it in a hierarchical manner, making a list of subheadings that I am going to cover and then listing under each of them.

  1. Design first

Design is given more importance than or at least as much importance as content. Mixing of design and content leads to waste of time and effort in polishing the look of the presentation.

  1. Compatibility issues

Complex formats means corruption, incompatibility with other versions, etc. This is especially so when preparing with Libreoffice on Linux and having to present with Powerpoint on Windows, even though the situation has improved a lot recently.

Org-mode is the ideal tool for outlining and developing ideas. It is perfect for organizing information in a hierarchical manner. It lets you focus on content, hiding, expanding and re-ordering subheadings easily. It is also plain text, so easy to keep under version control. For these reasons, to someone already familiar with emacs, it is the natural tool to prepare slides.

I was using beamer for a long time to make the slides. Beamer produces slides in pdf format which is easy to run anywhere. But it needs a latex installation and tweaking the slides needs some knowledge of latex. Reveal, on the other hand, produces html output, so the presentation runs on any browser. There are no dependencies to produce the slides (except installation of ox-reveal). And slides are in html, so you only need to know some html and css to tweak them. The slides being in html also makes it easy to host them online. For example, see my talks.

So now I have settled to using org-mode to write the talks and org-reveal to export them as reveal.js slides. I have made a cookiecutter template for the slides which you can use if you want to try this or if you just want to see the slide layouts. Seen below is a screenshot of the first two slides from a recent talk.

Slides screenshot