Creating presentation slides using remark.js

I asked my department members (a Statistics department) what their preferred methods for creating slides for a talk were. The most popular answer was the xaringan package for R, which builds on remark.js.

I plan to try a similar combination for Julia using Weave.jl and wanted to check first that I wasn’t reinventing the wheel. I didn’t see anything about remark.js in the Weave documentation.


Slightly off-topic, another interesting javascript based library to create presentations is reveal though I’m not sure how they compare. It usually is quite pleasant to create slides involving code in reveal, as it can be done via a visual editor where one can add code blocks with syntax highlighting, but I imagine you are thinking of a way to create the presentation automatically from a jmd file so that shouldn’t matter much.

In terms of “turn a markdown into a slide show with as little effort as possible” there also is GitPitch, though I’m not sure if one can use it locally, without having to push to a GitHub repository.

1 Like

reveal is definitely another option, especially as it can be integrated with Jupyter notebooks. In fact, if you check the toolbar on Jupyter notebooks at JuliaBox you will see that there is the ability to switch back and forth between Jupyter and a presentation mode.

It seems to me that remark has better capabilities for styling the slides than does reveal.

Interesting! I’ll definitely check out remark then, I haven’t used it yet. Also looking forward to your package!

I don’t think it would be necessary to create a new package - perhaps just extend Weave.jl

I’ve used Remark and Reveal and liked Remark better – it was more flexible and I agree that it’s easier to style with a little CSS. With Reveal I ended up writing slides in Markdown and then using prez to turn them into slides, but Remark cut out that middle step. Its presenter mode is solid too.

I’d love to be able to weave .jmd files into a Remark presentation!

I’ve also used both, and also migrated all my work to Remark. The CSS was more flexible, it was easy to make it stand-alone for no-bandwidth situations (aka public speaking), and it didn’t have the overly-fancy flashiness that Reveal had.

Reveal has lots of eye candy that gets old quickly, and which don’t work on web-shared presentations.

The biggest plus with Remark is really that you can just type markdown into the HTML body without the extra hoops of Reveal - Reveal actually wants you to type HTML, but you can trick it into reading markdown.

P.S. If you’re modifying CSS, it streamlines things to use SCSS/Compass.

I use Jupyter notebooks with the RISE plugin, both for Python and for Julia stuff. Works awesomely and allows live code examples which can be changed during the presentation.


For some reason I have never managed to get Jupyter + RISE to work properly. I end up using nbconvert --to slides (though it has problems too, e.g.

1 Like

Starting with jupyter / juliabox + reveal is an easy going experience.
Problems come when you need to change / merge / split / version files.
Not so easy as with markdown directory.

I have converted a few of my slides to git / gitbook, gitbook opensource for these reasons.
A tool with a good equilibrium between simplicity, features and support.

I definitively like weave mindset and think it is the way to go.
But subdorate there may be some shortage on ressource available behind it today.

After Julia 1.0, it may be simpler to expand it and plug more and more things like pandoc, reveal, commonmark etc.

[Edit]: Forget to precise that you can publish a gitbook with gitlab pages
example here:
It should work with github pages too (i have not try it personally).

I’ve been playing a bit with remark and I found it very nice! One feature that I think would be very valuable to keep in the Weave+Remark integration is the following: with PlotlyJS it is possible to save the plot as html and simply embed the html in the presentation markdown, preserving interactivity.

I’m also wondering if somehow it would also be possible to add widgets from InteractNext, though that seems more challenging.

The final frontier for Remark.js or systems like that is finding a way to export to (ugh) Powerpoint. I like making these presentations in fast/fluid/direct markdown, and often get to present them that way.

But often with clients and former employers, they wanted it in PPTX format, and they’re the boss. I found semi-manual ways to export the text to a very specific outline, then into powerpoint slides within Powerpoint, and then had to manually place images. But I did not find a way to automate a full export.

Anyone find that export? Hopefully I’ll never need that again in my new gig; it’s like casting gold into lead.

Mini update: I made a small Remark package (not released yet) to create a folder with the necessary HTML code to run a presentation using remark.js starting from a markdown. It includes latex support via KaTeX and downloads all the required js libraries to be able to run the presentation offline (I’m always nervous of not having internet at the conference venue). If it helps in your project, feel free to use it. It’d be nicely complemented by the ability to create a markdown that runs code and includes the result of the code inline which I think Weave can provide.

Second update: actually thanks to @fredrikekre Literate package and Documenter it can also be used to run code blocks inline (using Literate or Documenter conventions, depending whether you prefer the source code to be Julia or markdown), see the README for example usage.