Peter Krautzberger · on the web

A first look at MathJax v4

So here on the blog (and more relevantly at work) I've been rolling out MathJax v4 after it hit its third beta in July. MathJax v4 is chock full of fixes, features and even a tiny bit of finally-getting-rid-of-stuff. To close off the year, I thought I'd sum up my personal highlights.

Here's my (obviously totally personal and biased) short list.

STIX Two (and fonts in general)

I've been using the experimental STIX2 branch in production for a few years but now that Davide had time to completely rewrite the fonts support, the generalization leads to a lot of small (and large) improvements in STIX Two again. It's lovely to see the best font keeps getting better. (And yes, a better default CM-derived font is cool too, as are the other options!)

Working together on a small project to build a custom font earlier this year also gave me a first look into the fantastic capabilities (and slightly scary machinery) behind the new font tooling. I can't wait to see what people might do when it's opened up to the public.

line breaking

While I don't care much about line breaking inside display elements these days, inline reflow has been on my wish list for a long time. But what I hadn't expected at all was Davide adding support for MathJax's SVG output.

That's a bit unbelievable, really, but MathJax v4 will split up the SVG output into reflowable chunks which is just lovely. I wished the webfont hack could be avoided but I'm looking forward to hacking a decent compromise there so that this becomes usable in the horrors of epub, too (where I need it the most).


You might say "it's about damn time!" but it's super sweet to see this move, even if it broke everything during the beta for me. I don't think I'll ever like MathJax's custom build system for its "components" but with Davide's patient help I could move my third party extensions over to the new system.

TeX input

Soo many improvements! A lot of subtle changes matching LaTeX behavior more accurately, a few more extensions.

If I had to pick just one thing, HTML-in-TeX support would be it. The potential seems boundless as MathJax is not limited by obnoxious theoretical-purity nonsense but instead embraces HTML. Which is as it should be.

non-visual rendering

SRE also saw a massive set of enhancements in its recent releases. Better performance, more languages, 2D nemeth, plenty of bug fixes. Amazing work by Volker - nothing gets even close to SRE's range of non-visual capabilities.

Even more importantly, SRE will (finally!) be active by default in v4 - the most accessible output as the default is good in my book.


There'd be much more to write but the year is over. For balance, any complaints? I think the only one I found would be testing which was painful at times - but that's what you get for adopting a beta release. Still, I don't know how I'd feel if I didn't know how good Davide and Volker are (and if I didn't know how much testing happens at the AMS).

Of course I still wished that MathJax was not so focused on being client-side first. It is without competition when it comes to server-side-rendering, too - the most robust and most accessible option available. More people need to hear that! But of course I remember why that is: MathJax users love the ease of client-side rendering, they have never cared about the downsides (e.g., page load, performance). Still, I'll keep spreading the word.

As it stands MathJax v4 is a massive step forward, proving again that MathJax is the only reliable project to make progress in this space.