MyST with DocutilsΒΆ
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.
Note
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 HTMLmyst-docutils-html5
: converts MyST to HTML5myst-docutils-latex
: converts MyST to LaTeXmyst-docutils-xml
: converts MyST to docutils-native XMLmyst-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 hello-world.md
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 Sphinx configuration options.
Shared Docutils CLI Options
Usage
=====
myst-docutils-<writer> [options] [<source> [<destination>]]
Options
=======
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)
--no-footnote-backlinks
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)
--strip-elements-with-class=<class>
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.
--input-encoding-error-handler=INPUT_ENCODING_ERROR_HANDLER
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.
--output-encoding-error-handler=OUTPUT_ENCODING_ERROR_HANDLER
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.
--error-encoding-error-handler=ERROR_ENCODING_ERROR_HANDLER
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.
--record-dependencies=<file>
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.
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
"http://www.python.org/dev/peps/").
--pep-file-url-template=<URL>
Template for PEP file part of URL. (default
"pep-%04d")
--rfc-references Recognize and link to standalone RFC references (like
"RFC 822").
--rfc-base-url=<URL> Base URL for RFC references (default
"http://tools.ietf.org/html/").
--tab-width=<width> Set number of spaces for tab expansion (default 8).
--trim-footnote-reference-space
Remove spaces before footnote references.
--leave-footnote-reference-space
Leave spaces before footnote references.
--no-file-insertion Disable directives that insert the contents of
external file ("include" & "raw"); replaced with a
"warning" system message.
--file-insertion-enabled
Enable directives that insert the contents of external
file ("include" & "raw"). Enabled by default.
--no-raw Disable the "raw" directives; replaced with a
"warning" system message.
--raw-enabled Enable the "raw" directive. Enabled by default.
--syntax-highlight=<format>
Token name set for parsing code with Pygments: one of
"long", "short", or "none (no parsing)". Default is
"long".
--smart-quotes=<yes/no/alt>
Change straight quotation marks to typographic form:
one of "yes", "no", "alt[ernative]" (default "no").
--smartquotes-locales=<language:quotes[,language:quotes,...]>
Characters to use as "smart quotes" for <language>.
--word-level-inline-markup
Inline markup recognized at word boundaries only
(adjacent to punctuation or whitespace). Force
character-level inline markup recognition with "\ "
(backslash + space). Default.
--character-level-inline-markup
Inline markup recognized anywhere, regardless of
surrounding characters. Backslash-escapes must be used
to avoid unwanted markup recognition. Useful for East
Asian languages. Experimental.
MyST options
------------
--myst-commonmark-only=MYST_COMMONMARK_ONLY
Use strict CommonMark parser (type: bool, default:
False)
--myst-enable-extensions=MYST_ENABLE_EXTENSIONS
Enable extensions (type: comma-delimited, default:
'dollarmath')
--myst-linkify-fuzzy-links=MYST_LINKIFY_FUZZY_LINKS
linkify: recognise URLs without schema prefixes (type:
bool, default: True)
--myst-dmath-allow-labels=MYST_DMATH_ALLOW_LABELS
Parse `$$...$$ (label)` (type: bool, default: True)
--myst-dmath-allow-space=MYST_DMATH_ALLOW_SPACE
dollarmath: allow initial/final spaces in `$ ... $`
(type: bool, default: True)
--myst-dmath-allow-digits=MYST_DMATH_ALLOW_DIGITS
dollarmath: allow initial/final digits `1$ ...$2`
(type: bool, default: True)
--myst-dmath-double-inline=MYST_DMATH_DOUBLE_INLINE
dollarmath: parse inline `$$ ... $$` (type: bool,
default: False)
--myst-disable-syntax=MYST_DISABLE_SYNTAX
Disable syntax elements (type: comma-delimited,
default: '')
--myst-url-schemes=MYST_URL_SCHEMES
URL schemes to allow in links (type: comma-delimited,
default: 'http,https,mailto,ftp')
--myst-footnote-transition=MYST_FOOTNOTE_TRANSITION
Place a transition before any footnotes (type: bool,
default: True)
--myst-words-per-minute=MYST_WORDS_PER_MINUTE
For reading speed calculations (type: int, default:
200)
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:
[general]
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(
source=source,
writer_name="html5",
settings_overrides={
"myst_enable_extensions": ["deflist"],
"embed_stylesheet": False,
},
parser=Parser(),
)
Finally, you can include MyST Markdown files within a RestructuredText file, using the include
directive:
.. include:: include.md
:parser: myst_parser.docutils_
Important
The parser
option requires docutils>=0.17