-
Notifications
You must be signed in to change notification settings - Fork 172
Description
Over the last several months and at the last two team meetings @fwkoch, @stevejpurves and myself have been showing some of the new work on mystjs, which you can see/demo/try here: https://js.myst.tools
There is a ✨ton✨ of new functionality, including:
- interactive demos in the docs
- word/docx export
- intersphinx support
- hover wikipedia links
- auto linking of citations
- export to latex and PDF documents
- a new library for templating latex called jtex
- 422 journal templates in the new myst-templates org (try
jtex list) - For an overview of how to create templates, we put together a webinar/walkthrough yesterday
- 422 journal templates in the new myst-templates org (try
- the ability to create and deploy jupyter-book style websites like https://js.myst.tools
- We have written about the overlaps with JupyterBook here
- Can you use mystjs with JupyterBook? Yes!
- Can you use mystjs with Sphinx extensions, no not really, however, they are compatible at the intersphinx/objects.inv layer and many of the common JupyterBook and sphinx design tools have been ported already.
- A major focus on performance and accessibility
Where we are today
A lot of the code for mystjs was created for the Curvenote CLI (MIT licensed), some background on that here, and currently, much of the code for mystjs is actually currently hosted in https://github.com/curvenote/curvenote. Over the past few months we have been working (primarily with @choldgraf, @fperez, @colliand and @mmcky) to upstream this functionality into mystjs, this has taken the form of pulling out relevant functionality into non-curvenote-based tools that can be both open in the community and source-code sense.
By end of October
This will create some major changes to the mystjs repository. Our plan is to move to a mono-repository (using turbo + npm workspaces), with the mystjs repo containing the following packages:
citation-js-utilsutility functions to deal with citationsintersphinxa command line tool and package for reading and writing ojtexa templating library (see docs)mystjsthe current MyST parser, with extensibilitymyst-clithis will provide CLI functionality formyst build mystdoc.mdmyst-cli-utilssome shared utils between intersphinx, jtex, and myst-climyst-commonSome common utilities for working with ASTsmyst-frontmaterdefinitions and validation for scientific authorship/affiliation frontmatter (see docs)myst-templatestypes and validation for templates (including jtex, and some word templates coming soon!)myst-to-docxconvert myst documents to word docs!myst-to-reactcreate basic, ideally unthemed react components for content onlymyst-to-texconvert myst to latex, to be used in combination with jtex to create stand alone latex documentsmyst-transformsa number of transformations for use with myst AST to transform, e.g. links, citations, cross-references, admonitionssimple-validatorsvalidation utilities, that print all sorts of nice warnings
All of these are already packages that are available on npm, and if you want to contribute or poke around in the next month, we welcome PRs in the current repo!
Major pieces of work left
- Split out the CLI from Curvenote specific functionality. The current CLI allows you to pull content from Curvenote APIs, authenticate, deploy etc. This won't be part of the mystjs CLI.
- Allow for templates for the website. Currently there are a few assumptions for the default Curvenote theme. The
myst-to-reacttools are pretty close to being able to be reused across templates, but the web-server/theme needs to be split out more effectively. (nested under this is another task to improve the routing for content pages, which has too many assumptions built in and needs to be generalized).
In Screenshots
Export of MyST markdown files to PDFs, with 422 journal templates in the new myst-templates org

Cross-references with content, which works across pages (powered by a myst-spec content API)

Interactive citations, figures, and table references.

MyST demo component, which can now download word docs as well completely in the browser. :)

Questions and Feedback?!
Some of the push for this is to have robust javascript tools that are accessible in the future by tools like Jupyter (e.g. extending jupyterlab-myst) and interactive scientific journals. In working through this there is certainly overlap with the existing tools in the JupyterBook/MyST ecosystem. We have been investing in standardizing MyST as a markup language and AST, to ensure compatibility, but I am sure this effort opens up questions/concerns/uncertainty/feedback. I think what probably would be appropriate would be a blog article announcing some of this work in October, and it would be helpful to have some feedback on what we should address or spend time thinking through before a wider announcement. I would love feedback!
I am super excited by some of the developments recently in the MyST/JupyterBook community, and am glad that we can contribute to this community. Thanks and looking forward to feedback/questions! :)