Presentation Tools

On tools for presentation.

Standard technology

The default options:

  • Microsoft Powerpoint.
  • Apple Keynote.

Both these are a colossal waste of time, adding little to my research while sucking energy into a black hole of trying to give a shit about niggly presentation and file type compatibility issues. Both, last time I looked, had a terrible mathematical equation typesetting work flow, although Keynote went beyond terrible to abysmal in this area. Although admittedly the last time I looked it was 2011.

An alternative strategy might re-use the documentation, code, maths markup and/or graphs from my actual research articles and code.

It turns out that this is not hard as such, merely harder than it should be. Read on for options.

Aside: I was going to try out the cloud-based Microsoft Sway which addresses some of my Powerpoint irritations. However it also supports no mathematics so is once again a non-starter for me.

RMarkdown slides

These are secretly HTML slides, but that is more of an implementation detail. My current default choice. Supporting web display, mathematical markup, code, and dynamic interaction. Recommended. My preferred option for RMarkdown is outputting HTML slides, covered below, but it is also worth mentioning that it can output PDF slides, and crucially, Powerpoint.

RMarkdown Powerpoint

RMarkdown will export to Powerpoint (thanks pandoc).

The main trick is the speaker notes, which look like this:

::: notes
This is a speaker note.

This is not the same as the speaker notes for either remark.js/xaringan or reveal.js, so switching between these is not seamless.

NB Mathematical markup is supported but not LaTeX macros of any kind.

Still, it is not too nasty.

RMarkdown HTML

There is built-in Reveal

Remark.js achieves has native R support via xaringan, which is Yihui Xe’s favourite. It has such luxuries as presenter notes and interactive style generator.

It was not immediately obvious what dialects of markdown are supported by remark.js. (not pandoc!) Specifically it supports gfm and commonmark. The documentation for the former is superior.

PDF slides

Generate a PDF using your choice of technology Display the PDF in presentation mode using your PDF viewer. AFAICT this cannot play multimedia stuff in any robust way.


Scribus is a good open source desktop publisher system (think InDesign, but free.) I discovered it while writing some posters, but it has many features to recommend it for PDFs also, including an in-built LaTeX math renderer and good support for vector graphics, and it will even render arbitrary graphs from weird command-line software automagically via render frames.

Latex slides

Beamer, the LaTeX slide thingy, also works. It is hard to do too exciting a design but this in itself is perhaps a feature. It lends a certain reassurance to the audience that you are performing the rituals of academia in a Right and Proper fashion.

Note that BibTeX does not work with beamer. BibLaTeX, by contrast, seems to.

knitr does support beamer slides too, although why would you want to do that?

There is no hope of making beamer match my corporate style guide in any sensible timeframe, but I could choose the closest approximation by looking at the example theme matrix. OTOH, who actually meets corporate style guidelines? No academic I know at any academic conference I have been to.


Jupyter support reveal.js HTML slide output. TBD.


In addition to the basic reveal.js integration in jupyter, there is even a convenient (although slightly restricted) version of reveal available to display and interact with jupyter notebooks as slideshows via RISE.

Customisation of style etc for RISE:

  1. use nbextensions_configurator; this tool offers an interactive way to enable, disable and tweak all notebook extensions - see screenshot below;
  2. define settings in JSON files, typically by using python scripts;
  3. you can also embed settings in a specific notebook’s metadata;
  4. and you can also provide your own CSS file(s), that can supersede styling of the various DOM pieces.

PDF export is clunky but works.

HTML slides

HTML slides are powerful because they can leverage all the powers of web browsers, which are a powerful execution platform these days. Many of the systems mentioned above output to HTML slides, but you can also use them bareback.

reveal.js and remark.js are the best I have tried. Reveal.js seems more popular, although a little over-engineered. There are many additional options listed below.

A useful tool for all of the methods, more or less, is decktape: PDF exporter for HTML presentations.


reveal.js is the poster child for HTML slides. the online editor makes it easier to collaborate with my non-HTML-nerd colleagues.

Creating themes seems to require you to fork reveal’s github repo for full generality, which feels a bit weird. Although in principle one can still just inject those CSS stylesheets as made famous by the web, right? Either way, in practice themeing can be a rabbit hole of flex-box and responsive media queries.

If a PDF export is needed, an adequate method is as follows:

Presentations can be exported to PDF via a special print stylesheet.

Note: This feature has only been confirmed to work in Google Chrome and Chromium.


  1. Open your presentation with print-pdf included in the query string, for example: http://localhost:8000/?print-pdf. You can test this at
  2. Open the in-browser print dialog (CTRL/CMD+P).
  3. Change the Destination setting to Save as PDF.
  4. Change the Layout to Landscape.
  5. Change the Margins to None.
  6. Enable the Background graphics option.
  7. Click Save

Alternatively, generic PDF exporter decktape also works.

See also sundry workflow notes.


remark.js is mostly similar to Reveal.js, is a more minimalist maybe and a little tidier.

Other HTML slide systems

Alternatives: Animations and interactives

python animations?

No comments yet. Why not leave one?

GitHub-flavored Markdown & a sane subset of HTML is supported.