Ecosystem of tools#

There are several major tools that we have developed, or are contributing to, as a part of this project. This page describes a few major components.

MyST Markdown#

An extensible, semantic, and community-driven flavor of markdown designed for scientific and computational narratives.

MyST Markdown is a language- and implementation-agnostic flavor of markdown with support from several tools (some of which are stewarded by us and listed below).

See below for examples of implementations and tools that use MyST Markdown.

Jupyter Book#

A command-line interface for building beautiful, publication-quality books and documents from computational content.

Jupyter Book is a distribution of Sphinx that allows you to write content in markdown and Jupyter Notebooks, execute content and insert it into your book, and build a variety of outputs for interactivity and document publishing.

Jupyter Book gets most of its functionality from the collection of open source tools in Python and Sphinx that are listed below. You can use each tool on its own for your own purposes, or bring them together with Jupyter Book.

Sphinx stack#

The core of this project’s initial efforts. These are a collection of tools that rely on Sphinx’s documentation engine for creating computational narratives.

MyST - Markedly Structured Text#

(link to documentation)

A Sphinx parser for MyST Markdown. MyST allows you to write Sphinx documentation entirely in markdown.

MyST has the following main features:

MyST-NB#

(link to documentation)

A Sphinx extension for executing and reading Jupyter Notebooks with MyST Markdown.

It provides the following primary features:

In addition, there are several options for controlling the look and feel of how your notebooks are used in your documentation.

Sphinx Book Theme#

(link to documentation)

A lightweight Sphinx theme designed to mimic the look-and-feel of an interactive book.

It has the following primary features:

A collection of Sphinx extensions#

In addition to these major tools described above, the EBP also maintains a number of tools in the Sphinx ecosystem for writing beautiful online books and documents. For example:

Python stack#

These are tools written in Python but meant to be re-used across many projects.

Jupyter Cache#

Allows you to execute and cache notebook files so that you only re-run them when you need to.

(link to documentation)

This packages provides a clear API and CLI for staging, executing and cacheing Jupyter Notebooks. Although there are certainly other use cases, the principle use case this was written for is generating books / websites, created from multiple notebooks (and other text documents), during which it is desired that notebooks can be auto-executed only if the notebook had been modified in a way that may alter its code cell outputs.

Markdown-it-py#

(link to documentation)

A markdown parser done right. Fast and easy to extend.

markdown-it-py is a Python port of the very popular markdown-it package. Its goal is to remain as close as possible to the markdown-it API and plugin spec. Here are its main features:

JavaScript stack#

MyST-JS#

A JavaScript implementation of MyST Markdown, and a command-line interface for building articles and technical documents for computational narratives.

Thebe#

A JavaScript library that allows you to convert static code blocks into interactive and executable blocks.

It leverages mybinder.org or jupyterlite.

jupyterlab-myst#

A JupyterLab extension that allows users to write MyST Markdown in Jupyter Notebooks via JupyterLab.