Presentations: The quantum of information for all parts of society for which the quantum of information is not a tweet or a facebook status update. Powerpoint presentations are already purported to have various oft-cited defects but these I will not discuss here. In my trade they are a necessary evil.
I’m all about harm minimisation of the evil, starting here with technical harm.
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 transitions and fiddly filetype compatibility issues. Both have a terrible mathematical equation typesetting workflow, although Keynote goes beyond terrible to abysmal in this area.
An alternative might re-use the documentation, code, math 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.
Less shitty presentation technology
pandoc supports various slide backends, even fancy slides.
Generate a PDF then display the PDF in presentation mode. Actually easy, if not that powerful.
HTML slides are powerful because of all the work that has gone into browser support these days.
- The classic is Eric Meyer’s S5, although it’s showing its age. No longer recommended.
- trendier and more elegant: deck.js …
- marp us a integrated markdown presentation writer setup
- impress.js does prezi-com-style fancy slide animations. Documentaiton is spartan
deck.js are the best, for my money.
Reveal.js seems better tested and robuster,
deck.js is more elegant. I ended up using reveal.js because the online editor makes it easier to collaborate with my non-HTML-nerd colleagues, and it is integrated with jupyter
Some notes about reveal.js:
Creating themes seems to require you to fork reveal’s github repo for full generality, which feels a bit weird. Although you can still just inject those famous CSS style sheets as made famous by the web, right? Pracically, theming can be a rabbit hole of flex-box and responsive media queries. I suspect if you are doing too much of that you should just be using powerpoint or keynote or something, unless your day-job is actually CSS.
Note that there is a convenient (although slightly restricted) version of reveal available through interactive jupyter slideshows via RISE.
Do you need to preview slideshows to colleagues who are allergic to html? You can export as a PDF, although it’s not quite as immediate as you’d hope.
[You can print a slideshow as a PDF from Chrome manually. For reveal (and certain other formats) you can use decktape which runs its own private Chrome browser headless merely as a print driver.
RISE is the interactive jupyter notebook slidehow that uses reveal as a backend.
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.
“Beamer”, the LaTeX slide thingy, also works. I am not a huge fan of LaTeX except for its mathematical markup support, and that is (sufficiently) available in HTML too thanks to MathJax, but if I work on slides in beamer my colleagues will be calmer because they feel they understand it better.
Note that BibTeX does not work with beamer. BibLaTeX, by contrast, seems to.
knitr does support beamer slides too.
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.
So how do you actually give a good presentation?
Like most academics, I will leave this one for some unspecified future date.
Alternatives: Animations and interactives
3b1b’s manim is a curious passion project to create interactive mathematical animations in code, targeting e.g. youtube.
an interactive tutorial on making interactive tutorials using d3.js (which would also work fine with