(Press ? for help, n and p for next and previous slide; usage hints)
Jens Lechtenbörger (License Information)
February 2025 (emacs-reveal 9.44.0 and later)
A separate Howto for Text-To-Speech (TTS) with emacs-reveal exists as well...
.html (and whatever follows) in address bar of
browser with .pdf
Slides contain additional notes as plain text if you see the folder icon at the top right (as on this slide)
Emacs-reveal is free software
to generate reveal.js presentations (slides with audio) from simple text
files in Org mode
Emacs-reveal should really be used with the text editor GNU Emacs
GitLab.com, e.g., with the
Web IDE
(requires login))Emacs-reveal builds upon Gnu Emacs with
Org mode
emacs-reveal)elisp/publish.el stops with an error,
resulting in broken presentations
Add following to beginning of elisp/publish.el to
generate only HTML
(setq oer-reveal-publish-org-publishing-functions
'(oer-reveal-publish-to-reveal))
Emacs-reveal can manage bundled software
emacs-reveal-managed-install-p being toer-reveal-revealjs-version specifies the
target version of reveal.js for emacs-revealemacs-reveal-managed-install-p to nilemacs-reveal changes values of other packages
(org-ref, oer-reveal) without warningemacs-revealemacs-reveal in a directory of your choice
~/.emacs.d/elpa, and clone software
cd ~/.emacs.d/elpagit clone --recursive https://gitlab.com/oer/emacs-reveal.git
--recursive downloads submodules)~/.emacs
(add-to-list 'load-path "~/.emacs.d/elpa/emacs-reveal")(require 'emacs-reveal)org-ref or citeproc is
offered, if necessary)emacs-reveal
yourself
--recursive)
cd ~/.emacs.d/elpagit clone https://gitlab.com/oer/emacs-reveal.git~/.emacs
(add-to-list 'load-path "~/.emacs.d/elpa/emacs-reveal")(setq emacs-reveal-managed-install-p nil)
emacs-reveal-managed-install-p(require 'emacs-reveal)"~/.emacs.d/elpa/emacs-reveal"
remain empty)emacs-revealgit clone --recursive https://gitlab.com/oer/emacs-reveal-howto.git
--recursive gets an embedded repository for figurescd emacs-reveal-howto/howto.org
emacs --batch --load elisp/publish.elemacs-reveal.el
elisp/publish.el tries
(a) ~/.emacs.d/elpa/emacs-reveal (suggested on
earlier slide) and
(b) sibling directory emacs-revealorg/config.org
Create presentations with Docker

“Docker logo” under Docker Brand Guidelines; from Docker
emacs-revealCreate and publish presentations on GitLab

“GitLab Logo” by GitLab under CC BY-NC-SA 4.0; from gitlab.com
emacs-reveal-howto
howto.org.org
oer-reveal-publish-all)emacs --batch --load elisp/publish.el
public/firefox public/howto.htmlpublic/ to public web server.org file using Org export functionality: C-c C-e w b (export with oer-reveal)
emacs-reveal should be in effect
(emacs-reveal.el is loaded, e.g., with
step (2) above)reveal.js, must be accessible in .org file’s
directory
I use
emacs --batch --load elisp/publish.el
once to populate public/, then create a symbolic link:
ln -s public/reveal.js
(setq oer-reveal-export-dir "./")C-c C-e v v and C-c C-e
v b) or oer-reveal (C-c C-e w w and C-c C-e w b)
oer-reveal-plugins and
oer-reveal-plugin-configSample invocations in directory of this project
docker run --rm -it -v $PWD:/oer registry.gitlab.com/oer/emacs-reveal/emacs-reveal:9.12.0 cd oer emacs --batch --load elisp/publish.el
git clone <the URL of YOUR GitLab project>looks like code
Just some horizontally centered text. Created by assigning class
org-center (for which oer-reveal.css specifies text-align: center).
Alternatively, Org’s center blocks are exported by plain HTML export,
see org-html-center-block.
Information on that slide is derived from
header lines of howto.org
#+SPDX-FileCopyrightText: 2017-2020 Jens Lechtenbörger <https://lechten.gitlab.io/#me> #+SPDX-License-Identifier: CC-BY-SA-4.0
#+ to
be recognized as Org mode keywordsPro
Con
audio-autoplay, audio-speed=2.0reveallicense, revealimg, revealgrid
This figure is part of a different presentation

