MathJax: An Open-Source JavaScript Engine with Accessibility Support for Displaying Mathematical Notion Across Modern Browsers

MathJax: An Open-Source JavaScript Engine with Accessibility Support for Displaying Mathematical Notion Across Modern Browsers

TL; DR: MathJax is a cross-browser JavaScript engine for displaying mathematical notation using LaTeX, MathML, and AsciiMath markup. The open-source solution includes a robust collection of accessibility tools and extensions that level the playing field for all users. With MathJax Version 3 soon to be unveiled and a new partnership with NumFOCUS, MathJax is poised to leverage its 10 years of experience for the next decade and beyond.

If you’re in a STEM-focused educational path or career, there’s a good chance you’ve interacted with the open-source JavaScript platform for displaying mathematics known as MathJax — whether you’re aware of it or not. The JavaScript display engine, which requires zero setup on the part of readers, has become the gold standard for mathematics online.

Davide P. Cervone initially launched the practical platform in 2004 as jsMath, a package designed to present mathematics in HTML pages across multiple browsers. Davide wanted to quickly write mathematical notation by hand for inclusion in non-archival web pages, such as homework assignments. He also wanted to ensure that students wouldn’t be forced to use a particular browser or download special software to view the markup.

MathJax logo

MathJax makes it possible to display mathematical notation consistently between browsers.

The platform quickly captured the attention of online education and science publishers looking to display mathematics on the web. In 2009, the American Mathematical Society (AMS), Design Science, and the Society for Industrial and Applied Mathematics (SIAM) formed the MathJax Consortium, a collaborative effort intended to empower Davide and others to evolve jsMath into a next-generation platform.

“They were afraid to put their flagship websites in the hands of one guy in his free time — and rightly so,” Davide, now Lead Developer at MathJax, said. “So they gathered together to ensure the project could be properly maintained and supported, and jsMath was transformed into an official product: MathJax.”

Since its 2010 release, the cross-browser JavaScript display engine for mathematics has become ever-popular. The platform’s extensible, modular design and rich API make for streamlined integration into web applications, and a robust set of accessibility extensions expand reach to all. MathJax, now part of the NumFOCUS community, will soon release MathJax Version 3, a major rewrite that will modernize the engine’s internal infrastructure, increasing flexibility and making it faster to render mathematics.

Cross-Browser Software Supporting MathML and LaTex

Davide said MathJax is used in many different cases all over the web. Scientific publishing partners, such as Elsevier and the Institute of Electrical and Electronics Engineers (IEEE), use the markup within digital libraries of information. Supporters, including the Optical Society and the American Physical Society, use MathJax for scientific notation within their publications.

The tool is also helpful for question-and-answer sites like Mathematics Stack Exchange, created to assist students in learning math as well as professionals on the job. “MathJax can be used so that somebody can display a formula naturally as part of the question or the answer,” Davide said. “We’re used in 30 or 40 of their sites right now.”

MathJax Supporters

A number of mathematical and scientific organizations use MathJax to communicate through mathematical notation.

Davide said one of the primary missions of the MathJax Consortium is to ensure MathJax does its thing in the background.

“We’re most successful when people don’t even know we’re here — we don’t want MathJax to be this intrusive thing requiring specialized knowledge,” he said. “It should work automatically so people can enter mathematics in technical notation or other forms without having to worry about the mechanism by which it’s being displayed.”

To serve a range of needs, MathJax is also highly modular in terms of both input and output. Input options include MathML, TeX, and AsciiMath, and users can produce HTML+CSS, SVG, and MathML as outputs.

A Powerful Collection of Accessibility Tools and Extensions

In the last several years, Davide said MathJax’s main author of assistive technology support, Volker Sorge, has been hard at work producing out-of-the-box solutions that enable speech-to-text, navigation, and exploration on any combination of browsers, platforms, and technologies.

“Achieving accessibility within mathematics is technically challenging and not fully realized yet, so we have been collaborating with screen reader and browser developers to make it work, even though standards aren’t entirely established,” Davide said.

MathJax’s Accessibility Extensions currently enhance rendering both visually and acoustically, including the responsive presentation of content through collapsing subexpressions, aural rendering using various rule sets, and tools for meaningful exploration of content.

icons

Features include high-quality fonts, modular input and output, and accessibility.

Almost two years ago, Davide said MathJax met with accessibility experts at a conference in California at the American Institute of Mathematics (AIM) to set the process in motion. “We brought together screen readers, developers, content creators, editors, and people who need accessibility solutions for a week to hash out some of the difficulties,” he said.

MathJax, which enables interactive exploration through semantic interpretations of expressions, had a lot to share when it came to overcoming the difficulties in handling mathematics for those with assistive need.

“If you’re listening to an equation, you can step through it piece by piece; for example, for a fraction, you can hear the top and bottom separate and go deeper into it as needed to try to understand it, rather than hearing the entire thing at once,” Davide said. “You can also collapse it into smaller bits if you just want to know, say, that there is an equation that has a sum on one side and the product on the other side.”

A Major Upgrade Now in Beta: MathJax Version 3

MathJax will soon release a substantial upgrade of its platform in the form of MathJax Version 3. “This is a complete rewrite from the ground up to bring 10 years worth of experience into the modern web paradigm,” Davide said.

The revamped platform, currently released under a fourth public beta, presents a modernized internal infrastructure appropriate for use with contemporary technologies. MathJax Version 3 can be integrated into Node.js applications for pre-processing and server-side support, making it faster to render mathematics.

“Previously, when MathJax needed pieces, we wrote a loader to bring them in,” Davide said. “That doesn’t play well with people’s current design paradigms, and we wanted to be able to interact with webpacked files and other kinds of tools.”

Users who wish to experiment with the new platform may reference the mj3-demos repository, which includes several version of MathJax packaged for everyday use cases. Examples of how to use MathJax v3 in NodeJS are available in the mj3-demos-node catalog. MathJax encourages users to test the beta version and report problems via the MathJax Version 3 issue tracker.

“Version 2 was very asynchronous in the sense that you had to wait for the pieces that it got from somewhere else to arrive — a lot of queuing, signaling, and callbacks,” Davide said. “We now have a synchronous path for conversions like taking a text string and producing HTML output.”

A New Partnership with the Nonprofit Organization NumFOCUS

Though not yet formally announced, MathJax has recently been accepted under the umbrella of NumFOCUS, a nonprofit community supporting open-source scientific computing.

“We fit within this group because we make it possible to communicate mathematics digitally,” Davide said. “It’s a great opportunity for us to participate with a large group of open-source scientific software providers, learn how to be a better open-source project, and learn how to grow and maintain a more active community that can contribute back to MathJax (currently we have lots of users, but few contributors).”

The nonprofit strives to promote open practices in science by serving as a fiscal sponsor for open-source projects and organizing community-led educational opportunities.

“We are thrilled that we have just been accepted into this group of projects, making MathJax more so of a separate entity than it has been previously,” Davide said. “We’ve always been closely tied to the AMS, SIAM, Design Science, and our other sponsors, but we’re mature enough now that we’re moving onto our own in some ways.”

Christine Preusler

Questions or Comments? Ask Christine!

Ask a question and Christine will respond to you. We strive to provide the best advice on the net and we are here to help you in any way we can.