Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time

mk_doc_ultra

A collection of macros to help write tutorials.

Requirements:

  • mkdocs
  • mkdocs-material>=5.4.0

Usage

You can download the contents or add it as a submodule to your repo.

For the rest of this document we assume it is located in the same place as your mkdocs.yaml file. That is, in the root of the repo, in a directory called mk_doc_ultra.

Add the following to your plugins/macros config hierarchy:

module_name: 'mk_doc_ultra.main'
include_dir: 'mk_doc_ultra/'

For example:

plugins:
  - search
  - macros:
      module_name: 'mk_doc_ultra.main'
      include_dir: 'mk_doc_ultra/'

Then in the theme element, add custom_dir: 'mk_doc_ultra/'.

Finally, include mk_ultra.css in your extra_css config.

A full example:

site_name: Some Site

nav:
  - home: index.md


markdown_extensions:
  - admonition
  - codehilite:
      linenums: false

plugins:
  - search
  - macros:
      module_name: 'mk_doc_ultra.main'
      include_dir: 'mk_doc_ultra/'


theme: 
  name: material
  custom_dir: 'mk_doc_ultra/'
  logo: 'images/logo.svg'
  palette:
    primary: 'indigo'
    accent: 'indigo'
    
extra:
  draft: 1
  year: '2020/21'

extra_css: 
    - css/extra.css
    - mk_ultra.css

The extra variables shown above are used by the version_info macro.

Provided Macros

version_info

todo

button

Adds a button. Taken from the sample macro file and left because it might be useful later.

state

code_from_file

Adds a code block taken from the given file. Example:

{{code_from_file("example.py")}}

Parameters:

  • start: If given, sets the starting line number to show. Defaults to 0
  • stop: If given, sets the last line number to show. Defaults to the last in the file
  • flavour: sets the type of highlighting to be used, e.g. "python"
  • download: If set to True, includes a link to download the source file. Default is False
  • execute: If set to true, executes the code and displays the output
  • typed: If given, this string will be used as user input to the code being executed
  • colour: If set to true, adds output highlighting. Curerntly only highlights the piped user input

external_markdown

Theme Switcher

I have also added a theme switcher for the mkdocs material theme. This allows you to select between dark mode, and light mode. It uses localstorage to stash a "lightMode" token so it remembers the settings.

To use the switcher you need to modify your mkdocs.yaml

  • Include the custom.css file using the extra_css attribute

  • Place the custom_theme in the base directory (the same one as the mkdocs.yaml, not the docs directory

  • Configure in the config file using:

    theme:
      name: material
      palette:
        scheme: preference
      custom_dir: custom_theme