On tools for presentation.
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.
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.
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.
There is built-in Reveal
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
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.
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.
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:
- use nbextensions_configurator; this tool offers an interactive way to enable, disable and tweak all notebook extensions - see screenshot below;
- define settings in JSON files, typically by using python scripts;
- you can also embed settings in a specific notebook’s metadata;
- and you can also provide your own CSS file(s), that can supersede styling of the various DOM pieces.
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.
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.
- Git source code
- It has a GUI theme editor.
- There is a commercial spinoff GUI slide editor slides.com.
- jupyter notebooks support reveal.js.
- Note that Rmarkdown suppports reveal.js.
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.
- Open your presentation with print-pdf included in the query string, for example: http://localhost:8000/?print-pdf. You can test this at revealjs.com/demo?print-pdf.
- Open the in-browser print dialog (CTRL/CMD+P).
- Change the Destination setting to Save as PDF.
- Change the Layout to Landscape.
- Change the Margins to None.
- Enable the Background graphics option.
- 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
- The classic is Eric Meyer’s S5, although it’s showing its age. No longer recommended.
- Also foundational and elegant, but no longer maintained, deck.js …
- marp is an integrated markdown presentation writer
- MarkDeck - presentations as code promises good offline support
- impress.js does prezi-style fancy slide animations. Documentation is basic
- DZslides is not my favourite but worth mentioning because it’s used as a knitr example, although in fact one could better use S5 or, more modern still, reveal.js.
- an interactive tutorial on making interactive tutorials using d3.js
(which would also work fine with
- wunderpresentation turns other things into presentations. For the moment, notably, trello.
Alternatives: Animations and interactives