MathJax v3 -- first public alpha

166 views
Skip to first unread message

Peter Krautzberger

unread,
Nov 17, 2017, 3:16:11 PM11/17/17
to mathj...@googlegroups.com, mathja...@googlegroups.com
Hi everyone,

We're very happy to release our first public alpha of MathJax v3, a major milestone towards the next generation of formula rendering for the web. 

MathJax v3 marks the result of over 18 months of research and design, completely overhauling MathJax's internals and re-writing components to fit the new architecture. 

Overview

MathJax v3 is written in TypeScript with a high level of modularity. It provides significant performance improvements on all levels -- smaller package size, faster JS execution, smaller DOM fragment size, better CSS performance. We expect ~10x faster performance on average with higher gains at large scale.

Thanks to TypeScript's ecosystem MathJax v3 modules can easily transpile to popular formats (e.g., ES6, CommonJS) and feed easily into popular build tools (e.g., webpack, browserify).

Not all MathJax v2 extensions are available at this time. This initial alpha release contains first versions of the following components:

* MathJax core
* MathML input 
* TeX input (including most macros from the AMS packages)
* HTML output

The input and output features are not yet complete but the most commonly used constructs are available.

Remaining limitations of the CommonHTML output in this first alpha are:

* No support for maction, menclose, mmultiscripts, or mglyph (they will be treated like mrow).
* No support for linethickness or beveled attributes in mfrac.
* No support for accent attribute of mo, or accent and underaccent in munderover.
* No accent substitution e.g., vector arrow (U+20D7) for regular arrow (U+2192) or prime (U+2032) * for apostrophe (U+027).
* No substitution for pseudo scripts (like <mi>x</mi><mo>'</mo> being treated as <msup><mi>x</mi><mo>'</mo></msup>).
* Not all mtable attributes are implemented.  Currently supported attributes are: frame, framespacing, columnlines, rowlines, columnspacing, rowspacing, columnalign, rowalign, width.
* The first cell of mlabeledtr is ignored (labels are not shown).
* No support for automatic line breaking

MathJax v3 now works synchronously and supports NodeJS (using jsdom). Moreover, it can be customized to write to other DOM-like environments (e.g., virtual DOM implementations). See this mathjax-dev thread for an example.

The source code for MathJax v3 is at github.com/mathjax/mathjax-v3.

The alpha release is available via GitHub and npm (incl. CommonJS modules).

Audience

As a first alpha, this release is mainly focused on developer feedback.

The new MathJax architecture means that there are several steps from the pure source code to a working distribution to load into the client which makes it tricky for non-developers to get started.  

While we appreciate all feedback, this alpha hopes to gather feedback from developers who are looking for significant improvements in their workflows with MathJax.

Code examples and Demos

We plan to build distribution files for commonly used configurations (similar to the combined configuration files in v2). In the mean time, we have prepared a few demos and ready-to-use builds so that everyone can give it a spin. 

You can find these examples (including live pages) at github.com/mathjax/mj3-demos.

Next Steps

Following this first alpha we will turn a bit towards adding more documentation. We also expect to push out a few more alpha releases before the end of the year.

Feedback

Please send any feedback to the mailing lists or file an issue on GitHub.

Thank you

We thank our sponsors for their continued support and we especially thank the members of our Technical Committee for their continuing and invaluable feedback and support.

Thanks for your continued interest in MathJax.
The MathJax Team.
Reply all
Reply to author
Forward
0 new messages