Single Page Builds#
Added 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 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 Configuration.
Shared Docutils CLI Options
Usage
=====
myst-docutils-<writer> [options] [<source> [<destination>]]
Options
=======
General Docutils Options
------------------------
--output=<destination> Output destination name. Obsoletes the <destination>
positional argument. Default: None (stdout).
--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.
--root-prefix=<path> Base directory for absolute paths when reading from
the local filesystem. Default "/".
--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: <auto-detect>: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 optionally 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.
MyST options
------------
--myst-commonmark-only=<boolean>
Use strict CommonMark parser (default: False)
--myst-gfm-only=<boolean>
Use strict Github Flavoured Markdown parser (default:
False)
--myst-enable-extensions=<comma-delimited>
Enable syntax extensions
--myst-disable-syntax=<comma-delimited>
Disable Commonmark syntax elements
--myst-all-links-external=<boolean>
Parse all links as simple hyperlinks (default: False)
--myst-links-external-new-tab=<boolean>
Open all external links in a new tab (default: False)
--myst-url-schemes=<comma-delimited>|<yaml-dict>
URI schemes that are converted to external links
(default: http,https,mailto,ftp)
--myst-fence-as-directive=<comma-delimited>
Interpret a code fence as a directive, for certain
language names. This can be useful for fences like dot
and mermaid, and interoperability with other Markdown
renderers.
--myst-number-code-blocks=<comma-delimited>
Add line numbers to code blocks with these languages
--myst-title-to-header=<boolean>
Convert a `title` field in the front-matter to a H1
header (default: False)
--myst-heading-anchors=<int>
Heading level depth to assign HTML anchors (default:
0)
--myst-heading-slug-func=<str>
Function for creating heading anchors, or a python
import path e.g. `my_package.my_module.my_function`
(default: (default: 'None'))
--myst-html-meta=<yaml-dict>
HTML meta tags
--myst-footnote-sort=<boolean>
Move all footnotes to the end of the document, and
sort by reference order (default: True)
--myst-footnote-transition=<boolean>
Place a transition before sorted footnotes (default:
True)
--myst-words-per-minute=<int>
For reading speed calculations (default: 200)
--myst-substitutions=<yaml-dict>
Substitutions mapping
--myst-linkify-fuzzy-links=<boolean>
Recognise URLs without schema prefixes (default: True)
--myst-dmath-allow-labels=<boolean>
Parse `$$...$$ (label)` (default: True)
--myst-dmath-allow-space=<boolean>
Allow initial/final spaces in `$ ... $` (default:
True)
--myst-dmath-allow-digits=<boolean>
Allow initial/final digits `1$ ...$2` (default: True)
--myst-dmath-double-inline=<boolean>
Parse inline `$$ ... $$` (default: False)
--myst-enable-checkboxes=<boolean>
Enable checkboxes (default: False)
--myst-suppress-warnings=<comma-delimited>
A list of warning types to suppress warning messages
--myst-highlight-code-blocks=<boolean>
Syntax highlight code blocks with pygments (default:
True)
--myst-inventories=<yaml-dict>
Mapping of key to (url, inv file), for intra-project
referencing
Generic Parser Options
----------------------
--no-file-insertion Disable directives that insert the contents of an
external file; replaced with a "warning" system
message.
--file-insertion-enabled
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)
--line-length-limit=<length>
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
"https://peps.python.org/").
--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
"https://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.
--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.
Added in version 0.19.0: myst-suppress-warnings
replicates the functionality of sphinx’s suppress_warnings
for myst.
warnings in the docutils
CLI.
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
myst-substitutions:
key1: value1
key2: value2
# 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.parsers.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_
重要
The parser
option requires docutils>=0.17