1
0
mirror of https://github.com/squidfunk/mkdocs-material.git synced 2024-12-25 13:54:58 +01:00
mkdocs-material/docs/setup/extensions/python-markdown-extensions.md

777 lines
25 KiB
Markdown
Raw Normal View History

# Python Markdown Extensions
2021-10-03 11:32:20 +02:00
The [Python Markdown Extensions] package is an excellent collection of
2021-10-10 12:19:14 +02:00
additional extensions perfectly suited for advanced technical writing. Material
2021-10-03 11:32:20 +02:00
for MkDocs lists this package as an explicit dependency, so it's automatically
installed with a supported version.
[Python Markdown Extensions]: https://facelessuser.github.io/pymdown-extensions/
## Supported extensions
2022-10-01 17:17:23 +02:00
In general, all extensions that are part of [Python Markdown Extensions] should
work with Material for MkDocs. The following list includes all extensions that
are natively supported, meaning they work without any further adjustments.
### Arithmatex
2023-09-14 19:09:18 +02:00
<!-- md:version 1.0.0 -->
<!-- md:extension [pymdownx.arithmatex][Arithmatex] -->
2021-10-03 11:32:20 +02:00
The [Arithmatex] extension allows for rendering of block and inline block
2021-10-04 23:36:31 +02:00
equations and integrates seamlessly with [MathJax][^1] a library for
2021-10-03 11:32:20 +02:00
mathematical typesetting. Enable it via `mkdocs.yml`:
[^1]:
Other libraries like [KaTeX] are also supported and can be integrated with
some additional effort. See the [Arithmatex documentation on KaTeX] for
further guidance, as this is beyond the scope of Material for MkDocs.
``` yaml
markdown_extensions:
- pymdownx.arithmatex:
generic: true
```
2023-09-14 19:09:18 +02:00
Besides enabling the extension in `mkdocs.yml`, a MathJax configuration and
the JavaScript runtime need to be included, which can be done with a few lines
of [additional JavaScript]:
2022-09-11 19:25:40 +02:00
=== ":octicons-file-code-16: `docs/javascripts/mathjax.js`"
``` js
window.MathJax = {
tex: {
inlineMath: [["\\(", "\\)"]],
displayMath: [["\\[", "\\]"]],
processEscapes: true,
processEnvironments: true
},
options: {
ignoreHtmlClass: ".*|",
processHtmlClass: "arithmatex"
}
};
document$.subscribe(() => {
MathJax.typesetPromise()
})
```
2022-09-11 19:25:40 +02:00
=== ":octicons-file-code-16: `mkdocs.yml`"
``` yaml
extra_javascript:
2021-10-10 12:19:14 +02:00
- javascripts/mathjax.js
- https://polyfill.io/v3/polyfill.min.js?features=es6
- https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
```
The other configuration options of this extension are not officially supported
2021-10-04 23:36:31 +02:00
by Material for MkDocs, which is why they may yield unexpected results. Use
them at your own risk.
2021-10-03 11:32:20 +02:00
See reference for usage:
- [Using block syntax]
- [Using inline block syntax]
[Arithmatex]: https://facelessuser.github.io/pymdown-extensions/extensions/arithmatex/
[Arithmatex documentation on KaTeX]: https://facelessuser.github.io/pymdown-extensions/extensions/arithmatex/#loading-katex
[MathJax]: https://www.mathjax.org/
[KaTeX]: https://github.com/Khan/KaTeX
[additional JavaScript]: ../../customization.md#additional-javascript
2023-05-23 17:42:25 +02:00
[Using block syntax]: ../../reference/math.md#using-block-syntax
[Using inline block syntax]: ../../reference/math.md#using-inline-block-syntax
2021-10-03 14:54:22 +02:00
### BetterEm
2023-09-14 19:09:18 +02:00
<!-- md:version 0.1.0 -->
<!-- md:extension [pymdownx.betterem][BetterEm] -->
2021-10-03 14:54:22 +02:00
The [BetterEm] extension improves the detection of Markup to emphasize text
in Markdown using special characters, i.e. for `**bold**` and `_italic_`
formatting. Enable it via `mkdocs.yml`:
``` yaml
markdown_extensions:
- pymdownx.betterem
```
The configuration options of this extension are not specific to Material for
2023-09-14 19:09:18 +02:00
MkDocs, as they only impact the Markdown parsing stage. See the [BetterEm
2021-10-03 14:54:22 +02:00
documentation][BetterEm] for more information.
[BetterEm]: https://facelessuser.github.io/pymdown-extensions/extensions/betterem/
### Caret, Mark & Tilde
2023-09-14 19:09:18 +02:00
<!-- md:version 1.0.0 -->
<!-- md:extension [pymdownx.caret][Caret] -->
2021-10-03 14:54:22 +02:00
The [Caret], [Mark] and [Tilde] extensions add the ability to highlight text
and define sub- and superscript using a simple syntax. Enable them together
via `mkdocs.yml`:
``` yaml
markdown_extensions:
- pymdownx.caret
- pymdownx.mark
- pymdownx.tilde
```
The configuration options of this extension are not specific to Material for
MkDocs, as they only impact the Markdown parsing stage. See the [Caret], [Mark]
and [Tilde documentation][Tilde] for guidance.
See reference for usage:
- [Highlighting text]
- [Sub- and superscripts]
[Caret]: https://facelessuser.github.io/pymdown-extensions/extensions/caret/
[Mark]: https://facelessuser.github.io/pymdown-extensions/extensions/mark/
[Tilde]: https://facelessuser.github.io/pymdown-extensions/extensions/tilde/
[Highlighting text]: ../../reference/formatting.md#highlighting-text
[Sub- and superscripts]: ../../reference/formatting.md#sub-and-superscripts
### Critic
2023-09-14 19:09:18 +02:00
<!-- md:version 1.0.0 -->
<!-- md:extension [pymdownx.critic][Critic] -->
The [Critic] extension allows for the usage of [Critic Markup] to highlight
added, deleted or updated sections in a document, i.e. for tracking changes in
Markdown syntax. Enable it via `mkdocs.yml`:
``` yaml
markdown_extensions:
- pymdownx.critic
```
The following configuration options are supported:
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.critic.mode -->
2023-09-14 19:09:18 +02:00
: <!-- md:default `view` --> This option defines how the markup
2021-10-03 11:32:20 +02:00
should be parsed, i.e. whether to just `view` all suggested changes, or
alternatively `accept` or `reject` them:
=== "View changes"
``` yaml
markdown_extensions:
- pymdownx.critic:
mode: view
```
=== "Accept changes"
``` yaml
markdown_extensions:
- pymdownx.critic:
mode: accept
```
=== "Reject changes"
``` yaml
markdown_extensions:
- pymdownx.critic:
mode: reject
```
2021-10-03 11:32:20 +02:00
See reference for usage:
- [Highlighting changes]
[Critic]: https://facelessuser.github.io/pymdown-extensions/extensions/critic/
[Critic Markup]: https://github.com/CriticMarkup/CriticMarkup-toolkit
2021-10-03 11:32:20 +02:00
[Highlighting changes]: ../../reference/formatting.md#highlighting-changes
### Details
2023-09-14 19:09:18 +02:00
<!-- md:version 1.9.0 -->
<!-- md:extension [pymdownx.details][Details] -->
2021-10-03 11:32:20 +02:00
The [Details] extension supercharges the [Admonition] extension, making the
2021-10-03 11:32:20 +02:00
resulting _call-outs_ collapsible, allowing them to be opened and closed by the
user. Enable it via `mkdocs.yml`:
``` yaml
markdown_extensions:
- pymdownx.details
```
No configuration options are available. See reference for usage:
- [Collapsible blocks]
2021-10-03 11:32:20 +02:00
[Details]: https://facelessuser.github.io/pymdown-extensions/extensions/details/
[Admonition]: python-markdown.md#admonition
[Collapsible blocks]: ../../reference/admonitions.md#collapsible-blocks
### Emoji
2023-09-14 19:09:18 +02:00
<!-- md:version 1.0.0 -->
<!-- md:extension [pymdownx.emoji][Emoji] -->
2021-10-03 11:32:20 +02:00
The [Emoji] extension automatically inlines bundled and custom icons and emojis
in `*.svg` file format into the resulting HTML page. Enable it via `mkdocs.yml`:
``` yaml
markdown_extensions:
- pymdownx.emoji:
2023-09-21 18:56:35 +02:00
emoji_index: !!python/name:material.extensions.emoji.twemoji # (1)!
emoji_generator: !!python/name:material.extensions.emoji.to_svg
2021-10-03 11:32:20 +02:00
```
1. [Python Markdown Extensions] uses the `pymdownx` namespace, but in order to
support the inlining of icons, the `materialx` namespace must be used, as it
extends the functionality of `pymdownx`.
The following configuration options are supported:
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.emoji.emoji_index -->
2021-10-03 11:32:20 +02:00
2023-09-14 19:09:18 +02:00
: <!-- md:default `emojione` --> This option defines which set
2021-10-03 11:32:20 +02:00
of emojis is used for rendering. Note that the use of `emojione` is not
recommended due to [restrictions in licensing][Emoji index]:
``` yaml
markdown_extensions:
- pymdownx.emoji:
2023-09-21 18:56:35 +02:00
emoji_index: !!python/name:material.extensions.emoji.twemoji
2021-10-03 11:32:20 +02:00
```
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.emoji.emoji_generator -->
2021-10-03 11:32:20 +02:00
2023-09-14 19:09:18 +02:00
: <!-- md:default `to_png` --> This option defines how the
2021-10-03 11:32:20 +02:00
resolved emoji or icon shortcode is render. Note that icons can only be
used together with the `to_svg` configuration:
``` yaml
markdown_extensions:
- pymdownx.emoji:
2023-09-21 18:56:35 +02:00
emoji_generator: !!python/name:material.extensions.emoji.to_svg
2021-10-03 11:32:20 +02:00
```
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.emoji.options.custom_icons -->
2021-10-03 11:32:20 +02:00
2023-09-14 19:09:18 +02:00
: <!-- md:default none --> This option allows to list folders
with additional icon sets to be used in Markdown or `mkdocs.yml`, which is
2021-10-10 19:22:13 +02:00
explained in more detail in the [icon customization guide]:
2021-10-03 11:32:20 +02:00
``` yaml
markdown_extensions:
- pymdownx.emoji:
2023-09-21 18:56:35 +02:00
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
2021-10-03 11:32:20 +02:00
options:
custom_icons:
- overrides/.icons
```
The other configuration options of this extension are not officially supported
2021-10-04 23:36:31 +02:00
by Material for MkDocs, which is why they may yield unexpected results. Use
them at your own risk.
2021-10-03 11:32:20 +02:00
See reference for usage:
- [Using emojis]
- [Using icons]
- [Using icons in templates]
[Emoji]: https://facelessuser.github.io/pymdown-extensions/extensions/emoji/
2021-10-03 11:32:20 +02:00
[Emoji index]: https://facelessuser.github.io/pymdown-extensions/extensions/emoji/#default-emoji-indexes
[icon customization guide]: ../changing-the-logo-and-icons.md#additional-icons
[Using emojis]: ../../reference/icons-emojis.md#using-emojis
[Using icons]: ../../reference/icons-emojis.md#using-icons
[Using icons in templates]: ../../reference/icons-emojis.md#using-icons-in-templates
### Highlight
2023-09-14 19:09:18 +02:00
<!-- md:version 5.0.0 -->
<!-- md:extension [pymdownx.highlight][Highlight] -->
2021-10-03 11:32:20 +02:00
The [Highlight] extension adds support for syntax highlighting of code blocks
2021-10-10 17:39:53 +02:00
(with the help of [SuperFences][pymdownx.superfences]) and inline code blocks
(with the help of [InlineHilite][pymdownx.inlinehilite]). Enable it via
`mkdocs.yml`:
2021-10-03 11:32:20 +02:00
``` yaml
markdown_extensions:
2021-12-10 10:12:07 +01:00
- pymdownx.highlight:
anchor_linenums: true
2021-12-11 14:30:07 +01:00
- pymdownx.superfences # (1)!
2021-10-03 11:32:20 +02:00
```
2021-10-10 17:39:53 +02:00
1. [Highlight] is used by the [SuperFences][pymdownx.superfences] extension to
2021-10-03 11:32:20 +02:00
perform syntax highlighting on code blocks, not the other way round, which
is why this extension also needs to be enabled.
The following configuration options are supported:
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.highlight.use_pygments -->
2021-10-03 11:32:20 +02:00
2023-09-14 19:09:18 +02:00
: <!-- md:default `true` --> This option allows to control
2021-10-03 11:32:20 +02:00
whether highlighting should be carried out during build time using
2021-10-10 12:19:14 +02:00
[Pygments] or in the browser with a JavaScript syntax highlighter:
2021-10-03 11:32:20 +02:00
=== "Pygments"
``` yaml
markdown_extensions:
- pymdownx.highlight:
use_pygments: true
- pymdownx.superfences
```
=== "JavaScript"
``` yaml
markdown_extensions:
- pymdownx.highlight:
use_pygments: false
```
2023-09-14 19:09:18 +02:00
As an example, [Highlight.js], a JavaScript syntax highlighter, can be
integrated with some [additional JavaScript] and an [additional style
sheet] in `mkdocs.yml`:
2021-10-03 11:32:20 +02:00
2022-09-11 19:25:40 +02:00
=== ":octicons-file-code-16: `docs/javascripts/highlight.js`"
2021-10-03 11:32:20 +02:00
``` js
document$.subscribe(() => {
hljs.highlightAll()
})
```
2022-09-11 19:25:40 +02:00
=== ":octicons-file-code-16: `mkdocs.yml`"
2021-10-03 11:32:20 +02:00
``` yaml
extra_javascript:
- https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.2/highlight.min.js
2021-10-10 12:19:14 +02:00
- javascripts/highlight.js
2021-10-03 11:32:20 +02:00
extra_css:
- https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.2/styles/default.min.css
```
2021-10-30 13:16:05 +02:00
Note that [Highlight.js] has no affiliation with the
[Highlight][pymdownx.highlight] extension.
All following configuration options are only compatible with build-time
syntax highlighting using [Pygments], so they don't apply if `use_pygments`
is set to `false`.
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.highlight.pygments_lang_class -->
2023-03-20 11:11:14 +01:00
2023-09-14 19:09:18 +02:00
: <!-- md:default `false` --> This option instructs [Pygments]
2023-03-20 11:11:14 +01:00
to add a CSS class to identify the language of the code block, which is
essential for custom annotation markers to function:
``` yaml
markdown_extensions:
- pymdownx.highlight:
pygments_lang_class: true
```
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.highlight.auto_title -->
2021-10-30 13:16:05 +02:00
2023-09-14 19:09:18 +02:00
: <!-- md:default `false` --> This option will automatically
2021-10-30 13:16:05 +02:00
add a [title] to all code blocks that shows the name of the language being
used, e.g. `Python` is printed for a `py` block:
``` yaml
markdown_extensions:
- pymdownx.highlight:
auto_title: true
```
2021-10-03 11:32:20 +02:00
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.highlight.linenums -->
2021-10-03 11:32:20 +02:00
2023-09-14 19:09:18 +02:00
: <!-- md:default `false` --> This option will add line numbers
2021-10-03 11:32:20 +02:00
to _all_ code blocks. If you wish to add line numbers to _some_, but not all
code blocks, consult the section on [adding line numbers][Adding line
numbers] in the code block reference, which also contains some tips on
working with line numbers:
``` yaml
markdown_extensions:
- pymdownx.highlight:
linenums: true
```
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.highlight.linenums_style -->
2021-10-03 11:32:20 +02:00
2023-09-14 19:09:18 +02:00
: <!-- md:default `table` --> The [Highlight] extension
2021-11-14 08:46:35 +01:00
provides three ways to add line numbers, two of which are supported by
Material for MkDocs. While `table` wraps a code block in a `<table>`
element, `pymdownx-inline` renders line numbers as part of the line itself:
2021-10-03 11:32:20 +02:00
``` yaml
markdown_extensions:
- pymdownx.highlight:
linenums_style: pymdownx-inline
```
Note that `inline` will put line numbers next to the actual code, which
2023-09-14 19:09:18 +02:00
means that they will be included when selecting text with the cursor or
2021-10-03 11:32:20 +02:00
copying a code block to the clipboard. Thus, the usage of either `table`
or `pymdownx-inline` is recommended.
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.highlight.anchor_linenums -->
2021-12-10 10:12:07 +01:00
2023-09-14 19:09:18 +02:00
: <!-- md:version 8.1.0 --> :octicons-milestone-24:
2021-12-10 10:12:07 +01:00
Default: `false` If a code blocks contains line numbers, enabling this
setting will wrap them with anchor links, so they can be hyperlinked and
shared more easily:
``` yaml
markdown_extensions:
- pymdownx.highlight:
anchor_linenums: true
```
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.highlight.line_spans -->
2023-03-20 11:11:14 +01:00
2023-09-14 19:09:18 +02:00
: <!-- md:default none --> When this option is set, each
2023-03-20 11:11:14 +01:00
line of a code block is wrapped in a `span`, which is essential for features
like line highlighting to work correctly:
``` yaml
markdown_extensions:
- pymdownx.highlight:
line_spans: __span
```
The other configuration options of this extension are not officially supported
2021-10-04 23:36:31 +02:00
by Material for MkDocs, which is why they may yield unexpected results. Use
them at your own risk.
2021-10-03 11:32:20 +02:00
See reference for usage:
2021-10-30 13:16:05 +02:00
- [Using code blocks]
- [Adding a title]
2021-10-03 11:32:20 +02:00
- [Adding line numbers]
- [Highlighting specific lines]
- [Custom syntax theme]
[Highlight]: https://facelessuser.github.io/pymdown-extensions/extensions/highlight/
[CodeHilite]: python-markdown.md#codehilite
2021-10-10 17:39:53 +02:00
[pymdownx.superfences]: #superfences
[pymdownx.inlinehilite]: #inlinehilite
2021-10-03 11:32:20 +02:00
[Pygments]: https://pygments.org
[additional style sheet]: ../../customization.md#additional-css
2021-10-03 11:32:20 +02:00
[Highlight.js]: https://highlightjs.org/
2021-10-30 13:16:05 +02:00
[title]: ../../reference/code-blocks.md#adding-a-title
2021-10-03 11:32:20 +02:00
[Adding line numbers]: ../../reference/code-blocks.md#adding-line-numbers
2021-10-30 13:16:05 +02:00
[Using code blocks]: ../../reference/code-blocks.md#usage
[Adding a title]: ../../reference/code-blocks.md#adding-a-title
2021-10-03 11:32:20 +02:00
[Highlighting specific lines]: ../../reference/code-blocks.md#highlighting-specific-lines
[Custom syntax theme]: ../../reference/code-blocks.md#custom-syntax-theme
### InlineHilite
2023-09-14 19:09:18 +02:00
<!-- md:version 5.0.0 -->
<!-- md:extension [pymdownx.inlinehilite][InlineHilite] -->
2021-10-03 11:32:20 +02:00
2023-09-14 19:09:18 +02:00
The [InlineHilite] extension add support for syntax highlighting of inline code
2021-10-10 17:39:53 +02:00
blocks. It's built on top of the [Highlight][pymdownx.highlight] extension, from
which it sources its configuration. Enable it via `mkdocs.yml`:
2021-10-03 11:32:20 +02:00
``` yaml
markdown_extensions:
- pymdownx.highlight
- pymdownx.inlinehilite
```
2021-10-03 14:54:22 +02:00
The configuration options of this extension are not specific to Material for
MkDocs, as they only impact the Markdown parsing stage. The only exception is
2023-09-14 19:09:18 +02:00
the [`css_class`][InlineHilite options] option, which must not be changed. See the
2021-10-03 14:54:22 +02:00
[InlineHilite documentation][InlineHilite] for guidance.
See reference for usage:
2021-10-03 11:32:20 +02:00
- [Highlighting inline code blocks]
[InlineHilite]: https://facelessuser.github.io/pymdown-extensions/extensions/inlinehilite/
2021-10-03 14:54:22 +02:00
[InlineHilite options]: https://facelessuser.github.io/pymdown-extensions/extensions/inlinehilite/#options
2021-10-10 17:39:53 +02:00
[pymdownx.highlight]: #highlight
2021-10-03 11:32:20 +02:00
[Highlighting inline code blocks]: ../../reference/code-blocks.md#highlighting-inline-code-blocks
2021-10-03 14:54:22 +02:00
### Keys
2023-09-14 19:09:18 +02:00
<!-- md:version 1.0.0 -->
<!-- md:extension [pymdownx.keys][Keys] -->
2021-10-03 14:54:22 +02:00
2023-09-14 19:09:18 +02:00
The [Keys] extension adds a simple syntax to allow for the rendering of keyboard
2021-10-03 14:54:22 +02:00
keys and combinations, e.g. ++ctrl+alt+del++. Enable it via `mkdocs.yml`:
``` yaml
markdown_extensions:
- pymdownx.keys
```
The configuration options of this extension are not specific to Material for
MkDocs, as they only impact the Markdown parsing stage. The only exception is
2023-09-14 19:09:18 +02:00
the [`class`][Keys options] option, which must not be changed. See the
2021-10-03 14:54:22 +02:00
[Keys documentation][Keys] for more information.
2021-10-04 23:36:31 +02:00
See reference for usage:
- [Adding keyboard keys]
2021-10-03 14:54:22 +02:00
[Keys]: https://facelessuser.github.io/pymdown-extensions/extensions/keys/
[Keys options]: https://facelessuser.github.io/pymdown-extensions/extensions/keys/#options
2021-10-04 23:36:31 +02:00
[Adding keyboard keys]: ../../reference/formatting.md#adding-keyboard-keys
2021-10-03 14:54:22 +02:00
### SmartSymbols
2023-09-14 19:09:18 +02:00
<!-- md:version 0.1.0 -->
<!-- md:extension [pymdownx.smartsymbols][SmartSymbols] -->
2021-10-03 14:54:22 +02:00
2023-09-14 19:09:18 +02:00
The [SmartSymbols] extension converts some sequences of characters into their
2021-10-03 14:54:22 +02:00
corresponding symbols, e.h. copyright symbols or fractions. Enable it via
`mkdocs.yml`:
``` yaml
markdown_extensions:
- pymdownx.smartsymbols
```
The configuration options of this extension are not specific to Material for
2023-09-14 19:09:18 +02:00
MkDocs, as they only impact the Markdown parsing stage. See the [SmartSymbols
2021-10-03 14:54:22 +02:00
documentation][SmartSymbols] for guidance.
[SmartSymbols]: https://facelessuser.github.io/pymdown-extensions/extensions/smartsymbols/
### Snippets
2023-09-14 19:09:18 +02:00
<!-- md:version 0.1.0 -->
<!-- md:extension [pymdownx.snippets][Snippets] -->
2021-10-03 11:32:20 +02:00
The [Snippets] extension adds the ability to embed content from arbitrary files
into a document, including other documents or source files, by using a simple
syntax. Enable it via `mkdocs.yml`:
``` yaml
markdown_extensions:
- pymdownx.snippets
```
The configuration options of this extension are not specific to Material for
2023-09-14 19:09:18 +02:00
MkDocs, as they only impact the Markdown parsing stage. See the [Snippets
documentation][Snippets] for more information.
See reference for usage:
2021-10-04 23:36:31 +02:00
- [Adding a glossary]
- [Embedding external files]
[Snippets]: https://facelessuser.github.io/pymdown-extensions/extensions/snippets/
2022-05-08 17:53:16 +02:00
[Adding a glossary]: ../../reference/tooltips.md#adding-a-glossary
[Embedding external files]: ../../reference/code-blocks.md#embedding-external-files
### SuperFences
2023-09-14 19:09:18 +02:00
<!-- md:version 0.1.0 -->
<!-- md:extension [pymdownx.superfences][SuperFences] -->
The [SuperFences] extension allows for arbitrary nesting of code and content
blocks inside each other, including admonitions, tabs, lists and all other
elements. Enable it via `mkdocs.yml`:
``` yaml
markdown_extensions:
- pymdownx.superfences
```
The following configuration options are supported:
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.superfences.custom_fences -->
2023-09-14 19:09:18 +02:00
: <!-- md:default none --> This option allows to define a
handler for custom fences, e.g. to preserve the definitions of [Mermaid.js]
diagrams to be interpreted in the browser:
``` yaml
markdown_extensions:
- pymdownx.superfences:
custom_fences:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format
```
Note that this will primarily prevent syntax highlighting from being
applied. See the reference on [diagrams] to learn how Mermaid.js is
integrated with Material for MkDocs.
The other configuration options of this extension are not officially supported
2021-10-04 23:36:31 +02:00
by Material for MkDocs, which is why they may yield unexpected results. Use
them at your own risk.
See reference for usage:
2022-01-30 18:49:02 +01:00
- [Using annotations]
- [Using code blocks]
- [Using content tabs]
- [Using flowcharts]
- [Using sequence diagrams]
- [Using state diagrams]
- [Using class diagrams]
- [Using entity-relationship diagrams]
[SuperFences]: https://facelessuser.github.io/pymdown-extensions/extensions/superfences/
[Fenced Code Blocks]: python-markdown.md#fenced-code-blocks
[Mermaid.js]: https://mermaid-js.github.io/mermaid/
[diagrams]: ../../reference/diagrams.md
2022-01-30 18:49:02 +01:00
[Using annotations]: ../../reference/annotations.md#usage
[Using content tabs]: ../../reference/content-tabs.md#usage
[Using flowcharts]: ../../reference/diagrams.md#using-flowcharts
[Using sequence diagrams]: ../../reference/diagrams.md#using-sequence-diagrams
[Using state diagrams]: ../../reference/diagrams.md#using-state-diagrams
[Using class diagrams]: ../../reference/diagrams.md#using-class-diagrams
[Using entity-relationship diagrams]: ../../reference/diagrams.md#using-entity-relationship-diagrams
2021-10-03 11:32:20 +02:00
### Tabbed
2023-09-14 19:09:18 +02:00
<!-- md:version 5.0.0 -->
<!-- md:extension [pymdownx.tabbed][Tabbed] -->
The [Tabbed] extension allows the usage of content tabs, a simple way to group
related content and code blocks under accessible tabs. Enable it via
`mkdocs.yml`:
``` yaml
markdown_extensions:
- pymdownx.tabbed:
2022-10-02 17:34:23 +02:00
alternate_style: true
```
The following configuration options are supported:
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.tabbed.alternate_style -->
2023-09-14 19:09:18 +02:00
: <!-- md:version 7.3.1 --> <!-- md:default `false` -->
<!-- md:flag required --> This option enables the content tabs
[alternate style], which has [better behavior on mobile viewports], and is
the only supported style:
``` yaml
markdown_extensions:
- pymdownx.tabbed:
2022-10-02 17:34:23 +02:00
alternate_style: true
```
2023-09-20 18:14:58 +02:00
<!-- md:option pymdownx.tabbed.combine_header_slug -->
: <!-- md:default `false` --> This option enables the content tabs
[combine_header_slug style] flag, which prepends the id of the header to
the id of the tab:
``` yaml
markdown_extensions:
- pymdownx.tabbed:
combine_header_slug: true
```
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.tabbed.slugify -->
2022-10-02 17:34:23 +02:00
2023-09-14 19:09:18 +02:00
: <!-- md:default `toc.slugify` --> This option allows for
2022-10-02 17:34:23 +02:00
customization of the slug function. For some languages, the default may not
produce good and readable identifiers consider using another slug function
like for example those from [Python Markdown Extensions][Slugs]:
=== "Unicode"
``` yaml
markdown_extensions:
- pymdownx.tabbed:
slugify: !!python/object/apply:pymdownx.slugs.slugify
kwds:
case: lower
```
=== "Unicode, case-sensitive"
``` yaml
markdown_extensions:
- pymdownx.tabbed:
slugify: !!python/object/apply:pymdownx.slugs.slugify
```
The other configuration options of this extension are not officially supported
2021-10-04 23:36:31 +02:00
by Material for MkDocs, which is why they may yield unexpected results. Use
them at your own risk.
See reference for usage:
- [Grouping code blocks]
- [Grouping other content]
- [Embedded content]
[Tabbed]: https://facelessuser.github.io/pymdown-extensions/extensions/tabbed/
[alternate style]: https://facelessuser.github.io/pymdown-extensions/extensions/tabbed/#alternate-style
2023-09-20 18:14:58 +02:00
[combine_header_slug style]: https://facelessuser.github.io/pymdown-extensions/extensions/tabbed/#tab-ids
2021-10-10 12:19:14 +02:00
[better behavior on mobile viewports]: https://twitter.com/squidfunk/status/1424740370596958214
[Grouping code blocks]: ../../reference/content-tabs.md#grouping-code-blocks
[Grouping other content]: ../../reference/content-tabs.md#grouping-other-content
[Embedded content]: ../../reference/content-tabs.md#embedded-content
2022-10-02 17:34:23 +02:00
[Slugs]: https://facelessuser.github.io/pymdown-extensions/extras/slugs/
### Tasklist
2023-09-14 19:09:18 +02:00
<!-- md:version 1.0.0 -->
<!-- md:extension [pymdownx.tasklist][Tasklist] -->
The [Tasklist] extension allows for the usage of [GitHub Flavored Markdown]
2021-10-10 12:19:14 +02:00
inspired [task lists][Tasklist specification], following the same syntactical
conventions. Enable it via `mkdocs.yml`:
``` yaml
markdown_extensions:
- pymdownx.tasklist:
custom_checkbox: true
```
The following configuration options are supported:
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.tasklist.custom_checkbox -->
2023-09-14 19:09:18 +02:00
: <!-- md:default `false` --> This option toggles the rendering
style of checkboxes, replacing native checkbox styles with beautiful icons,
2021-10-10 12:19:14 +02:00
and is therefore recommended:
``` yaml
markdown_extensions:
- pymdownx.tasklist:
custom_checkbox: true
```
2023-09-14 19:09:18 +02:00
<!-- md:option pymdownx.tasklist.clickable_checkbox -->
2023-09-14 19:09:18 +02:00
: <!-- md:default `false` --> This option toggles whether
checkboxes are clickable. As the state is not persisted, the use of this
option is _rather discouraged_ from a user experience perspective:
``` yaml
markdown_extensions:
- pymdownx.tasklist:
clickable_checkbox: true
```
The other configuration options of this extension are not officially supported
2021-10-04 23:36:31 +02:00
by Material for MkDocs, which is why they may yield unexpected results. Use
them at your own risk.
See reference for usage:
- [Using task lists]
[Tasklist]: https://facelessuser.github.io/pymdown-extensions/extensions/tasklist/
[GitHub Flavored Markdown]: https://github.github.com/gfm/
2021-10-10 12:19:14 +02:00
[Tasklist specification]: https://github.github.com/gfm/#task-list-items-extension-
[Using task lists]: ../../reference/lists.md#using-task-lists