mystjs
is a set of open-source, community-driven tools designed for scientific communication, including a powerful authoring framework that supports blogs, online books, scientific papers, reports and journals articles.
Note The
mystjs
project is in beta. It is being used to explore a full MyST implementation in JavaScript and will change significantly and rapidly. The project is being developed by a small team of people on the Executable Books Project, and may make rapid decisions without fully public/inclusive discussion. We will continue to update this documentation as the project stabilizes.
The mystjs
project provides a parser in Javascript (mystjs
) and command line tool (myst-cli
) for working with MyST Markdown projects.
- Parse MyST into a standardized AST, that follows the MyST Spec
- Provides functionality for cross-referencing, external structured links, and scientific citations
- Translate and render MyST into:
- HTML for static websites, and modern React for interactive websites (like this website!)
- PDFs and LaTeX documents, with specific templates for over 400 journals
- Microsoft Word export
See the documentation.
The MyST CLI is available through Node and NPM:
npm install -g myst-cli
myst init
myst build my-doc.md --tex
All packages for mystjs
are included in this repository (a monorepo!).
myst-cli
uses npm as a package manager. It includes the following packages/apps:
Packages:
citation-js-utils
utility functions to deal with citationsjats-to-myst
convert JATS xml to MyST ASTjtex
a templating library (see docs)mystjs
a MyST parser, with extensibilitymyst-cli
this will provide CLI functionality formyst build mystdoc.md
myst-cli-utils
some shared utils between jtex, and myst-climyst-common
Some common utilities for working with ASTsmyst-config
Validation and reading of configuration filesmyst-frontmater
definitions and validation for scientific authorship/affiliation frontmatter (see docs)myst-spec-ext
Extensions tomyst-spec
used throughout this repository, before pushing upstreammyst-templates
types and validation for templates (LaTeX, web and word)myst-to-docx
convert MyST documents to word docs!myst-to-react
create basic, ideally unthemed react components for content only (coming soon)myst-to-jats
convert MyST to JATS, for use in scientific archivesmyst-to-tex
convert MyST to LaTeX, to be used in combination with jtex to create stand alone LaTeX documentsmyst-transforms
a number of transformations for use with myst AST to transform, e.g. links, citations, cross-references, admonitionssimple-validators
validation utilities, that print all sorts of nice warningstex-to-myst
convert LaTeX to MyST AST
Each package is 100% TypeScript.
mystjs
uses changesets to document changes to this monorepo, call npm run changeset
and follow the prompts. Later, npm run version
will be called and then npm run publish
.
mystjs
is built and developed using:
- TypeScript for static type checking
- ESLint for code linting
- Prettier for code formatting
To build all apps and packages, run the following command:
cd mystjs
npm run build
To develop all apps and packages, run the following command:
cd mystjs
npm run dev
This will create a local myst
CLI interface that you can use to develop and test locally.