Skip to main content

Unleash the power of MkDocs with macros and variables

Project description

Mkdocs-Macros

Unleash the power of MkDocs with variables and macros

License: MIT Language PyPI Github macros

:open_file_folder: Used by > 2K repositories on Github
🥇 Listed as High-Quality Plugin

mkdocs-macros-plugin is a general-purpose plugin for MkDocs
that uses variables and macros (functions) to automate tasks, and produce richer and more beautiful pages.

The unit price of product A is {{ unit_price }} EUR.
Taking the standard discount into account,
the sale price of 50 units is {{ price(unit_price, 50) }} EUR.

View the mkdocs-macro documentation on Read the Docs.

Overview

mkdocs-macros-plugin is a plugin that makes it easier for contributors of an MkDocs website to produce richer and more beautiful pages. It transforms the markdown pages into jinja2 templates that use variables, calls to macros and custom filters.

You can also partially replace MkDocs plugins with mkdocs-macros modules, and pluglets (pre-installed modules).

Using variables

You can leverage the power of Python in markdown thanks to jinja2 by writing this :

The unit price of product A is {{ unit_price }} EUR.
Taking the standard discount into account,
the sale price of 50 units is {{ price(unit_price, 50) }} EUR.

If you defined a price() function, this could translate into:

The unit price of product A is 10.00 EUR.
Taking the standard discount into account,
the sale price of 50 units is 450.00 EUR.

The result of a macro can be HTML code: this makes macros especially useful to make custom extensions to the syntax of markdown, such as buttons, calls to email, embedding YouTube videos, etc.

It is possible to use the wide range of facilities provided by Jinja2 templates such as conditions ({% if ... %}) and loops ({% for ... %}).

Defining variables

Regular variables can be defined in five ways:

No Validity For whom Description
1. global designer of the website in the mkdocs.yml file, under the extra heading
2. global contributor in external yaml definition files
3. global programmer in a main.py file (Python), by adding them to a dictionary
4. local (page) writer in the YAML header of each Markdown page
5. local (page) writer with a {%set variable = value %} statement

In addition, predefined objects are provided (local and global), typically for the environment, project, page, git information, etc.

Macros and filters

Similarly programmers can define their own macros and filters, as Python functions in the main.py file, which the users will then be able to use without much difficulty, as jinja2 directives in the markdown page.

Installation

Prerequisites

  • Python version > 3.7
  • MkDocs version >= 1.0 (compatible with post 1.5 versions)

Standard installation

pip install mkdocs-macros-plugin

"Manual installation"

To install the package, download it and run:

pip install .
# or...
python setup.py install

Development/test installation

To install the extra dependencies required for testing the package, run:

pip install "mkdocs-macros-plugin[test]"

Declaration of plugin

Declare the plugin in the file mkdocs.yml:

plugins:
    - search
    - macros

Note: If you have no plugins entry in your config file yet, you should also add the search plugin. If no plugins entry is set, MkDocs enables search by default; but if you use it, then you have to declare it explicitly.

Check that it works

The recommended way to check that the plugin works properly is to add the following command in one of the pages of your site (let's say info.md):

{{ macros_info() }}

In the terminal, restart the environment:

> mkdocs serve

You will notice that additional information now appears in the terminal:

INFO    -  Building documentation...
[macros] Macros arguments: {'module_name': 'main', 'include_yaml': [], 'j2_block_start_string': '', 'j2_block_end_string': '', 'j2_variable_start_string': '', 'j2_variable_end_string': ''}

Within the browser (e.g. http://127.0.0.1:8000/info), you should see a description of the plugin's environment:

macros_info()

If you see it that information, you should be all set.

Give a good look at the General List, since it gives you an overview of what you can do out of the box with the macros plugin.

The other parts give you more detailed information.

Using pluglets

What are pluglets?

Pluglets are small, easy-to-write programs that use mkdocs-macro's foundation to offer services to mkdocs projects, which would normally be offered by plugins.

Pluglets are Python packages, which can be hosted on github, and distributed through PyPI.

How to add a pluglet to an mkdocs project?

Install it:

pip install <pluglet_name>

Declare it in the project's config (mkdocs.yml) file:

plugins:
  - search
  - macros:
      modules:
        - <pluglet_name> 

How to write a pluglet?

See instructions in the documentation.

A sample pluglet can be found in mkdocs-test (github).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mkdocs-macros-plugin-1.0.5.tar.gz (566.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mkdocs_macros_plugin-1.0.5-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file mkdocs-macros-plugin-1.0.5.tar.gz.

File metadata

  • Download URL: mkdocs-macros-plugin-1.0.5.tar.gz
  • Upload date:
  • Size: 566.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.28.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.18

File hashes

Hashes for mkdocs-macros-plugin-1.0.5.tar.gz
Algorithm Hash digest
SHA256 fe348d75f01c911f362b6d998c57b3d85b505876dde69db924f2c512c395c328
MD5 2eed4865c799168768f00a723102ba97
BLAKE2b-256 c19206948e4d60aac760c227f8fcc86d20dfc0cf9b1735b087302ac6c16a9479

See more details on using hashes here.

File details

Details for the file mkdocs_macros_plugin-1.0.5-py3-none-any.whl.

File metadata

  • Download URL: mkdocs_macros_plugin-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.28.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.18

File hashes

Hashes for mkdocs_macros_plugin-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f60e26f711f5a830ddf1e7980865bf5c0f1180db56109803cdd280073c1a050a
MD5 e5eeff86d81a4750a04389ec4d6eeae3
BLAKE2b-256 c56081e3b580bafe20a3103163b8fd89f62911f0df2e50f331d316313f8c2dc8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page