Single page builds#

New in version 0.14.0.

Sphinx, and thus MyST-NB, is built on top of the Docutils package. MyST-NB 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-NB, the following CLI-commands are made available:

  • mystnb-docutils-html: converts notebooks to HTML

  • mystnb-docutils-html5: converts notebooks to HTML5

  • mystnb-docutils-latex: converts notebooks to LaTeX

  • mystnb-docutils-xml: converts notebooks to docutils-native XML

  • mystnb-docutils-pseudoxml: converts notebooks to pseudo-XML (to visualise the AST structure)

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

$ mystnb-docutils-html --help
$ mystnb-docutils-html --nb-execution-mode="off" hello-world.ipynb
$ mystnb-docutils-html --nb-read-as-md="yes" 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 NB specific options detailed in the Configuration section.

Shared Docutils CLI Options
Usage
=====
  mystnb-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.

MyST-NB options
---------------
--nb-read-as-md=<boolean>
                        Read as the MyST Markdown format (default: False)
--nb-metadata-key=<str>
                        Notebook level metadata key for config overrides
                        (default: 'mystnb')
--nb-cell-metadata-key=<str>
                        Cell level metadata key for config overrides (default:
                        'mystnb')
--nb-execution-mode=<'off'|'force'|'auto'|'cache'|'inline'>
                        Execution mode for notebooks (default: 'auto')
--nb-execution-cache-path=<str>
                        Path to folder for caching notebooks (default:
                        <outdir>) (default: '')
--nb-execution-timeout=<int>
                        Execution timeout (seconds) (default: 30)
--nb-execution-in-temp=<boolean>
                        Use temporary folder for the execution current working
                        directory (default: False)
--nb-execution-allow-errors=<boolean>
                        Allow errors during execution (default: False)
--nb-execution-raise-on-error=<boolean>
                        Raise an exception on failed execution, rather than
                        emitting a warning (default: False)
--nb-execution-show-tb=<boolean>
                        Print traceback to stderr on execution error (default:
                        False)
--nb-merge-streams=<boolean>
                        Merge stdout/stderr execution output streams (default:
                        False)
--nb-render-plugin=<str>
                        The entry point for the execution output render class
                        (in group `myst_nb.output_renderer`) (default:
                        'default')
--nb-remove-code-source=<boolean>
                        Remove code cell source (default: False)
--nb-remove-code-outputs=<boolean>
                        Remove code cell outputs (default: False)
--nb-code-prompt-show=<str>
                        Prompt to expand hidden code cell
                        {content|source|outputs} (default: 'Show code cell
                        {type}')
--nb-code-prompt-hide=<str>
                        Prompt to collapse hidden code cell
                        {content|source|outputs} (default: 'Hide code cell
                        {type}')
--nb-number-source-lines=<boolean>
                        Number code cell source lines (default: False)
--nb-builder-name=<str>
                        Builder name, to select render priority for mime types
                        (default: 'html')
--nb-output-stderr=<'show'|'remove'|'remove-warn'|'warn'|'error'|'severe'>
                        Behaviour for stderr output (default: 'show')
--nb-render-text-lexer=<str>
                        Pygments lexer applied to stdout/stderr and text/plain
                        outputs (default: 'myst-ansi')
--nb-render-error-lexer=<str>
                        Pygments lexer applied to error/traceback outputs
                        (default: 'ipythontb')
--nb-render-markdown-format=<'commonmark'|'gfm'|'myst'>
                        The format to use for text/markdown rendering
                        (default: 'commonmark')
--nb-output-folder=<str>
                        Folder for external outputs (like images), skipped if
                        empty (default: 'build')
--nb-append-css=<boolean>
                        Add default MyST-NB CSS to HTML outputs (default:
                        True)
--nb-metadata-to-fm=<boolean>
                        Convert unhandled metadata to frontmatter (default:
                        False)

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 (default: '')
--myst-disable-syntax=<comma-delimited>
                        Disable Commonmark syntax elements (default: '')
--myst-all-links-external=<boolean>
                        Parse all links as simple hyperlinks (default: False)
--myst-url-schemes=<null|comma-delimited>
                        URL scheme prefixes identified as external links
                        (default: 'http,https,mailto,ftp')
--myst-highlight-code-blocks=<boolean>
                        Syntax highlight code blocks with pygments (default:
                        True)
--myst-number-code-blocks=<comma-delimited>
                        Add line numbers to code blocks with these languages
                        (default: '')
--myst-title-to-header=<boolean>
                        Convert a `title` field in the top-matter to a H1
                        header (default: False)
--myst-footnote-transition=<boolean>
                        Place a transition before any footnotes (default:
                        True)
--myst-words-per-minute=<int>
                        For reading speed calculations (default: 200)
--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)

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
                        "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.
--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.

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]
nb_execution_mode: off

# 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_nb.docutils_.Parser class programmatically with the Docutils publisher API:

from docutils.core import publish_string
from nbformat import writes
from nbformat.v4 import new_notebook
from myst_nb.docutils_ import Parser

source = writes(new_notebook())
output = publish_string(
    source=source,
    writer_name="html5",
    settings_overrides={
        "nb_execution_mode": "off",
        "embed_stylesheet": False,
    },
    parser=Parser(),
)

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

.. include:: include.ipynb
   :parser: myst_nb.docutils_

Important

The parser option requires docutils>=0.17