Skip to content

Instantly share code, notes, and snippets.

@jceb
Last active October 7, 2019 06:17
Show Gist options
  • Save jceb/6c931fe7d17ce4adf497bca277f73131 to your computer and use it in GitHub Desktop.
Save jceb/6c931fe7d17ce4adf497bca277f73131 to your computer and use it in GitHub Desktop.
Markdeck Theming

Markdeck Theming

Markdeck is a software that turns Markdown text documents into beautiful presentations that are displayed in the web browser. The two presentation frameworks impress.js and reveal.js are at the basis of this functionality.

These frameworks come with methods for customizing the visual presentation. Markdeck extends these methods and offers two approaches for customization:

  1. Themes that can be reused across multiple presentations, e.g. a theme and style for an organization
  2. Melodies, styling changes that only affect the current presentation, e.g. a changed font size or color

Melodies

Melodies are styling changes that only affect the current presentation. They are made by altering the stylesheet file assets/css/styles.scss. See the Sass documentation for details about the syntax.

Mardeck automatically compiles the stylesheet into CSS and integrates it into the presentation. The styling of the currently active theme is overridden by the melody.

Themes

Themes are comprehensive styles that are made to be reused across multiple markdeck presentations. For example, organizations usually create themes so that presentations are visually linked to it. In addition common styling, they often include specific fonts, background images, and additional elements like logos and banners.

In mardeck, themes are inspired by and compatible with reveal.js themes, see reveal.js theming and Creating a Theme.

The following conventions exist for creating a markdeck theme:

  • Themes are stored in the folder assets/css/theme/
  • Each theme is fully contained in its own subfolder that is named according to the theme's name that consists of the following characters [a-zA-Z0-9], e.g. mytheme/
  • Each theme contains a Sass file that has the same name as the theme with the extension .scss, e.g. mytheme.scss
  • All assets are stored in the subfolder assets/
  • Plain HTML can optionally be included in by creating files include-before-body and/or include-after-body

Example file hierarchy for a theme:

.
├── assets
│   └── css
│       └── theme
│           └── mytheme
│               ├── assets
│               │   ├── fonts
│               │   │   ├── myfont.css
│               │   │   └── myfont.ttf
│               │   └── images
│               │       ├── background.png
│               │       └── logo.png
│               ├── include-after-body
│               ├── include-before-body
│               └── mytheme.scss
└── slides.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment