The alignment syntax that I've mentioned above unfortunately does not work as of this date (June 25th, 2020) when using local installations of the Jupyter notebook environment. This is because of a bug in the Jupyter source where the Markdown alignment is not taken into account and all of the text is right aligned. To do that, you can use a Markdown cell. Markdown writing skills are essential to portray your work in the Jupyter notebook to offer the reader a sufficient explanation of both the code and the.
- Jupyter Tutorial
- IPython
- Jupyter
- QtConsole
- JupyterLab
- Jupyter Resources
- Selected Reading
Markdown cell displays text which can be formatted using markdown language. In order to enter a text which should not be treated as code by Notebook server, it must be first converted as markdown cell either from cell menu or by using keyboard shortcut M while in command mode. The In[] prompt before cell disappears.
Header cell
A markdown cell can display header text of 6 sizes, similar to HTML headers. Start the text in markdown cell by # symbol. Use as many # symbols corresponding to level of header you want. It means single # will render biggest header line, and six # symbols renders header of smallest font size. The rendering will take place when you run the cell either from cell menu or run button of toolbar.
Following screenshot shows markdown cells in edit mode with headers of three different levels.
When cells are run, the output is as follows −
Note that Jupyter notebook markdown doesn’t support WYSWYG feature. The effect of formatting will be rendered only after the markdown cell is run.
Ordered Lists
To render a numbered list as is done by <ol> tag of HTML, the First item in the list should be numbered as 1. Subsequent items may be given any number. It will be rendered serially when the markdown cell is run. To show an indented list, press tab key and start first item in each sublist with 1.
If you give the following data for markdown −
It will display the following list −
![Tutorial Tutorial](/uploads/1/1/8/6/118670313/764212535.png)
Bullet lists
Each item in the list will display a solid circle if it starts with – symbol where as solid square symbol will be displayed if list starts with * symbol. The following example explains this feature −
The rendered markdown shows up as below −
Hyperlinks
Markdown text starting with http or https automatically renders hyperlink. To attach link to text, place text in square brackets [] and link in parentheses () optionally including hovering text. Following screenshot will explain this.
The rendered markdown appears as shown below −
Bold and Italics
To show a text in bold face, put it in between double underscores or two asterisks. To show in italics, put it between single underscores or single asterisks.
The result is as shown below −
Images
To display image in a markdown cell, choose ‘Insert image’ option from Edit menu and browse to desired image file. The markdown cell shows its syntax as follows −
Image will be rendered on the notebook as shown below −
Table
In a markdown cell, a table can be constructed using | (pipe symbol) and – (dash) to mark columns and rows. Note that the symbols need not be exactly aligned while typing. It should only take respective place of column borders and row border. Notebook will automatically resize according to content. A table is constructed as shown below −
The output table will be rendered as shown below −
In addition to Jupyter Notebook Markdown,Jupyter Book also supports a special flavour of Markdown called MyST (orMarkedly Structured Text).It was designed to make it easier to create publishable computational documents written with Markdown notation.It is a superset of CommonMark Markdown and draws heavy inspiration from the fantastic RMarkdown language from RStudio.
Jupyter Markdown Guide Tutorial
Whether you write your book’s content in Jupyter notebooks (
.ipynb
) or in regular Markdown files (.md
),you’ll write in the same flavour of MyST Markdown. Jupyter Book will know how to parse both of them.This page contains a few pieces of information about MyST Markdown and how it relates to Jupyter Book.You can find much more information about this flavour of Markdown atthe Myst Parser documentation.
Want to use RMarkdown directly?
See Custom notebook formats and Jupytext
Directives and roles¶
Roles and directives are two of the most powerful tools in Jupyter Book.They are kind of like functions, but written in a markup language.They both serve a similar purpose, but roles are written in one line whereas directives span many lines.They both accept different kinds of inputs, and what they do with those inputs depends on the specific role or directive being used.
Directives¶
Directives customize the look, feel, and behaviour of your book.They are kind of like functions, and come in a variety of names with different behaviour.This section covers how to structure and use them.
At its simplest, you can use directives in your book like so:
This will only work if a directive with name
mydirectivename
already exists (which it doesn’t).There are many pre-defined directives associated with Jupyter Book.For example, to insert a note box into your content, you can use the following directive:This results in:
Note
Here is a note
being inserted in your built book.
For more information on using directives, see the MyST documentation.
More arguments and metadata in directives¶
Many directives allow you to control their behaviour with extra pieces ofinformation. In addition to the directive name and the directive content,directives allow two other configuration points:
directive arguments - a list of words that come just after the
{directivename}
.Here’s an example usage of directive arguments:
directive keywords - a collection of flags or key/value pairsthat come just underneath
{directivename}
.There are two ways to write directive keywords, either as
:key:val
pairs, oras key:val
pairs enclosed by ---
lines. They both work the same way:Here’s an example of directive keywords using the
:key:val
syntax:and here’s an example of directive keywords using the enclosing
---
syntax:Tip
Remember, specifying directive keywords with
:key:
or ---
will make no difference.We recommend using ---
if you have many keywords you wish to specify, or if some valueswill span multiple lines. Use the :key:val
syntax as a shorthand for just one or twokeywords.For examples of how this is used, see the sections below.
Roles¶
Roles are very similar to directives, but they are less complex and writtenentirely in one line. You can use a role in your book withthis syntax:
Again, roles will only work if
rolename
is a valid role name.For example, the doc
role can be used to refer to another page in your book.You can refer directly to another page by its relative path.For example, the syntax {doc}`./intro`
will result in: Books with Jupyter.Warning
It is currently a requirement for roles to be on the same line in your source file. It willnot be parsed correctly if it spans more than one line. Progress towards supporting rolesthat span multiple lines can be tracked by this issue
For more information on using roles, see the MyST documentation.
Jupyter Markdown Guide Excel
What roles and directives are available?¶
There is currently no single list of roles / directives to use as a reference, but thissection tries to give as much as information as possible. For those who are familiarwith the Sphinx ecosystem, you may use any directive / role that is available in Sphinx.This is because Jupyter Book uses Sphinx to build your book, and MyST Markdown supportsall syntax that Sphinx supports (think of it as a Markdown version of reStructuredText).
Caution
If you search the internet (and the links below) for information about roles and directives,the documentation will generally be written with reStructuredText in mind. MyST Markdownis different from reStructuredText, but all of the functionality should be the same.See the MyST Sphinx parser documentation for more information about the differences between MyST and rST.
For a list of directives that are available to you, there are three places to check:
- The Sphinx directives pagehas a list of directives that are available by default in Sphinx.
- The reStructuredText directives pagehas a list of directives in the Python “docutils” module.
- This documentation has several additional directives that are specific to Jupyter Book.
What if it exists in rST but not MyST?
In some unusual cases, MyST may be incompatible with a certain role or directive.In this case, you can use the special
eval-rst
directive, to directly parse reStructuredText:which produces
Note
A note written in reStructuredText.
See also
The MyST-Parser documentation on how directives parse content, and its use for including rST files into a Markdown file, and using
sphinx.ext.autodoc
in Markdown files.Nesting content blocks in Markdown¶
If you’d like to nest content blocks inside one another in Markdown (forexample, to put a
{note}
inside of a {margin}
), you may do so by addingextra backticks (`
) to the outer-most block. This works for literalcode blocks as well.For example, the following syntax:
yields
Thus, if you’d like to nest directives inside one another, you can take the sameapproach. For example, the following syntax:
produces:
Other MyST Markdown syntax¶
In addition to roles and directives, there are numerous other kinds of syntaxthat MyST Markdown supports.MyST supports all syntax of CommonMark Markdown (the kind of Markdown that Jupyter notebooks use), as well as an extended syntax that is used for scientific publishing.
The MyST-Parser is the tool that Jupyter Book uses to allow you to write your book content in MyST.It is also a good source of information about the MyST syntax.Here are some links you can use as a reference:
See also
![Guide Guide](/uploads/1/1/8/6/118670313/276911405.png)
For information about enabling extended MyST syntax, see MyST syntax extensions.In addition, see other examples of this extended syntax (and how to enable each) throughout this documentation.
What can I create with MyST Markdown?¶
See Special content blocks for an introduction to what you can do with MyST Markdownin Jupyter Book.In addition, the other pages in this site cover many more use-cases for how to use directives with MyST.
Tools for writing MyST Markdown¶
There is some support for MyST Markdown in tools across the community. Here we includea few prominent ones.
Jupyter interfaces¶
While MyST Markdown does not (yet) render in traditional Jupyter interfaces, mostof its syntax should “gracefully degrade”, meaning that you can still work withMyST in Jupyter, and then build your book with Jupyter Book.
Jupytext and text sync¶
For working with Jupyter notebook and Markdown files, we recommend jupytext,an open source tool for two-way conversion between
.ipynb
and text files.Jupytext supports the MyST Markdown format.Note
For full compatibility with
myst-parser
, it is necessary to use jupytext>=1.6.0
.See also Convert a Jupytext file into a MyST notebook.
VS Code¶
If editing the Markdown files using VS Code, theVS Code MyST Markdown extensionprovides syntax highlighting and other features.