MyST Quickstart Tutorial

Working with MyST Websites

Create a website like this one

πŸ›  Throughout the tutorial, whenever you're supposed to do something you will see a πŸ› 

#Initialize MyST πŸš€

Next we will create a myst.yml configuration file that is required to render your project.

πŸ›  Run myst

The myst command is a shortcut for myst init, which has a few more options for writing specific parts of the configuration file and a table of contents for your site.

> myst

Welcome to the MyST CLI!! πŸŽ‰ πŸš€

myst init walks you through creating a myst.yml file.

You can use myst to:

 - create interactive websites from markdown and Jupyter Notebooks πŸ“ˆ
 - build & export professional PDFs and Word documents πŸ“„

Learn more about this CLI and MyST Markdown at: https://myst.tools

πŸ’Ύ Writing new project and site config file: myst.yml

πŸ›  When prompted, type Yes to install and start the default theme (takes about 15 seconds)

? Would you like to run "myst start" now? Yes

If you cancelled the command, you can start the server with myst start. Starting the server requires a theme, this will download the default book-theme, which you can change later. The theme will now install using node and npm, this can take up to a minute the first time, and then will be cached in the _build/templates directory.

πŸ• Fetching template metadata from https://api.myst.tools/templates/site/myst/book-theme
πŸ’Ύ Saved template to path _build/templates/site/myst/book-theme
‡️ Installing web libraries (can take up to 60 s)
πŸ“¦ Installed web libraries in 13 s
πŸ“– Built interactive-graphs.ipynb in 21 ms.
πŸ“– Built paper.md in 32 ms.
πŸ“– Built README.md in 35 ms.
πŸ“š Built 3 pages for myst in 82 ms.

  ✨✨✨  Starting Book Theme  ✨✨✨

⚑️ Compiled in 524ms.

πŸ”Œ Server started on port 3000!  πŸ₯³ πŸŽ‰

  πŸ‘‰  http://localhost:3000  πŸ‘ˆ

πŸ›  Open your web browser to http://localhost:3000

The example site in this tutorial only has three pages and by default the 01-paper.md page is seen in , which has minimal styles applied to the content.

The myst theme for the 01-paper.md page without any changes made.

#Figure 1:The myst theme for the 01-paper.md page without any changes made.

#Folder Structure

If you are using a text editor, for example VSCode, open up the folder to explore the files:

quickstart/
  β”œβ”€β”€ πŸ†• _build
  β”‚   β”œβ”€β”€ exports
  β”‚   β”œβ”€β”€ site
  β”‚   β”‚   β”œβ”€β”€ content
  β”‚   β”‚   β”œβ”€β”€ public
  β”‚   β”‚   └── config.json
  β”‚   β”œβ”€β”€ temp
  β”‚   └── templates
  β”‚       β”œβ”€β”€ site/myst/book-theme
  β”‚       └── tex/myst/arxiv_two_column
  β”œβ”€β”€ images
  β”‚   β”œβ”€β”€ image.png
  β”‚   └── image.gif
  β”œβ”€β”€ 01-paper.md
  β”œβ”€β”€ 02-notebook.ipynb
  β”œβ”€β”€ README.md
  └── πŸ†• myst.yml

Running myst init added:

  • myst.yml - the configuration file for your myst project and site
  • _build - the folder containing the processed content and other site assets, which are used by the local web server.

The _build folder also contains your templates (including the site template you installed) and any exports you make (when we build a PDF the exported document will show up in the _build/exports folder). You can clean up the built files at any time using myst clean.

#Configuration βš™οΈ

If we open and look inside our myst.yml we will see a basic configuration like this:

# See docs at: https://myst.tools/docs/mystjs/frontmatter
version: 1
project:
  # title:
  # description:
  keywords: []
  authors: []
  # github:
  # bibliography: []
site:
  template: book-theme
  # title:
  # logo:
  projects:
    - slug: myst
      path: .
  nav: []
  actions:
    - title: Learn More
      url: https://myst.tools/docs/mystjs
  domains: []

There are two important parts to the myst.yml:

project:
The project holds metadata about the collection of files, such as authors, affiliations and licenses for all of the files, any of these values can optionally be overridden in a file. To see all of the options see Frontmatter, which includes which fields can be overridden by files in the project.
site:
The site holds template information about the website, such as the logo, navigation, site actions and which template to use. The site has a list of projects, in this case the path: . looks to the current configuration file for the project, which will be "mounted" at the slug: (i.e. /myst/); sites can have multiple projects.

πŸ›  In myst.yml: Change the "# title:" comment in site to "title: Fancy Title 🎩" and save

Saving the myst.yml will have triggered a "full site rebuild" and in about ⚑️ 20ms ⚑️ take a look at the browser tab:

The site title will control site meta tags, and the browser-tab title, which is appended to each page title in the book-theme.

#Figure 2:The site title will control site meta tags, and the browser-tab title, which is appended to each page title in the book-theme.

More Coming Soonβ„’


#Conclusion πŸ₯³

For now, that's it for this quickstart tutorial, we will add more about changing logos, themes, the table of contents, and much more soon! As for next steps you can export MyST Markdown as traditional documents like PDFs and Word, take a look at:

MyST Documents πŸ“‘

Learn the basics of MyST Markdown, and export to a Word document, PDF, and LaTeX\LaTeX!

MyST Markdown Guide πŸ“–

See an overview of MyST Markdown syntax with inline demos and examples.