When developers are working on a project, their main focus is typically fleshing out a foundation for their code and then building upon this base. Each new feature added means added complexity to their project or product. Over time, this can cause difficulty in following along with the project or even how to utilize it. For this reason, we have documentation such as a README.md in a GitHub repository. While this is a good way to document your work, it may not be enough for situations like demos or presentations. So, what if we could use an already familiar syntax, like that of a README.md, to generate a slide deck in a short amount of time?
I’ve had the opportunity to look into two solutions for overcoming this particular challenge: Deckset and Marp. They both use markdown to automatically style and generate a slide deck presentation for you. This could potentially help developers level up their documentation while also keeping their presentations in source control with the rest of their code.
Deckset is a pretty awesome tool for generating aesthetically pleasing slides using markdown while mainly focusing on the content. Their documentation and tutorials are fairly short and easy to follow along with, making it very beginner friendly.
Deckset has their own configuration commands that belong at the very top of the markdown file as a way of controlling the way your presentation looks and works. These can be set globally or on a per-slide basis.
A dandy feature that is offered with Deckset is speaker notes. For specific slides that shouldn’t be text heavy, speaker notes allow the presenter to jot down notes that can only be seen on the presenter’s display.
A shortcoming that we encountered with Deckset is that it only allows you to export presentations in the following formats: PDF, PDF (reduced file size), JPEG, and PNG. While these options are normally fine, we needed it to be in an embeddable format for our use case of embedding the presentation somewhere else, such as a static site.
Pandoc was brought up as a means of converting the Deckset presentation into an embeddable format, such as a PowerPoint presentation (*.pptx). Pandoc is a command-line tool for converting files from one markup format to another. What we tried was to simply convert the markdown file for Deckset into *.pptx format and see how the slide deck would translate in Powerpoint. For the conversion, we use the command
pandoc < input_file.md > -f markdown_mmd -t pptx -s -o < output_file.md >
What ended up happening was that most (if not all) of the styling from Decksets configuration commands were lost and would actually display the markdown in the slide.
While Deckset is a very awesome tool for creating stylish slide decks using markdown, we had to explore other options to satisfy our use case. Enter Marp
Marp is an open-source markdown presentation tool that functions very similarly to Deckset. The key differences we found is that Marp offers a plugin for VS Code, a command-line interface, and the ability to export to *.pptx. One drawback is that the styling is a little bit more involved than Deckset. Marp offers 3 built-in themes, but also allows for custom styling by either tweaking markdown or creating your own using plain CSS.
Converting your markdown presentation to *.pptx is made simple using the Marp CLI. The format of the command is:
marp --pptx < input_file.md >
What we observed is that the markdown translates pretty well to Powerpoint. One thing to note is that after it is converted, you will not be able to edit content within the slides. Think of them as being an image, or a layer, at this point. However, it is possible to add additional content to the slides.
Overall, we found that Deckset was a wonderful tool for creating beautiful slide decks using markdown. Their brief and concise documentation makes it very easy to get started, and the ability to incorporate speaker notes adds more flexibility in the way that the slide deck can be presented. If you just want a charming presentation, Deckset is definitely the tool for the job. However, if you want to be able to convert your markdown to an embeddable format, such as *.pptx, Marp is a good alternative with the slight inconvenience of having to work on styling a little more.