An mdformat plugin for mkdocs and Material for MkDocs
Project description
mdformat-mkdocs
An mdformat plugin for mkdocs and packages commonly used with MkDocs (mkdocs-material, mkdocstrings, and python-markdown)
Supports:
- Indents are converted to four-spaces instead of two
- Note: when specifying
--align-semantic-breaks-in-lists, the nested indent for ordered lists is three, but is otherwise a multiple of four
- Note: when specifying
- Unordered list bullets are converted to dashes (
-) instead of* - By default, ordered lists are standardized on a single digit (
1.or0.) unless--numberis specified, thenmdformat-mkdocswill apply consecutive numbering to ordered lists for consistency withmdformat - MkDocs-Material Admonitions*
- *Note:
mdformat-admonwill format the same admonitions, but for consistency with the mkdocs styleguide, an extra space will be added by this package (#22)
- *Note:
- MkDocs-Material Content Tabs*
- *Note: the markup (HTML) rendered by this plugin is sufficient for formatting but not for viewing in a browser. Please open an issue if you have a need to generate valid HTML.
- MkDocs-Material Definition Lists
- mkdocstrings Anchors (autorefs)
- mkdocstrings Cross-References
- Python Markdown "Abbreviations"*
- *Note: the markup (HTML) rendered for abbreviations is not useful for rendering. If important, I'm open to contributions because the implementation could be challenging
- Python Markdown "Attribute Lists"
- Preserves attribute list syntax when using
--wrapmode
- Preserves attribute list syntax when using
- PyMdown Extensions "Arithmatex" (Math/LaTeX Support) (Material for MkDocs Math)
- This plugin combines three math rendering plugins from mdit-py-plugins:
- dollarmath: Handles
$...$(inline) and$$...$$(block) with smart dollar mode that prevents false positives (e.g.,$3.00is not treated as math) - texmath: Handles
\(...\)(inline) and\[...\](block) LaTeX bracket notation - amsmath: Handles LaTeX environments like
\begin{align}...\end{align},\begin{cases}...\end{cases},\begin{matrix}...\end{matrix}, etc.
- dollarmath: Handles
- Can be deactivated entirely with the
--no-mkdocs-mathflag
- This plugin combines three math rendering plugins from mdit-py-plugins:
- Python Markdown "Snippets"*
- *Note: the markup (HTML) renders the plain text without implementing the snippet logic. I'm open to contributions if anyone needs full support for snippets
See the example test files, ./tests/pre-commit-test.md and ./tests/format/fixtures.md
mdformat Usage
Add this package wherever you use mdformat and the plugin will be auto-recognized. No additional configuration necessary. For additional information on plugins, see the official mdformat documentation here
Optional Extras
This package specifies two optional "extra" plugins ('recommended' and 'recommended-mdsf' ) for plugins that work well with typical documentation managed by mkdocs:
- For
'recommended': - For
'recommended-mdsf':- Instead of
mdformat-beautysh,mdformat-config,mdformat-ruff, andmdformat-web, the "mdsf" extras installmdformat-hooks, which allows the use ofmdsffor formatting code blocks in hundreds of languages using CLI formatters you already have installed; however, this requires extra configuration, so make sure to see the README: https://github.com/KyleKing/mdformat-hooks
- Instead of
pre-commit/prek
repos:
- repo: https://github.com/executablebooks/mdformat
rev: 1.0.0
hooks:
- id: mdformat
additional_dependencies:
- mdformat-mkdocs
# Or
# - "mdformat-mkdocs[recommended-mdsf]>=5.1.0"
# Or
# - "mdformat-mkdocs[recommended]"
uvx
uvx --with=mdformat-mkdocs mdformat
Or with pipx:
pipx install mdformat
pipx inject mdformat mdformat-mkdocs
HTML Rendering
To generate HTML output, any of the plugins can be imported from mdit_plugins. For more guidance on MarkdownIt, see the docs: https://markdown-it-py.readthedocs.io/en/latest/using.html#the-parser
from markdown_it import MarkdownIt
from mdformat_mkdocs.mdit_plugins import (
material_admon_plugin,
material_content_tabs_plugin,
mkdocstrings_autorefs_plugin,
mkdocstrings_crossreference_plugin,
pymd_abbreviations_plugin,
)
md = MarkdownIt()
md.use(material_admon_plugin)
md.use(material_content_tabs_plugin)
md.use(mkdocstrings_autorefs_plugin)
md.use(mkdocstrings_crossreference_plugin)
md.use(pymd_abbreviations_plugin)
text = "- Line 1\n - `bash command`\n - Line 3"
md.render(text)
# <ul>
# <li>Line 1
# <ul>
# <li><code>bash command</code></li>
# <li>Line 3</li>
# </ul>
# </li>
# </ul>
Configuration
mdformat-mkdocs adds the CLI arguments:
-
--align-semantic-breaks-in-liststo optionally align line breaks in numbered lists to 3-spaces. If not specified, the default of 4-indents is followed universally.# with: mdformat 1. Semantic line feed where the following line is three spaces deep # vs. "mdformat --align-semantic-breaks-in-lists" 1. Semantic line feed where the following line is three spaces deep -
--ignore-missing-referencesif set, do not escape link references when no definition is found. This is required when references are dynamic, such as with python mkdocstrings -
--no-mkdocs-mathif set, deactivate math/LaTeX rendering (Arithmatex). By default, math is enabled. This can be useful if you want to format markdown without processing math syntax.
You can also use the toml configuration (https://mdformat.readthedocs.io/en/stable/users/configuration_file.html):
# .mdformat.toml
[plugin.mkdocs]
align_semantic_breaks_in_lists = true
ignore_missing_references = true
no_mkdocs_math = true
Contributing
See CONTRIBUTING.md
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mdformat_mkdocs-5.1.3.tar.gz.
File metadata
- Download URL: mdformat_mkdocs-5.1.3.tar.gz
- Upload date:
- Size: 27.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
228f55eb1af4e4d616d1f1fecb8872163eb2f8ad594cca6869fad730847e5464
|
|
| MD5 |
599fc18dc3c162cb68fda1eaa84721ec
|
|
| BLAKE2b-256 |
ee067b18d6a9f0d014d46904eb064f0baf363ce05b07dae659d5aec7699f3227
|
Provenance
The following attestation bundles were made for mdformat_mkdocs-5.1.3.tar.gz:
Publisher:
tests.yml on KyleKing/mdformat-mkdocs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdformat_mkdocs-5.1.3.tar.gz -
Subject digest:
228f55eb1af4e4d616d1f1fecb8872163eb2f8ad594cca6869fad730847e5464 - Sigstore transparency entry: 814646566
- Sigstore integration time:
-
Permalink:
KyleKing/mdformat-mkdocs@5426c3a1feb3aa454ac35a19d3666c6bd537e46c -
Branch / Tag:
refs/tags/v5.1.3 - Owner: https://github.com/KyleKing
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
tests.yml@5426c3a1feb3aa454ac35a19d3666c6bd537e46c -
Trigger Event:
push
-
Statement type:
File details
Details for the file mdformat_mkdocs-5.1.3-py3-none-any.whl.
File metadata
- Download URL: mdformat_mkdocs-5.1.3-py3-none-any.whl
- Upload date:
- Size: 38.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
baa3a4f8a5277d6affa5a064038601a69d378acadfa5c66f67b3239fdb17201b
|
|
| MD5 |
6fed4735cbf940d8cb9e783671e423c2
|
|
| BLAKE2b-256 |
c7a8f9bed965d060d74b00b503ecd30765277d5c00e8de9c737f5560f0bc01cd
|
Provenance
The following attestation bundles were made for mdformat_mkdocs-5.1.3-py3-none-any.whl:
Publisher:
tests.yml on KyleKing/mdformat-mkdocs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdformat_mkdocs-5.1.3-py3-none-any.whl -
Subject digest:
baa3a4f8a5277d6affa5a064038601a69d378acadfa5c66f67b3239fdb17201b - Sigstore transparency entry: 814646569
- Sigstore integration time:
-
Permalink:
KyleKing/mdformat-mkdocs@5426c3a1feb3aa454ac35a19d3666c6bd537e46c -
Branch / Tag:
refs/tags/v5.1.3 - Owner: https://github.com/KyleKing
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
tests.yml@5426c3a1feb3aa454ac35a19d3666c6bd537e46c -
Trigger Event:
push
-
Statement type: