Registry / serialization / python-markdown-math

python-markdown-math

JSON →
library0.9pypypi✓ verified 35d ago

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.

serialization
Install & Compatibility
Where this runs
tested against v0.9 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.920 runs
installs and imports cleanly · install 0.0s · import 0.139s · 18.5MB
glibc
py 3.103.920 runs
installs and imports cleanly · install 1.7s · import 0.131s · 19MB
17MB installed
● package 17MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

The 'mdx_math' string is used to enable the extension with the Python-Markdown parser. There isn't a direct Python symbol import from the `python-markdown-math` package for runtime use.

import markdown md = markdown.Markdown(extensions=['mdx_math'])

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>
Debug
Known footguns
gotchaThe extension only *transforms* Markdown math into MathJax-compatible HTML (`<script type="math/tex">` tags). It does not perform server-side rendering of the math itself. For the math to display correctly in a web browser, you *must* include the MathJax (or a similar JavaScript rendering library) in your HTML output. Without it, users will only see the raw LaTeX syntax enclosed in script tags.
gotchaThe single dollar sign delimiter (`$...$`) for inline math is disabled by default to prevent conflicts with normal text that may contain dollar signs (e.g., currency values). If you intend to use `$...$` for inline math, you must explicitly enable it in the extension's configuration.
gotchaThe documentation's default MathJax configuration examples are primarily for MathJax 2.x. If you are using MathJax 3.x, you will need to consult the MathJax upgrading documentation to ensure correct integration, as the 2.x configurations may not be directly compatible.
gotchaPython-Markdown's default parsing can interfere with LaTeX-like math syntax by interpreting characters like `*` (asterisk) and `_` (underscore) as formatting for italics or bold, or by incorrectly handling backslashes. While `python-markdown-math` is designed to prevent this within its recognized math delimiters, conflicts may arise if math is not properly delimited or if other Markdown extensions are poorly ordered.
Upgrade
Version history

Breaking-change detection hasn't run for this library yet.

Audit
Security & dependencies

CVE tracking and dependency tree are planned for a later release.

Agent activity
18 hits · last 30 days
gptbot
4
ahrefsbot
4
script
1
mj12bot
1
Resources