Skip to main content

An mdformat plugin for `mkdocs`.

Project description

mdformat-mkdocs

Build Status PyPI version

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
  • Unordered list bullets are converted to dashes (-) instead of *
  • By default, ordered lists are standardized on a single digit (1. or 0.) unless --number is specified, then mdformat-mkdocs will apply consecutive numbering to ordered lists for consistency with mdformat
  • MkDocs-Material Admonitions
  • 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.
  • 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

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

Tip: this package specifies an "extra" ('recommended') for plugins that work well with typical documentation managed by mkdocs:

Pre-Commit

repos:
  - repo: https://github.com/executablebooks/mdformat
    rev: 0.7.18
    hooks:
      - id: mdformat
        additional_dependencies:
          - mdformat-mkdocs
          # Or
          # - "mdformat-mkdocs[recommended]"

pipx/uv

pipx install mdformat
pipx inject mdformat mdformat-mkdocs

Or with uv:

uv tool run --from mdformat-mkdocs mdformat

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>

CLI Options

mdformat-mkdocs adds the CLI argument --align-semantic-breaks-in-lists to 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. with: mdformat --align-semantic-breaks-in-lists
1. Semantic line feed where the following line is
   three spaces deep

Note: the align-semantic-breaks-in-lists setting is not supported in the configuration file yet (https://github.com/executablebooks/mdformat/issues/378)

Contributing

See CONTRIBUTING.md

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

mdformat_mkdocs-3.1.1.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

mdformat_mkdocs-3.1.1-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file mdformat_mkdocs-3.1.1.tar.gz.

File metadata

  • Download URL: mdformat_mkdocs-3.1.1.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for mdformat_mkdocs-3.1.1.tar.gz
Algorithm Hash digest
SHA256 0093a9de93c7d7a57fcaeb94771c5727212c9cdafe781ab3c6948e3d029b47ce
MD5 d919b2eddebda1e3b924f6dfe3721c97
BLAKE2b-256 8c16efe49585fa505852f07045245dbe9fa3d07cbde7e2ad0a4c4e3549e270ee

See more details on using hashes here.

File details

Details for the file mdformat_mkdocs-3.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mdformat_mkdocs-3.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a74e5644ba44894de645b963f091663cba00476b4985e750bf6d888e5b7299c8
MD5 fddf43a3bf36abe83d21f4175ccc221a
BLAKE2b-256 29f6b02c2b028ea22e569c636e78de2c2088c0454ae30a5193ba9e64c2c35f08

See more details on using hashes here.

Supported by

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