emacs-reveal
;; Semicolon starts comment until end of line (Emacs Lisp). ;; Note that the line for dc:title below is just a comment. In that ;; case, "Image" is used as generic title; uncomment for real title. ;; CC0 does not require attribution of author/creator; uncomment if needed. ((filename . "./figures/3d-man/decision-1013751_1920.jpg") ; Note the path prefix ; (dc:title . "The title given by the author") (licenseurl . "https://creativecommons.org/publicdomain/zero/1.0/") (licensetext . "CC0 1.0") ; (cc:attributionName . "Jens Lechtenbörger") ; (cc:attributionURL . "https://lechten.gitlab.io/#me") (dc:source . "https://pixabay.com/en/decision-question-response-1013751/") (sourcetext . "Pixabay") (imgalt . "Balance tipping in favor of Yes") (imgadapted . "converted from") ; Adjust as needed (texwidth . 0.5) ; Width in percent of textwidth for LaTeX export )
“Fairphone 2” by Kaihsu Tai under CC BY-SA 4.0; cropped from Wikimedia Commons
Single line in source file, using macro revealgrid
{{{revealgrid(42,"./figures/devices/computer.grid",60,4,3,"\"ga1 ga2 ga2 ga3\" \"ga1 ga4 ga5 ga6\" \"ga7 ga8 ga9 ga9\"")}}}
computer.grid as follows("./figures/devices/white-male-1834091_1920.meta" "./figures/devices/commodore-160186_1280-CC0.meta" "./figures/devices/laptop-154091_1280.meta" "./figures/devices/router-157597_1280.meta" "./figures/devices/car-49278_960_720.meta" "./figures/devices/beauty-1260974_1920.meta" "./figures/devices/vintage-tv-1116587_960_720.meta" "./figures/devices/smartwatch-1874536_1280.meta" "./figures/devices/Fairphone_2_reverse.meta")
(Audios produced with MaryTTS, converted to Ogg format with Audacity)
Emacs-reveal embeds this
quiz plugin
org-re-reveal-klipse-languages for supported subset
reveal_klipsify_src:t (as in
header of this file) or set variable org-re-reveal-klipsify-src
to t; be sure to disable scaling of reveal.jsorg-src-preserve-indentation to t (see bottom of this file)
<h1 class="whatever">hello, what's your name</h1>
console.log("success");
var x='string using single quote';
x
def factorial(n):
if n < 2:
return 1
else:
return n * factorial(n - 1)
print(factorial(10))
dot of Graphvizoer-reveal-publish-babel-languagesorg-publish-project-alistgraph {
hello [label="Hello"];
world [label="World!"];
hello -- world;
}
The following snippet of elisp/publish.el activates dot and
publication of generated images
(make-directory "img" t) (setq oer-reveal-publish-babel-languages '((dot . t) (emacs-lisp . t)) org-publish-project-alist (list (list "img" :base-directory "img" :base-extension "png" :publishing-function 'org-publish-attachment :publishing-directory "./public/img")))
before_script
Except where otherwise noted, the work “How to create presentations with emacs-reveal”, © 2017-2025 Jens Lechtenbörger, is published under the Creative Commons license CC BY-SA 4.0.
In particular, trademark rights are not licensed under this license. Thus, rights concerning third party logos (e.g., on the title slide) and other (trade-) marks (e.g., “Creative Commons” itself) remain with their respective holders.