Scott's Weblog The weblog of an IT pro specializing in virtualization, networking, open source, and cloud computing

The Linux Migration: Creating Presentations

Long-time readers of my site know that I’m a fan of Markdown, and I use it extensively. (This blog, in fact, is written entirely in Markdown and converted to HTML using Jekyll on GitHub Pages.) Since migrating to Linux as my primary desktop OS, I’ve also made the transition to doing almost all my presentations in Markdown as well. Here are the details on how I’m using Markdown for creating presentations on Linux.

There are a number of tools involved in my workflow for creating Markdown-based presentations on Linux:

  • Sublime Text 3 (with the Markdown Extended and Monokai Extended packages) is used for editing the “source” files for a presentation. Three “source” files are involved: a Markdown file, an HTML file, and a Cascading Style Sheet (CSS) file.
  • Remarkjs takes the Markdown-formatted content and converts it into a dynamic HTML-based presentation, formatting it according to the styles defined in the CSS file. This gives tremendous flexibility in formatting the presentation. (Check it out on GitHub.)
  • I use a web browser to display the HTML output generated by Remarkjs (in my case, I’m using Firefox on my Fedora laptop).
  • To help with creating a PDF version of the presentation, I use a tool called Decktape. This tool supports a number of HTML-based presentation frameworks, including Remarkjs, and produces a clean PDF that I can distribute after the presentation (if so desired). To help with using Decktape, I’ve created a simple shell script (I named it mkpdf) that automates calling Decktape to create PDF output. (This shell script is found in my “scripts” GitHub repository.)

The general workflow of these tools goes like this:

  1. I’ll create a new folder for a presentation. In this new folder I’ll copy in the Remarkjs files, a boilerplate HTML file (this doesn’t need to change from presentation to presentation), a Markdown file, and a CSS file.
  2. If I need to change/adjust styles, I’ll edit the CSS file (using Sublime Text, of course) to get the results I want. This is one positive side effect of this approach: it’s forced me to improve my CSS skills/knowledge.
  3. I’ll create the content in Markdown (with Remarkjs extensions) using Sublime Text. As I create the content, I can preview the presentation in Firefox (I simply reload the page every time I save changes to the source files).
  4. Pictures, diagrams, etc., exist as separate files in the presentation-specific folder. They are referenced in the Markdown content file.
  5. Once the content is finished, the styles are to my satisfaction, and all necessary additional files (pictures or whatever) have been saved into the presentation’s folder, then I use my mkpdf script (which in turn calls Decktape) to create a PDF version of the slide deck.

And that’s it! When I’m ready to present, I can use either the HTML version in Firefox or the PDF version in a PDF viewer.

Future Changes

I’m still exploring a few potential optimizations:

  • Should I use a centralized style sheet for all presentations?
  • How/where does version control—in other words, Git—fit into this approach?
  • Can I use Remarkjs’ support for “variables” or “parameters” to further increase re-use of content across presentations?


As with every technology, there are a few drawbacks to this approach:

  • Image control is a bit limited. I generally find that I have to resize all images to a 16:9 aspect ratio in order for it to look good with Remarkjs.
  • There’s no support, AFAIK, for animations.

For me, though, these limitations haven’t yet posed a significant problem. Nevertheless, keep them in mind if you are considering this sort of approach yourself.

Additional Information

I also experimented with Markdown-based presentations while still using OS X; here’s a post with more information.

Be social and share this post!