NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1692 most downloaded on PyPI
An extended [CommonMark](https://spec.commonmark.org/) compliant parser,
Last release 4 months ago
13 May 2026
Ships fairly regularly
a new release about every 4 months
Nearly every release is documented
notes for 42 of 46 stable releases
21 versions withdrawn
withdrawn after publishing
7 years old
70 releases · first in 2020
One column per quarter.
✨ Add "alert" syntax extension for GFM alerts (e.g. > [!NOTE] ), see docs by @chrisjsewell in #1128
"alert" syntax extension for GFM alerts (e.g. > [!NOTE]), see docs by @chrisjsewell in #1128"gfm_autolink" syntax extension for GFM autolinks, see docs by @chrisjsewell in #1128myst_strikethrough_single_tilde config option to allow single tilde (~) for strikethrough by @chrisjsewell in #1128myst_colon_fence_exact_match config option to require the closing colon fence to have exactly the same number of colons as the opening, see docs by @chrisjsewell in #1128myst_gfm_only mode to use the unified gfm_plugin, which now includes GFM autolinks, alerts, and improved strikethrough/tasklist handling by @chrisjsewell in #1128& in Markdown URLs by not HTML-escaping refuri by @chrisjsewell in #1126RemovedInSphinx10Warning for inventory item iteration by @chrisjsewell in #1129mdit-py-plugins>=0.6.1 for nested field list fix by @chrisjsewell in #1134markdown-it-py~=4.2 and mdit-py-plugins~=0.6 by @chrisjsewell in #1128<2.20 to <2.21 by @chrisjsewell in #1117Full Changelog: v5.0.0...v5.1.0
"alert" syntax extension for GFM alerts (e.g. > [!NOTE]), see by gh-user:chrisjsewell in gh-pr:1128"gfm_autolink" syntax extension for GFM autolinks, see by gh-user:chrisjsewell in gh-pr:1128myst_strikethrough_single_tilde config option to allow single tilde (~) for strikethrough by gh-user:chrisjsewell in gh-pr:1128myst_colon_fence_exact_match config option to require the closing colon fence to have exactly the same number of colons as the opening, see by gh-user:chrisjsewell in gh-pr:1128myst_gfm_only mode to use the unified gfm_plugin, which now includes GFM autolinks, alerts, and improved strikethrough/tasklist handling by gh-user:chrisjsewell in gh-pr:1128& in Markdown URLs by not HTML-escaping refuri by gh-user:chrisjsewell in gh-pr:1126RemovedInSphinx10Warning for inventory item iteration by gh-user:chrisjsewell in gh-pr:1129mdit-py-plugins>=0.6.1 for nested field list fix by gh-user:chrisjsewell in gh-pr:1134markdown-it-py~=4.2 and mdit-py-plugins~=0.6 by gh-user:chrisjsewell in gh-pr:1128<2.20 to <2.21 by gh-user:chrisjsewell in gh-pr:1117Full Changelog: v5.0.0...v5.1.0
This release significantly bumps the supported versions of core dependencies:
Release Date: 2026-01-15
This release significantly bumps the supported versions of core dependencies:
This release updates the minimum supported versions:
>=3.11 (dropped Python 3.10, tests up to 3.14)>=8,<10 (dropped Sphinx 7, added Sphinx 9)>=0.20,<0.23 (dropped docutils 0.19, added docutils 0.22)~=4.0 (upgraded from v3)cross-referencing.md by @krassowski in #1036AGENTS.md by @chrisjsewell in #1083Full Changelog: v4.0.1...v5.0.0
This release significantly bumps the supported versions of core dependencies:
This release updates the minimum supported versions:
>=3.11 (dropped Python 3.10, tests up to 3.14)>=8,<10 (dropped Sphinx 7, added Sphinx 9)>=0.20,<0.23 (dropped docutils 0.19, added docutils 0.22)~=4.0 (upgraded from v3)cross-referencing.md by gh-user:krassowski in gh-pr:1036AGENTS.md by gh-user:chrisjsewell in gh-pr:1083Full Changelog: v4.0.1...v5.0.0
🔧 Minor fix for sphinx 8.2 compat by @chrisjsewell in #1013
🔧 Minor fix for sphinx 8.2 compat by @chrisjsewell in #1013
🔧 Fix type of MockIncludeDirective’s klass parameter by @flying-sheep in #975
📚 remove redundant paragraph by @Snoopy1866 in #987
Full Changelog: v4.0.0...v4.0.1
🔧 Minor fix for Sphinx 8.2 compatibility (in gh-pr:1013)
⬆️ Support python>=3.10, sphinx >=7,<9, docutils>=0.19,<0.22 by @chrisjsewell in #952
Full Changelog: v3.0.1...v4.0.0
This release bumps the supported versions of:
3.10 and greater>=7,<9>=0.19,<0.22Additionally, footnotes are now parsed similar to the corresponding reStructuredText, in that resolution (between definitions and references) and ordering is now deferred to transforms on the doctree (in gh-pr:931).
This allows for the proper interaction with other docutils/sphinx transforms, including those that perform translations, and logging of warnings for duplicate/unreferenced footnote definitions and also for footnote references with no definitions.
See the footnotes guide for more information.
Full Changelog: v3.0.1...v4.0.0
🐛 FIX empty value for final directive option by @chrisjsewell in #924
Full Changelog: v3.0.0...v3.0.1
Full Changelog: v3.0.0...v3.0.1
🔧 Fix docutils deprecation in option parsing by @agoose77 in #842
line-block directive by @chrisjsewell in #900attr_block by @chrisjsewell in #831used in docs/syntax/math.md by @ice-tong in #810Full Changelog: v2.0.0...v3.0.0
line-block directive by gh-user:chrisjsewell in gh-pr:900attr_block by gh-user:chrisjsewell in gh-pr:831used in docs/syntax/math.md by gh-user:ice-tong in gh-pr:810Full Changelog: v2.0.0...v3.0.0
This is mainly a non-breaking change, fixing some edge cases in parsing
This release primarily updates core myst-parser dependencies,
with some minor changes to parsing behaviour:
⬆️ UPGRADE: markdown-it-py to v3 (#773)
⬆️ UPGRADE: linkify-it-py to v2 (https://github.com/executablebooks/MyST-Parser/675)
⬆️ UPGRADE: Add support for docutils v0.20 (https://github.com/executablebooks/MyST-Parser/775)
⬆️ UPGRADE: Add support for sphinx v7, and remove v5 support (https://github.com/executablebooks/MyST-Parser/776)
⬆️ UPGRADE: Remove Python 3.7 support and add testing for Python 3.11 (https://github.com/executablebooks/MyST-Parser/772)
👌 Improve default slug generation for heading anchors, thanks to @Cimbali (https://github.com/executablebooks/MyST-Parser/777)
# ` a` b `c ` will now correctly create the slug -a-b-c- and not a-b-c👌 IMPROVE: Substitution extension (https://github.com/executablebooks/MyST-Parser/777)
myst.substitution warning for errors in resolving the substitution content.🧪 Introduce a gate/check GHA job, thanks to @webknjaz (https://github.com/executablebooks/MyST-Parser/635)
Full Changelog: v1.0.0...v2.0.0
This changes absolutely nothing in the code, or about the maintenance/release policy of this project. But it does feel about time 😄
🎉 MyST-Parser 1.0.0 🎉
This changes absolutely nothing in the code, or about the maintenance/release policy of this project.
But it does feel about time 😄
✨ NEW: Add myst_fence_as_directive config by @chrisjsewell in #742
myst_fence_as_directive config by @chrisjsewell in #742Setting the following config, for example:
extensions = ["myst_parser", "sphinxcontrib.mermaid"]
myst_fence_as_directive = ["mermaid"]
# optional to use directive options
myst_enable_extensions = ["attrs_block"]allows for one to write:
{caption="My caption"}
{alt="HTML alt" align=center}
```mermaid
graph LR
a --> b
```and have interoperable rendering with tools like GitHub.
Full Changelog: v0.19.1...v0.19.2
✨ NEW: Add myst_fence_as_directive config (gh-pr:742)
Setting the following config, for example:
extensions = ["myst_parser", "sphinxcontrib.mermaid"]
myst_fence_as_directive = ["mermaid"]
# optional to use directive options
myst_enable_extensions = ["attrs_block"]
allows for one to write:
{caption="My caption"}
{alt="HTML alt" align=center}
```mermaid
graph LR
a --> b
```
and have interoperable rendering with tools like GitHub.
🎉 New contributors:
html_last_updated_fmt = "" to conf.py to fix documentation footer, thanks to gh-user:jeanas (gh-pr:691)🐛 FIX NoURI error in doc reference resolution, for texinfo builds by @chrisjsewell in #734
Full Changelog: v0.19.0...v0.19.1
This release brings a number of exciting new features, improvements, and upgrades 🎉
This release brings a number of exciting new features, improvements, and upgrades 🎉
Full Changelog: v0.18.1...v0.19.0
The documentation has been almost completely rewritten, with a clearer structure, many more examples, rich hover tips, and a new live preview page (powered by pyscript, gh-pr:717).
The code base API is also now fully documented by sphinx-autodoc2, which even allows for MyST docstrings! (gh-pr:704).
The code base has been updated to support sphinx v6, and is no longer tested against sphinx v4 (gh-pr:664)
The docutils parser now supports many more features, and improvements to support live previews:
myst_suppress_warnings option added, mirroring Sphinx, to suppress MyST warnings (gh-pr:655)myst_meta_html and myst_substitutions options are now supported (gh-pr:672)myst_heading_anchors option is now supported (gh-pr:678)See the Extended Markdown links section for the full guide.
You can now use standard Markdown link syntax to reference many different types of targets, in a more consistent way.
[text](relative/path/myfile.md) work as previously, to link to files,
but they can also be relative to source directory: [text](/path/from/srcdir/myfile.md).
You can also use <project:file.md><path:myfile.txt> will link specifically to a downloadable file[text](#target) or <project:#target> will link (in order of priority) to any local target, local heading anchor, target in the same project, or intersphinx (inventory) target[text](inv:name:domain:type#target) will link specifically to a Sphinx inventory target, or to any inventory <inv:#target>, and can even use * wildcards like <inv:*:*:*#*.target>
myst_inventories config optionmyst-inv CLI makes it easy to find the correct inventory target:::{tip}
It is advised (although not immediately necessary) to prefix all internal references with #.
For example, [...](my-reference), should be changed to [...](#my-reference).
:::
{} Attributes syntaxThe attrs_inline and attrs_block extensions allow for common Markdown syntaxes to be extended with greater control over the output.
For example, you can now add classes, ids, and other attributes to inline code, images, and links, as well as to code blocks and directives.
`a = 1`{#id .class l=python}{#id .class width=100px}[some text]{#id .class}A paragraph block can have attributes too:
{#id .class}
This is a paragraph with an id and class
A code fence can be given line numbers and line emphasis:
{#id .class lineno-start=1 emphasize-lines="2,3"}
```python
a = 1
b = 2
c = 3
```
A definition list can be turned into a glossary, with referenceable terms:
{.glossary}
term name
: Definition of the term
Quote blocks can be given an attribution:
{attribution="Chris Sewell"}
> My quote
colon_fence extension now renders internal content as MyST, rather than as a code block (gh-pr:713)include directive in MyST documents now supports a :heading-offset: option, to offset the heading levels in the included documentmyst_heading_slug_func option now supports setting a str which points to a fully qualified function name, e.g. "module.path.func" (gh-pr:696)myst_enable_checkboxes option allows for task list checkboxes to be enabled/disabled (gh-pr:686)Python<3.8 in gh-pr:642, thanks to gh-user:hukkin⬆️ UPGRADE: docutils 0.19 support in
Full Changelog: v0.18.0...v0.18.1
attrs_image (experimental) extension in gh-pr:620
{#id .class width=100px}The top-level html_meta and substitutions front-matter keys have also been deprecated (i.e. they will still work but will emit a warning), as they now…
Full Changelog: v0.17.2...v0.18.0
This release adds support for Sphinx v5 (dropping v3), restructures the code base into modules, and also restructures the documentation, to make it easier for developers/users to follow.
It also introduces document-level configuration via the Markdown front-matter, under the myst key.
See the Local configuration section for more information.
This should not be breaking, for general users of the sphinx extension (with sphinx>3),
but will be for anyone directly using the Python API, mainly just requiring changes in import module paths.
The to_docutils, to_html, to_tokens (from myst_parser/main.py) and mock_sphinx_env/parse (from myst_parser.sphinx_renderer.py) functions have been removed, since these were primarily for internal testing.
Instead, for single page builds, users should use the docutils parser API/CLI (see ),
and for testing, functionality has been moved to https://github.com/chrisjsewell/sphinx-pytest.
The top-level html_meta and substitutions front-matter keys have also been deprecated (i.e. they will still work but will emit a warning), as they now form part of the myst config, e.g.
---
html_meta:
"description lang=en": "metadata description"
substitutions:
key1: I'm a **substitution**
---
is replaced by:
---
myst:
html_meta:
"description lang=en": "metadata description"
substitutions:
key1: I'm a **substitution**
---
parse_directive_text when body followed by options (gh-pr:580)♻️ REFACTOR: Replace attrs by dataclasses for configuration ( )
Full Changelog: v0.17.1...v0.17.2
attrs by dataclasses for configuration (gh-pr:557)🐛 FIX: Heading anchor resolution for parallel builds ( )
Full Changelog: v0.17.0...v0.17.1
WARNING: This is a breaking change for links that rely on auto-generated anchor links. You should now manually enable auto-generated anchor links if y…
This release contains a number of breaking improvements.
Full Changelog: v0.16.1...v0.17.0
WARNING: This is a breaking change for links that rely on auto-generated anchor links. You should now manually enable auto-generated anchor links if you see errors like WARNING reference target not found.
Markdown links are of the format [text](link).
MyST-Parser looks to smartly resolve such links, by identifying if they are:
[text](http://example.com)[text](file.md)
header-anchors are enabled, anchor links are also supported, e.g. [text](file.md#anchor)[text](my-reference)an additional situation is now supported:
[text](file.js). This behaves similarly to the sphinx download role.In addition, configuration to more finely tune this behaviour has been added.
myst_all_links_external=True, will make all links be treated as (1)myst_url_schemes=("http", "https"), sets what URL schemes are treated as (1)myst_ref_domains=("std", "py"), sets what Sphinx reference domains are checked, when handling (3)See Markdown Links and Referencing for more information.
WARNING: This is a breaking change for dollar math. You should now manually enable dollar math (see below).
The default configuration is now myst_enable_extensions=(), instead of myst_enable_extensions=("dollarmath",).
If you are using math enclosed in $ or $$ in your documents, you should enable dollarmath explicitly.
See Dollar delimited math for more information.
MyST-Parser now supports, and is tested against, Python 3.7 to 3.10.
strikethrough extension and myst_gfm_only configurationThe strikethrough extension allows text within ~~ delimiters to have a strike-through (horizontal line) placed over it.
For example, ~~strikethrough with *emphasis*~~ renders as: strikethrough with emphasis.
Important: This extension is currently only supported for HTML output.
See Strikethrough for more information.
The myst_gfm_only=True configuration sets up specific configuration, to enable compliance only with GitHub-flavored Markdown, including enabling the strikethrough, tasklist and linkify extensions, but disabling support for roles and directives.
myst_title_to_header configurationSetting myst_title_to_header=True, allows for a title key in the frontmatter to be used as the document title.
for example:
---
title: My Title with *emphasis*
---
would be equivalent to:
# My Title with *emphasis*
See Front matter for more information.
👌 IMPROVE: Convert nested headings to rubrics.
Headings within directives are not directly supported by sphinx, since they break the structure of the document. Previously myst-parser would emit a myst.nested_header warning, but still generate the heading, leading to unexpected outcomes.
Now the warning is still emitted, but also the heading is rendered as a rubric non-structural heading (i.e. it will not show in the ToC).
Other internal improvements primarily focused in improving support for the for "docutils-only" use, introduced in v0.16:
default_parser -> create_md_parser in gh-pr:474bullet attribute to bullet_list node in gh-pr:465state.inline_text in gh-pr:466note_refname for docutils internal links in gh-pr:481DocutilsRenderer.create_highlighted_code_block in gh-pr:488MockInliner.parse in gh-pr:504✨ NEW: Add myst_linkify_fuzzy_links option. When using the `linkify` extension, this option can be used to disable matching of links that do not conta
✨ NEW: Add myst_linkify_fuzzy_links option.
When using the linkify extension, this option can be used to disable matching of links that do not contain a schema (such as http://).
This release contains a number of exciting improvements:
This release contains a number of exciting improvements:
### Upgrade of Markdown parser
markdown-it-py has been upgraded to [v2.0.0](https://github.com/executablebooks/markdown-it-py/releases/tag/v2.0.0). This upgrade brings full compliance with the [CommonMark v0.30 specification](https://spec.commonmark.org/0.30/).
Additionally, mdit-py-plugins has been upgraded to [v0.3.0](https://github.com/executablebooks/mdit-py-plugins/releases/tag/v0.3.0). This improves the parsing of the MyST target syntax, to allow for spaces and additional special characters in the target name, for example this is now valid:
```md (a bc |@<>*./_-+:)=
# Header ```
Also MyST role syntax now supports unlimited length in the role name and new lines in the content. For example, this is now valid:
`md {abc}`xy new line` `
### Improvements for Docutils-only use
MyST now allows for Docutils-only use (outside of Sphinx), that allows for MyST configuration options to be set via the docutils.conf file, or on the command line.
On installing MyST-Parser, the following CLI-commands are made available:
myst-docutils-html: converts MyST to HTML
myst-docutils-html5: converts MyST to HTML5
myst-docutils-latex: converts MyST to LaTeX
myst-docutils-xml: converts MyST to docutils-native XML
myst-docutils-pseudoxml: converts MyST to pseudo-XML (to visualise the AST structure)
You can also install the [myst-docutils](https://pypi.org/project/myst-docutils/) package from pip, which includes no direct install requirements on docutils or sphinx.
See [MyST with Docutils](docs/docutils.md) for more information.
Thanks to help from <gh-user:cpitclaudel>!
### Include MyST files in RST files
With docutils>=0.17, the include directive has a parser option. This can be used with myst-parser to include MyST files in RST files.
```md Parse using the docutils only parser:
Parse using the sphinx parser:
```
### Addition of the fieldlist syntax extension
Field lists are mappings from field names to field bodies, based on the [reStructureText syntax](https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#field-lists):
```rst :name only: :name: body :name:
Multiple
Paragraphs
```
This should eventually allow for MyST Markdown docstrings! (see <https://github.com/executablebooks/MyST-Parser/issues/228>)
See [Field Lists syntax](docs/syntax/optional.md#field-lists) for more information.
### Improvements to table rendering
Tables with no body are now allowed, for example:
`md | abc | def | | --- | --- | `
Also cell alignment HTML classes have now been changed to: text-left, text-center, or text-right, for example:
`md | left | center | right | | :--- | :----: | ----: | | a | b | c | `
is converted to:
```html <table class="colwidths-auto">
<thead> <tr>
<th class="text-left head"><p>left</p></th> <th class="text-center head"><p>center</p></th> <th class="text-right head"><p>right</p></th>
</tr> </thead> <tbody> <tr>
<td class="text-left"><p>a</p></td> <td class="text-center"><p>b</p></td> <td class="text-right"><p>c</p></td>
</tr> </tbody>
</table> ```
These classes should be supported by most sphinx HTML themes.
See [Tables syntax](docs/syntax/tables.md) for more information.
### Pull Requests
🐛 FIX: Add mandatory attributes on enumerated_list by <gh-user:cpitclaudel> in <gh-pr:418>
📚 DOCS: Add reference to MySTyc in landing page by <gh-user:astrojuanlu> in <gh-pr:413>
⬆️ UPGRADE: markdown-it-py v2, mdit-py-plugins v0.3 by <gh-user:chrisjsewell> in <gh-pr:449>
👌 IMPROVE: Table rendering by <gh-user:chrisjsewell> in <gh-pr:450>
🐛 FIX: Ensure parent files are re-built if include file changes by <gh-user:chrisjsewell> in <gh-pr:451>
🐛 FIX: Convert empty directive option to None by <gh-user:chrisjsewell> in <gh-pr:452>
👌 IMPROVE: Add \ for hard-breaks in latex by <gh-user:chrisjsewell> in <gh-pr:453>
🔧 MAINTAIN: Remove empty "sphinx" extra by <gh-user:hukkin> in <gh-pr:350>
✨ NEW: Add fieldlist extension by <gh-user:chrisjsewell> in <gh-pr:455>
✨ NEW: Add Docutils MyST config and CLI by <gh-user:cpitclaudel> in <gh-pr:426>
🔧 MAINTAIN: Add publishing job for myst-docutils by <gh-user:chrisjsewell> in <gh-pr:456>
🧪 TESTS: Add for gettext_additional_targets by <gh-user:jpmckinney> in <gh-pr:459>
### New Contributors
<gh-user:cpitclaudel> made their first contribution in <gh-pr:418>
<gh-user:astrojuanlu> made their first contribution in <gh-pr:413>
Full Changelog: <https://github.com/executablebooks/MyST-Parser/compare/v0.15.2...v0.16.0>
This is mainly a maintenance release that fixes some incompatibilities with sphinx<3.1, improvements for compatibility with docutils=0.17, and improve
This is mainly a maintenance release that fixes some incompatibilities with sphinx<3.1, improvements for compatibility
with docutils=0.17, and improvements to robustness.
👌 IMPROVE: MathJax compatibility with nbsphinx
👌 IMPROVE: MathJax compatibility with nbsphinx
nbsphinx also overrides the MathJax configuration.
For compatibility, output_area is added to the list of default processed classes, and the override warning is allowed to be suppressed with suppress_warnings = ["myst.mathjax"].
A principe change in this release is to updates the requirements of myst-parser from sphinx>=2,<4 to sphinx>=3,<5.
sphinx v4 ⬆️A principe change in this release is to updates the requirements of myst-parser from sphinx>=2,<4 to sphinx>=3,<5.
Instead of removing all $ processing for the whole project,
during MyST document parsing, the top-level section is now given the classes tex2jax_ignore and mathjax_ignore (turning off default MathJax processing of all HTML elements)
and MathJax is then configured to process elements with the tex2jax_process|mathjax_process|math classes.
See the math syntax guide for further information.
The myst_url_schemes default is now: ("http", "https", "mailto", "ftp").
This means that only these URL will be considered as external (e.g. [](https://example.com)),
and references like [](prefix:main) will be considered as internal references.
Set myst_url_schemes = None, to revert to the previous default.
myst_heading_slug_func option 👌Use this option to specify a custom function to auto-generate heading anchors (see Auto-generated header anchors).
Thanks to gh-user:jpmckinney!
The deprecations made to extension configurations and colon fences in 0.13.0 (see below) have now been removed:
markdown-it-py v1.0 ⬆️This release updates the code-base to fully support the markdown-it-py v1.0.0 release.
In particular for users, this update alters the parsing of tables to be consistent with the Github Flavoured Markdown (GFM) specification.
Task lists utilise the markdown-it-py tasklists plugin, and are applied to Markdown list items starting with [ ] or [x].
- [ ] An item that needs doing
- [x] An item that is complete
Add "tasklist" to the myst_enable_extensions configuration to enable.
See the optional syntax guide for further information.
The sub-ref role has been added for use identical to ReST's |name| syntax.
This allows one to access Sphinx's built-in |today|, |release| and |version| substitutions, and also introduces two new substitutions: wordcount-words and wordcount-minutes, computed by the markdown-it-py wordcount_plugin.
> {sub-ref}`today` | {sub-ref}`wordcount-words` words | {sub-ref}`wordcount-minutes` min read
See the roles syntax guide for further information.
The dmath_double_inline configuration option allows display math (i.e. $$) within an inline context.
See the math syntax guide for further information.
The deprecations made to extension configurations and colon fences in 0.13.0 (see below) have now been removed:
myst_admonition_enable, myst_figure_enable, myst_dmath_enable, myst_amsmath_enable, myst_deflist_enable, myst_html_img_enable:::{admonition,class} -> :::{admonition}\n:class: class:::{figure} -> :::{figure-md}Previously footnote definitions in block elements like lists would crash the parsing:
- [^e]: footnote definition in a block element
These are now correctly extracted.
Nothing published for this version
Nothing published for this version
Nothing published for this version
👌 IMPROVE: Add warning for nested headers:
👌 IMPROVE: Add warning for nested headers:
Nested headers are not supported within most elements (this is a limitation of the docutils/sphinx document structure), and can lead to unexpected outcomes. For example in admonitions:
```{note}
# Unsupported Header
```
A warning (of type myst.nested_header) is now emitted when this occurs.
🔧 MAINTAIN: Python 3.9 is now officially supported.
🐛 FIX: docutils v0.17 compatibility
🐛 FIX: docutils v0.17 compatibility
⬆️ UPGRADE: required markdown-it-py to v0.6.2: In particular, this fixes missing source line mappings for table rows and their children
v0.6.2:
In particular, this fixes missing source line mappings for table rows and their childrenrawtext in AST nodes:
We now ensure that the raw text is propagated from the Markdown tokens to the Sphinx AST.
In particular, this is required by the gettext builder, to generate translation POT templates.
Thanks to gh-user:jpmckinney!myst.subtype:
All parsing warnings are assigned a type/subtype, and also the messages are appended with them.
These warning types can be suppressed with the sphinx suppress_warnings config option.
See How-to suppress warnings for more information.Nothing published for this version
🐛 FIX: front-matter parsing for bibliographic keys
Minor fixes:
✨ NEW: Add html_admonition extension
✨ NEW: Add html_admonition extension
: By adding "html_admonition" to myst_enable_extensions, you can enable parsing of <div class="admonition"> HTML blocks to sphinx admonitions.
: This is helpful when you care about viewing the "source" Markdown, such as in Jupyter Notebooks.
: For example:
<div class="admonition note" name="html-admonition">
<p class="title">This is the **title**</p>
This is the *content*
</div>
: See the optional syntax guide for further information.
👌 IMPROVE: Footnotes
: If the label is an integer, then it will always use this integer for the rendered label (i.e. they are manually numbered).
: Add myst_footnote_transition configuration, to turn on/off transition line.
: Add footnotes class to transition <hr> in HTML.
: See the typography guide for further information.
👌 IMPROVE: substitution extension logic
: Parse inline substitutions without block rules, unless the substitution starts with a directive.
🐛 FIX: Render front-matter as field_list
: To improve use by sphinx extensions).
👌 IMPROVE: Code quality
: Add isort and mypy type checking to code base.
(thanks to contributors gh-user:akhmerov, gh-user:tfiers)
👌 Directives can now be used for inline substitutions, e.g.
👌 Directives can now be used for inline substitutions, e.g.
---
substitutions:
key: |
```{image} img/fun-fish.png
:alt: fishy
:height: 20px
```
---
An inline image: {{ key }}
myst_enable_extensions = ["dollarmath", ...] now replaces and deprecates individual enable configuration variables: admonition_enable -> "colon_fence"…
This release makes some major updates to the optional syntaxes. For full details see Optional MyST Syntaxes.
myst_enable_extensions = ["dollarmath", ...] now replaces and deprecates individual enable configuration variables: admonition_enable -> "colon_fence", figure_enable -> "colon_fence", dmath_enable -> "dollarmath", amsmath -> "colon_fence", deflist_enable -> "deflist", html_img_enable -> "html_image".
The colon_fence extension (replacing admonition_enable) now works exactly the same as normal ``` code fences, but using ::: delimiters. This is helpful for directives that contain Markdown text, for example:
:::{admonition} The title
:class: note
This note contains *Markdown*
:::
The smartquotes extension will automatically convert standard quotations to their opening/closing variants:
'single quotes': ‘single quotes’"double quotes": “double quotes”The linkify extension will automatically identify “bare” web URLs, like www.example.com, and add hyperlinks; www.example.com.
This extension requires that linkify-it-py is installed.
The replacements extension will automatically convert some common typographic texts, such as +- -> ±.
The substitution extension allows you to specify "substitution definitions" in either the conf.py (as myst_substitutions) and/or individual file's front-matter (front-matter takes precedence), which will then replace substitution references. For example:
---
substitutions:
key1: definition
---
{{ key1 }}
The substitutions are assessed as jinja2 expressions and includes the Sphinx Environment as env, so you can do powerful thinks like:
{{ [key1, env.docname] | join('/') }}
The figure-md directive has been added (replacing enable_figure), which parses a "Markdown friendly" figure (used with the colon_fence extension):
:::{figure-md} fig-target
:class: myclass
<img src="img/fun-fish.png" alt="fishy" class="bg-primary mb-1" width="200px">
This is a caption in **Markdown**
:::
Using the html_image extension, HTML images are now processed for both blocks and (now) inline.
So you can correctly do, for example:
I’m an inline image: <img src="img/fun-fish.png" height="20px">
| table column |
| ----------------------------------------- |
| <img src="img/fun-fish.png" width="20px"> |
🐛 FIX: allow dates to be parsed in frontmatter. : This fixes a bug that would raise errors at parse time if non-string date objects were in front-matt
🐛 FIX: allow dates to be parsed in frontmatter. : This fixes a bug that would raise errors at parse time if non-string date objects were in front-matter YAML. See gh-pr:253
✨ NEW: Auto-generate heading anchors. : This utilises markdown-it-py's anchors-plugin, to generate unique anchor "slugs" for each header (up to a cert
✨ NEW: Auto-generate heading anchors.
: This utilises markdown-it-py's anchors-plugin, to generate unique anchor "slugs" for each header (up to a certain level),
and allows them to be referenced via a relative path, e.g. [](./file.md#header-anchor), or in the same document, e.g. [](#header-anchor).
Slugs are generated in the GitHub style (see here); lower-case text, removing punctuation, replacing spaces with -, enforce uniqueness via suffix enumeration -1.
It is enabled in your conf.py via myst_heading_anchors = 2 (sets maximum heading level).
🐛 FIX: doc reference resolution for singlehtml/latex.
: These reference resolutions are passed to the "missing-reference" event, and require the node["refdoc"] attribute to be available, which was missing for [text](./path/to/file.md) type references.
Nothing published for this version
✨ NEW: Want to include your README.md in the documentation? : See including a file from outside the docs folder.
✨ NEW: Want to include your README.md in the documentation? : See including a file from outside the docs folder.
(👌 added relative-docs option in 0.12.8)
Nothing published for this version
✨ NEW: Add Markdown figure syntax : Setting myst_figure_enable = True in your sphinx conf.py, combines the above two extended syntaxes, to create a fu
✨ NEW: Add Markdown figure syntax
: Setting myst_figure_enable = True in your sphinx conf.py, combines the above two extended syntaxes,
to create a fully Markdown compliant version of the figure directive.
See Markdown Figures for details.
(👌 formatting of caption improved in 0.12.6)
👌 IMPROVE: the mathjax extension is now only overridden if strictly necessary (to support dollar and ams math), and the override is more precise, to m
👌 IMPROVE: the mathjax extension is now only overridden if strictly necessary (to support dollar and ams math), and the override is more precise, to mitigate any unwanted side-effects
✨ NEW: Add definition lists. : This addition, enabled by myst_deflist_enable = True, allows for "Pandoc style" definition lists to be parsed and rende
✨ NEW: Add definition lists.
: This addition, enabled by myst_deflist_enable = True, allows for "Pandoc style" definition lists to be parsed and rendered, e.g.
Term 1
: Definition
See the Definition Lists documentation for further details.
👌 IMPROVE: mathjax_config override.
: Only mathjax_config["tex2jax"] will now be overridden, in order to not interfere with other user configurations, such as adding TeX macros.
The configuration name has also changed from myst_override_mathjax to myst_update_mathjax.
See Mathjax and math parsing for further details.
✨ NEW: Add the eval-rst directive
✨ NEW: Add the eval-rst directive
: This directive parses its contents as ReStructuredText, which integrates back into the rest of the document, e.g. for cross-referencing. See this documentation for further explanation.
In particular, this addition solves some outstanding user requests:
Thanks to gh-user:stephenroller for the contribution 🎉
✨ NEW: Add myst_commonmark_only config option, for restricting the parser to strict CommonMark (no extensions).
✨ NEW: Add myst_commonmark_only config option, for restricting the parser to strict CommonMark (no extensions).
If you are using math in your documents, be sure to read the updated Math syntax guide! In particular, the Mathjax configuration is now overridden, su
If you are using math in your documents, be sure to read the updated Math syntax guide!
In particular, the Mathjax configuration is now overridden, such that LaTeX environments will only be rendered if myst_amsmath_enable=True is set.
The myst_math_delimiters option has also been removed (please open an issue if you would like brackets math parsing to be re-implemented).
In addition the myst_html_img option name has been changed to myst_html_img_enable.
Some underlying code has also been refactored, to centralise handling of configuration options (see commit 98573b9).
More configuration options for math parsing (see MyST configuration options).
tag parsing to sphinx representation, see the image syntax guide
<img src="file.png" width="200px"> tag parsing to sphinx representation, see the image syntax guide[title](link) syntax now works with intersphinx references.
Recognised URI schemas can also be configured, see the configuration optionsCorrectly pin required minimum markdown-it-py version
Special admonition directive syntax (optional):
Special admonition directive syntax (optional):
:::{note}
This text is **standard** _Markdown_
:::
See the syntax guide section for details.
Direct parsing of amsmath LaTeX equations (optional). See the syntax guide section for details.
Support Sphinx version 3 in ( )
(GitHub contributors page for this release)
@AakashGfude | @asmeurer | @choldgraf | @chrisjsewell | @codecov | @webknjaz | @welcome
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →