Markdown Exec
Utilities to execute code blocks in Markdown files.
For example, you write a Python code block that computes some HTML,
and this HTML is injected in place of the code block.
Installation
pip install markdown-exec[ansi]
The ansi
extra provides the necessary bits (pygments-ansi-color
and a CSS file)
to render ANSI colors in HTML code blocks. The CSS file is automatically added
to MkDocs' extra_css
when Markdown Exec is activated via plugins
(see below).
Configuration
This extension relies on the
SuperFences
extension of
PyMdown Extensions.
To allow execution of code blocks,
configure a custom fence from Python:
from markdown import Markdown
from markdown_exec import formatter, validator
Markdown(
extensions=["pymdownx.superfences"],
extension_configs={
"pymdownx.superfences": {
"custom_fences": [
{
"name": "python",
"class": "python",
"validator": validator,
"format": formatter,
}
]
}
}
)
...or in MkDocs configuration file, as a Markdown extension:
markdown_extensions:
- pymdownx.superfences:
custom_fences:
- name: python
class: python
validator: !!python/name:markdown_exec.validator
format: !!python/name:markdown_exec.formatter
...or in MkDocs configuration file, as a plugin:
plugins:
- search
- markdown-exec
markdown_extensions:
- pymdownx.superfences
We do recommend enabling Markdown Exec with the MkDocs plugin
if you are using MkDocs: it will take care of adding relevant
assets (CSS/JS) to the final site when needed.
Usage
You are now able to execute code blocks instead of displaying them:
```python exec="on"
print("Hello Markdown!")
```
The exec
option will be true for every possible value except 0
, no
, off
and false
(case insensitive).
Below you can see an example of running a bash script that is expected to
return a non-zero exit code:
```bash exec="1" source="tabbed-left" returncode="2"
grep extra_css README.md && exit 2
```
See usage for more details,
and the gallery for more examples!