A series of templates for Quarto to convert a single Markdown input into beautiful and simple Powerpoint, HTML, RevealJS, and PDF presentations.
All of the presentation features available in Quarto can be used with these templates - see this Quarto guide for more.
- Install Quarto. Some additional dependencies may be required, for example, a TeX installation if you don't have one already, or Python/R if you intend to use them in your materials - see the Quarto installation page for full details. You might also want to grab Open Sans for the PDF font, or else change it to one you already have in
_quarto.yml
. - Clone or download this repo to your local machine.
- Write your materials as required - either as plain Markdown files (
.md
) or using Quarto's own file type (.qmd
). These can be in the base project directory, or stored in sub-folders to more conveniently keep related material together (e.g. image files to be included), in which case the directory structure used will be echoed in the output directory. For more details on how to write presentations in Markdown, see this Quarto guide. - From a terminal at the base project directory, simply run
quarto render
. Your output files should appear in the_PRESENTATIONS
folder. - Turn formats on or off by commenting out or deleting their entries under the
format
field in_quarto.yml
.
If (like me) you want to store your outputs alongside your inputs rather than in their own sub-directory (_PRESENTATIONS
), then a post-render step can be added to move all the output files back into their source directories and then cleanup the output directory. This script is written in Typescript to run in Deno, which is included with Quarto, so no extra dependencies are required. It reads the output directory you are using from the _quarto.yml
file, cycles through all the files and files in sub-directories (to one level deep) in that output directory, and moves them back alongside their source input files.
In _quarto.yml
, simply uncomment the line post-render: _resources/scripts/return-to-source.ts
to use this script.
As both RevealJS and the regular HTML processing in Quarto produce .html
files, _quarto.yml
has RevealJS setup to use .htm
as a file extension instead. It should still work fine as a HTML file, but you can rename it to something else if you wish.
Alternatively, the post render script above also automatically renames the RevealJS output to append -RJS
to the filename, and then reverts it to a standard HTML file.
In _quarto.yml
, there is a section under format
for Powerpoint that determines the Powerpoint theme used as a reference document:
pptx:
reference-doc: _resources/templates/pptx/cosmic-latte.pptx
Change this to one of the other themes available in _resources/templates/pptx
. Options are cosmic-latte
, classy
, dark-mode
, and nord-theme
.
The _quarto.yml
file contains most of the other configuration options - in particular, a lot of the PDF output formatting such as fonts. These are all either Quarto project options or Pandoc options - add or change these as desired.
For further customisation, you can simply make changes to the templates themselves in _resources/templates
. They are named for each output format. If you know CSS / LaTeX / Powerpoint styles, go nuts!
The html template used is adapted from the GitHub Pandoc HTML5 template from the pandoc-goodies repository by Tristano Ajmone.
Pandoc lua filters are inspired and adapted from examples given in the Pandoc lua filters GitHub repo.