Releases: mathjax/MathJax
MathJax v4.0.0
This is the long-awaited 4.0.0 release of MathJax, which has been several years in the making. Among the many new features in this release are:
- Extended font support (11 new fonts)
- A new default font with much greater character coverage.
- Line-breaking support (for in-line as well as displayed equations)
- An updated expression explorer that is now on by default.
- Separation of speech generation into a webworker thread for better performance.
- Support for HTML embedded in TeX and MathML expressions.
- Availability as ES6 modules as well as CommonJS modules.
- New TeX extensions, including the
begingroupextension from v2 (with more features), and several font-related extensions. - Inclusion of the
textmacrosextension in all combined component files. - Updated
mathtoolspackage to include the changes from 2022 and 2024. - Improvements in the baseline alignment of text in CHTML output in WebKit-based browsers.
- Improved stretchy delimiters in CHTML output.
- More promise-based conversion and typesetting calls at the document level.
For many sites, the only change that will be needed to use v4 is to change the URL where you load MathJax to refer to version 4 rather than version 3, and to remove the /es5 directory from the URL. Most v3 configurations should still work with v4; but if you use the startup.ready() function to modify MathJax or create new TeX extensions, there may be some adjustments needed. One important change of note is that, since the number of TeX packages has grown, the all-packages extension and the "-full" components have been removed, so if you are using those, you will need to change to a component without the "-full" and either rely on the autoload extension to load the needed packages, or load them explicitly.
The MathJax documentation has been substantially updated for version 4, and now includes the missing or limited sections on using MathJax in node, including many examples and details. See the What's New in V4.0 section (more than 50 pages long) for much more information about the features described above, and in particular, check the Breaking Changes section for any changes that may affect your usage.
The MathJax web demos repository has been updated for v4.0, and reorganized for easier viewing. The demos now include a "Show Source" button that displays explanations and the important sections of the source code rather than using separate .md files, so there are fewer files to wade through, and you can compare the source code to the output more easily. There are also new examples in the documentation on using MathJax in a browser; most are listed in the Examples in a Browser section.
The MathJax node demos repository is being updated and reorganized as well, but work is still being done on that, as some of the documentation needs to be expanded (for now, you may need to read the comments in the code). The tools in this repository have been made more powerful and complete, and much of the functionality that is common across multiple tools have been moved to utility libraries that can be shared by several tools. That means the examples are no longer stand-alone files, but they are more complete in their ability to use the features of MathJax. For example, all the examples that produce CHTML or SVG output can select the font to use, or add speech labels, and so on, and because speech is now available in all those examples, there are no longer separate speech demos. The tools can now take several expressions at once to typeset, or take them from a file, or process a complete HTML page. This means there are no longer separate page-based tools, so the number of examples is reduced, but the functionality is expanded. The MathJax documentation now covers using MathJax in node application in more detail than for v3, with lots of examples; most of these are listed in the Examples in Node Applications section.
As always, you may report issues in the MathJax issue tracker for v4; this is a major update, and there are sure to be things that will need adjusting.
MathJax v4.0.0-rc.4
This is the release candidate release for version 4.0. The major new features for this version are:
-
The speech generation has been moved to a webworker to improve performance.
-
The expression explorer internals have been rewritten to work more reliably in more browser/os/screen-reader combinations, both during expression exploration, as well as when the page is being read as a whole.
-
The default font has been changed from
mathjax-modernto a new font,mathjax-newcm, based on the New Computer Modern font. It has the same look asmathjax-modern, but with more character coverage and a slightly darker weight. -
MathJax has now moved to using scoped npm packages, so the
mathjax-fullpackage is being replaced by@mathjax/src, and the fonts are now of the form@mathjax/mathjax-newcm-font. Themathjaxpackage remains un-scoped, however, so the URLs for obtaining this release of MathJax only need to change the version number. -
The
textmacrospackage is now included in the combined components by default, so macros within\text{}and other text-mode macros should be processed. See the release notes for more information. -
The
begingroupTeX extension is included in this release. See the release notes for more details. -
New promise-based versions of the
render(),convert(), andrerender()methods of theMathDocumentclass have been added, so that direct calls toMathJax.startup.document.convertPromise(), etc. can be made with support for asynchronous loads, relieving you from having to usemathjax.handleRetriesFor()yourself. There is also a newwhenReady()method that can be used to synchronize your code with MathJax's typesetting pipeline. See the release notes for more information.
Much more documentation is available in the release notes, including information on potential breaking changes, as well as details about how the separation of the speech generation into a webworker affects node applications.
Note that 4.0.0-rc.1 to rc.3 were removed due to issues with the releases (we are using a new release process that had some glitches to be ironed out).
MathJax v4.0.0-beta.7
This release is primarily a bug-fix release. In particular, the redesign of the way speech is computed and attached to MathJaxβs output that was part of the beta.6 release introduced a performance degradation that needed to be addressed. The main purpose of the beta.7 release is to fix that performance problem.
The main fixes and features include:
-
Fix performance problem introduced in 4.0.0-beta.6, and in particular, improve the performance when the lazy typesetting extension is in use.
-
Allow table columns to shrink when their contents have line-breaks.
-
Work around a problem with in-line breaking in Safari.
-
The computations for the bounding boxes of the layouts in the bussproofs TeX package have been improved.
-
A security issue involving the potential for users being able to insert CSS styles into MathJax equations was identified by the GitHub security team, and is addressed here.
-
The
all-packagesextension and correspondingAllPackages.tsfile and thetex-fullcomponent that used them have been removed. -
Font extension can now be generic extensions so that they work with any base font, and the
bbm,bboldx, anddsfontspackages have been rebuilt to be generic font extensions.
See the release notes for more details.
MathJax v4.0.0-beta.6
This is the fourth beta release of version 4 of MathJax (beta.1 and beta.5 had problems with the release process). The main new features are the following:
-
The expression explorer has been significantly rewritten to work with the use of
aria-labelattributes rather than ARIA live regions. This improves compatibility and stability of the explorer. -
The expression explorer can now be entered by clicking on any character in an expression, and exploration will start at that location in the expression.
-
The accessibility menu has been reorganized, and its contents moved to the top level of the MathJax contextual menu for easier access and a more rational organization.
-
Several new TeX packages with different double-struck options are now available:
bbm,bboldx, anddsfont.
Details on these changes, and the full list of bugs that are fixed in this release are listed in the release notes
Note that the 4.0.0-beta.5 had an issue with the packaging and caused problems within node applications, and so was removed.
MathJax v4.0.0-beta.4
This is the second beta release of version 4 of MathJax. It is mostly a bug fix release. The main improvements are the following:
-
Some issues arose with the move to ESM modules and ES6 versions of the javascript code. These caused some TeX extension packages to fail to load; these have been fixed in this beta release.
-
A problem where Mathjax could produce an error
setting getter-only property "Package"during its processing of the MathJax configuration has been resolved. -
An issue where the
equation,equation*,displaymath, andmathLaTeX environments would produce an error about incorrectly nested environments, regardless of their content, has been fixed. -
An issue where the
\text{}macro would produce an error message when thetextmacrospackage is used in beta.3 has been fixed. -
Line breaking for in-line math has been improved to avoid extra line breaks that could cause unexpected blank lines.
Additional issues fixed by, and new features provided in, this release are described in the release notes.
MathJax v4.0.0-beta.3
This is the first beta release of MathJax version 4.0.0, which includes significant improvements over the alpha release. In particular:
-
This version uses version ES6 of javascript rather than the down-compiled ES5 code of previous versions. That means it no longer supports IE11, which does not implement enough of the ES6 features to run MathJax.
-
Because the code is now ES6, the
es5directory is no longer an accurate name, and the MathJax component files are now available at the top level, so you no longer need to include/es5in the URL that you use to load MathJax. E.g., you can usehttps://cdn.jsdelivr.net/npm/[email protected]/tex-mml-chtml.jsas the URL to load the
tex-mml-chtml.jscombined component. -
A number of issues with line breaking have been addressed.
-
Several new menu items are available in the
Show Math AsandCopy to Clipboardsubmenus. -
The promise-based functions like
MathJax.typesetPromise()now useMathJax.startup.promiseinternally to synchronize their actions, so you no longer have to do that yourself.
See the release notes for more details.
MathJax v4.0.0-alpha.1
This is the first alpha release of a major update to MathJax that adds significant new functionality, including:
-
Support for 11 different fonts, including the STIX2 font set, five Gyre math fonts, and a sans-serif font based on the Fira-Math font.
-
Support for automatic and explicit line breaks in both display and in-line expressions, automatic breaking of text elements, better breaking in tables and arrays, more array column specifiers for the array preamble, and TeX macros to control line breaking, indentation, and alignment, as well as more commands for making fixed-size boxes in which line breaking can occur.
-
Support for HTML embedded in MathML and TeX expressions (e.g., you can insert form elements into the math).
-
Improvements to the assistive support by including the expression explorer (activated) in all combined components.
See the release notes for extensive details about the new features and how to use them. This includes information about new configuration options for these features, and new TeX macros and control that they provide.
MathJax v3.2.2
This is a hot-fix release that resolves three issues introduced in v3.2.1. See the release notes for details.
MathJax v3.2.1
This is a bug fix release that resolves more than 40 issues, and includes significant updates to the speech-rule engine that handles MathJax's assistive technology. See the release notes for details.
MathJax v3.2.0
This is a feature release that includes a new lazy-typesetting extension, nine new TeX extensions, a port of the v2 MML3 extension, new Hindi support in the expression explorer, along with several other improvements, and a number of bug fixes. See the release notes for details.