How to create presentations with emacs-reveal

(Press ? for help, n and p for next and previous slide)

Jens Lechtenbörger (License Information)
September 2017


What’s This?

  • Emacs-reveal is free software to generate reveal.js presentations (slides with audio) from simple text files in Org mode
  • Benefits
    • For your audience
      • Self-contained presentations embedding audio
      • Usable on lots of (including mobile and offline) devices with just a browser
    • For you as producer
      • Separation of layout and contents
        • Similarly to, e.g., LaTeX
      • Simple text format allows diff and merge for ease of collaboration


  • I suppose that you use GNU/Linux (help on getting started)
    • Actually, not much here is operating system specific
  • This software should really be used with the text editor GNU Emacs
    • (You could try other editors and build presentations on GitLab’s infrastructure)


  1. Download software
    • Install emacs-reveal
      • git clone
      • cd emacs-reveal/
    • Install submodules
      • git submodule sync --recursive
      • git submodule update --init --recursive
  2. Install and configure Emacs packages
    • emacs --batch --load emacs-reveal/install.el --funcall install
    • Add a line like this to ~/.emacs
      • (load "/path/to/emacs-reveal/reveal-config.el")



  1. Create presentations locally on Command Line
  2. Create presentations from within Emacs
  3. Create and publish presentations on GitLab

Build Presentations on Command Line

  1. Create Org file in directory emacs-reveal/
    • See contained source file for this presentation,
  2. Build presentations for files ending in .org (except internal ones listed in elisp/publish.el)
    • emacs --batch --load elisp/publish.el --funcall org-publish-all
    • Presentations are built in subdirectory public/
  3. Open presentation in Firefox
    • E.g.: firefox public/index.html
  4. Optional: Copy public/ to web server for public accessibility

Building Presentations from Emacs

  1. Generate HTML presentation for visited .org file using the usual Org export functionality:
    Press C-c C-e R B
    • This generates an HTML file in the same directory and opens it in your default browser
    • For this to work, necessary resources, in particular the reveal.js directory, must be accessible in the .org file’s directory

Build Presentations on GitLab

  1. Fork project on GitLab (fork documentation)
    • (Instead of forking, maybe use git clone see above; import that as new project on GitLab)
  2. Create project’s files locally
    • git clone <the URL of YOUR GitLab project>
  3. Create or update Org files in cloned directory, add, commit, and push (see next slide)
  4. GitLab infrastructure picks up changes and publishes presentations as GitLab Pages
    • Takes some minutes
    • Go to Settings → Pages to see the Pages’ address

On Git

Some Presentation Features

Text Slide

  • A list
  • With a sub-list whose items appear
    • This is emphasized
    • This is bold
    • This looks like code
    • This is green
    • Nothing special

Some Fragment Styles

  • Forget
  • Shrink
  • Grow
  • Very important

On Sections

  • This slide can also be perceived as its own subsection
  • (This list item appears simultaneously with previous bullet point)

Another Slide

  • This slide is on a deeper level of nesting
  • This level of nesting is not shown in the table of contents in the slide’s bottom
  • By the way, the headings in the table of contents below are hyperlinks
    • And your browser remembers the history, back/forward buttons and shortcuts should work
    • Mousewheel and swiping work

Slide with Figure and Audio

Appearing Items with Audio

(Audios produced with MaryTTS, converted to Ogg format with Audacity)

  • One
  • Two
  • Three

The End

Further Reading

License Information

Except where otherwise noted, this work, “How to create presentations with emacs-reveal”, is © 2017 Jens Lechtenbörger, under the Creative Commons license CC BY-SA 4.0.

No warranties are given. The license may not give you all of the permissions necessary for your intended use.

In particular, trademark rights are not licensed under this license. Thus, rights concerning (trade-) marks (e.g., “Creative Commons” itself) remain with their respective holders.