Python-Markdown Math Extension

0.9 · active · verified Wed Apr 15

Python-Markdown Math is an extension for the Python-Markdown library that adds support for rendering mathematical formulas written in LaTeX-like syntax. It converts math expressions within Markdown into a format compatible with client-side JavaScript rendering libraries like MathJax. The current version is 0.9, released in April 2025, and it maintains a moderate release cadence based on its history.

Warnings

Install

Imports

Quickstart

The quickstart demonstrates how to initialize the Python-Markdown parser with the `mdx_math` extension. It also shows how to enable the single dollar sign delimiter for inline math, which is disabled by default. The critical point is that the extension only generates MathJax-compatible HTML; actual visual rendering requires including the MathJax JavaScript library in your final HTML document.

import markdown

# Basic usage with default delimiters (\( ... \) for inline, $$ ... $$ for display)
md = markdown.Markdown(extensions=['mdx_math'])
html_output = md.convert('This is inline math: \(E=mc^2\) and a display equation: $$x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}$$')
print(html_output)

# To enable single dollar sign for inline math (e.g., $E=mc^2$)
md_dollar = markdown.Markdown(extensions=['mdx_math'], extension_configs={'mdx_math': {'enable_dollar_delimiter': True}})
html_output_dollar = md_dollar.convert('Inline math with single dollar: $E=mc^2$')
print(html_output_dollar)

# Important: The generated HTML requires a client-side MathJax (or similar) library to render the math visually.
# Example of how the output will look (not fully rendered math without MathJax JS in browser):
# <p>This is inline math: <script type="math/tex">E=mc^2</script> and a display equation: <script type="math/tex; mode=display">x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}</script></p>

view raw JSON →