Single Page Builds#

New in version 0.16.0.

Sphinx, and thus MyST-Parser, is built on top of the Docutils package. MyST-Parser offers a renderer, parser and CLI-interface for working directly with Docutils, independent of Sphinx, as described below.


Since these tools are independent of Sphinx, this means they cannot parse any Sphinx or Sphinx extensions specific roles or directives.

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)

Each command can be piped stdin or take a file path as an argument:

$ myst-docutils-html --help
$ echo "Hello World" | myst-docutils-html
$ myst-docutils-html

The commands are based on the Docutils Front-End Tools, and so follow the same argument and options structure, included many of the MyST specific options detailed in Configuration.

Shared Docutils CLI Options
  myst-docutils-<writer> [options] [<source> [<destination>]]

General Docutils Options
--title=TITLE           Specify the document title as metadata.
--generator, -g         Include a "Generated by Docutils" credit and link.
--no-generator          Do not include a generator credit.
--date, -d              Include the date at the end of the document (UTC).
--time, -t              Include the time & date (UTC).
--no-datestamp          Do not include a datestamp of any kind.
--source-link, -s       Include a "View document source" link.
--source-url=<URL>      Use <URL> for a source link; implies --source-link.
--no-source-link        Do not include a "View document source" link.
--toc-entry-backlinks   Link from section headers to TOC entries.  (default)
--toc-top-backlinks     Link from section headers to the top of the TOC.
--no-toc-backlinks      Disable backlinks to the table of contents.
--footnote-backlinks    Link from footnotes/citations to references. (default)
                        Disable backlinks from footnotes and citations.
--section-numbering     Enable section numbering by Docutils.  (default)
--no-section-numbering  Disable section numbering by Docutils.
--strip-comments        Remove comment elements from the document tree.
--leave-comments        Leave comment elements in the document tree. (default)
                        Remove all elements with classes="<class>" from the
                        document tree. Warning: potentially dangerous; use
                        with caution. (Multiple-use option.)
--strip-class=<class>   Remove all classes="<class>" attributes from elements
                        in the document tree. Warning: potentially dangerous;
                        use with caution. (Multiple-use option.)
--report=<level>, -r <level>
                        Report system messages at or higher than <level>:
                        "info" or "1", "warning"/"2" (default), "error"/"3",
                        "severe"/"4", "none"/"5"
--verbose, -v           Report all system messages.  (Same as "--report=1".)
--quiet, -q             Report no system messages.  (Same as "--report=5".)
--halt=<level>          Halt execution at system messages at or above <level>.
                        Levels as in --report.  Default: 4 (severe).
--strict                Halt at the slightest problem.  Same as "--halt=info".
--exit-status=<level>   Enable a non-zero exit status for non-halting system
                        messages at or above <level>.  Default: 5 (disabled).
--debug                 Enable debug-level system messages and diagnostics.
--no-debug              Disable debug output.  (default)
--warnings=<file>       Send the output of system messages to <file>.
--traceback             Enable Python tracebacks when Docutils is halted.
--no-traceback          Disable Python tracebacks.  (default)
--input-encoding=<name[:handler]>, -i <name[:handler]>
                        Specify the encoding and optionally the error handler
                        of input text.  Default: <locale-dependent>:strict.
                        Specify the error handler for undecodable characters.
                        Choices: "strict" (default), "ignore", and "replace".
--output-encoding=<name[:handler]>, -o <name[:handler]>
                        Specify the text encoding and optionally the error
                        handler for output.  Default: UTF-8:strict.
                        Specify error handler for unencodable output
                        characters; "strict" (default), "ignore", "replace",
                        "xmlcharrefreplace", "backslashreplace".
--error-encoding=<name[:handler]>, -e <name[:handler]>
                        Specify text encoding and error handler for error
                        output.  Default: UTF-8:backslashreplace.
                        Specify the error handler for unencodable characters
                        in error output.  Default: backslashreplace.
--language=<name>, -l <name>
                        Specify the language (as BCP 47 language tag).
                        Default: en.
                        Write output file dependencies to <file>.
--config=<file>         Read configuration settings from <file>, if it exists.
--version, -V           Show this program's version number and exit.
--help, -h              Show this help message and exit.

MyST options
                        Use strict CommonMark parser (default: False)
                        Use strict Github Flavoured Markdown parser (default:
                        Enable syntax extensions (default: '')
                        Disable Commonmark syntax elements (default: '')
                        Parse all links as simple hyperlinks (default: False)
                        URL scheme prefixes identified as external links
                        (default: 'http,https,mailto,ftp')
                        Syntax highlight code blocks with pygments (default:
                        Add line numbers to code blocks with these languages
                        (default: '')
                        Convert a `title` field in the top-matter to a H1
                        header (default: False)
                        Place a transition before any footnotes (default:
                        For reading speed calculations (default: 200)
                        Recognise URLs without schema prefixes (default: True)
                        Parse `$$...$$ (label)` (default: True)
                        Allow initial/final spaces in `$ ... $` (default:
                        Allow initial/final digits `1$ ...$2` (default: True)
                        Parse inline `$$ ... $$` (default: False)

Generic Parser Options
--no-file-insertion     Disable directives that insert the contents of an
                        external file; replaced with a "warning" system
                        Enable directives that insert the contents of an
                        external file. (default)
--no-raw                Disable the "raw" directive; replaced with a "warning"
                        system message.
--raw-enabled           Enable the "raw" directive. (default)
                        Maximal number of characters in an input line. Default
                        10 000.

reStructuredText Parser Options
--pep-references        Recognize and link to standalone PEP references (like
                        "PEP 258").
--pep-base-url=<URL>    Base URL for PEP references (default
                        Template for PEP file part of URL. (default
--rfc-references        Recognize and link to standalone RFC references (like
                        "RFC 822").
--rfc-base-url=<URL>    Base URL for RFC references (default
--tab-width=<width>     Set number of spaces for tab expansion (default 8).
                        Remove spaces before footnote references.
                        Leave spaces before footnote references.
                        Token name set for parsing code with Pygments: one of
                        "long", "short", or "none" (no parsing). Default is
                        Change straight quotation marks to typographic form:
                        one of "yes", "no", "alt[ernative]" (default "no").
                        Characters to use as "smart quotes" for <language>.
                        Inline markup recognized at word boundaries only
                        (adjacent to punctuation or whitespace). Force
                        character-level inline markup recognition with "\ "
                        (backslash + space). Default.
                        Inline markup recognized anywhere, regardless of
                        surrounding characters. Backslash-escapes must be used
                        to avoid unwanted markup recognition. Useful for East
                        Asian languages. Experimental.

The CLI commands can also utilise the docutils.conf configuration file to configure the behaviour of the CLI commands. For example:

# These entries affect all processing:
myst-enable-extensions: deflist,linkify
myst-footnote-transition: no

# These entries affect specific HTML output:
[html writers]
embed-stylesheet: no

[html5 writer]
stylesheet-dirs: path/to/html5_polyglot/
stylesheet-path: minimal.css, responsive.css

You can also use the myst_parser.docutils_.Parser class programmatically with the Docutils publisher API:

from docutils.core import publish_string
from myst_parser.docutils_ import Parser

source = "hallo world\n: Definition"
output = publish_string(
        "myst_enable_extensions": ["deflist"],
        "embed_stylesheet": False,

Finally, you can include MyST Markdown files within a RestructuredText file, using the include directive:

.. include::
   :parser: myst_parser.docutils_


The parser option requires docutils>=0.17