News

MathJax v3.2.1 now available

The MathJax team is pleased to announce version 3.2.1 of MathJax, released earlier today. This is mostly a bug-fix release, resolving various display and input bugs and other issues. See the individual bugs linked below for more details, and the 3.2.1 milestone for the pull requests involved in this release.


New Features in this Release

Speech-Rule Engine

MathJax now integrates version 4 of Speech Rule Engine (SRE). (#800)

  • SRE v4 is a full port to ES6 using TypeScript providing transpiled JavaScript for easier integration into third party projects via its npm package.
  • Uses webpack as the primary bundler to offer a single bundle file for both node and browser.
  • Major rewrite of rule handling and provision of locales.
    • Smaller locale files and memory footprint in the index structure.
    • Hierarchical locale setup that allows inheritance within rule sets.
    • Uses ES6 promises to handle locale loading and engine setup.
  • A number of new locales for Swedish, Norwegian (Bokmal and Nynorsk), Danish (MathSpeak only), and Catalan (MathSpeak only)
  • Locale files are now served with a .json extension. (https://github.com/mathjax/MathJax/issues/2403)

For more details and a full list of all changes and additions see the SRE release notes.

MathJax makes use of SRE v4 new features in the following ways:

  • Source integration
    • Integrates SRE directly via importing the relevant library files into its code and webpacks them into its components and bundles.
    • Replaces the timeout-driven SRE loading promise with SRE’s new native promises.
    • The sre.ts module now imports and exports exclusively API methods necessary for SRE’s use in MathJax
    • A new mathmaps.ts module provides a map for directly integrating and bundling locales (see more below).
  • Components integration
    • The sre component under components/src/sre now simply handles copying the locale files in the mathmaps directory.
    • The a11y/sre component under components/src/sre contains a configuration file sre_config.js that sets up the basic SRE configuration for MathJax, especially the correct path to the mathmaps folder (online or in the npm distribution).
    • Components can webpack SRE’s locale files into bundles. See the components/src/tex-chtml-full-speech component as an example.
  • MathJax Configuration
    • The sre path in MathJax is now used exclusively for pointing to a directory containing the locale files.

Most of these changes are internal and should remain unnoticeable. However, there are a couple of points to note when using SRE via MathJax:

  • Previously, MathJax would load SRE as a single library file, but now webpacks its source files, which, as a side-effect, closes several convenient loopholes you could have exploited in the past:
    • OLD: SRE’s functionality was available to a developer as if running SRE standalone. That is, in both node and browser, all of SRE’s API methods where available in the SRE namespace, and additionally, the full functionality was reachable in the browser through the sre namespace.

      NEW: Now only the explicitly exported API methods are available to import via the a11y/sre component.

    • OLD: You could easily change the version of SRE MathJax would use by:

      1. In the browser, pointing to an alternative copy of sre_browser.js using the sre path in the MathJax configuration, and
      2. In node, replacing the speech-rule-engine package with a different version in the node_modules folder.

      NEW: This is no longer possible.

  • The sreReady method is still exported but deprecated. In the future, you should use the corresponding method in the API bundle Sre.sreReady().
  • By default SRE comes without rules (or locales) preloaded, and pulls those in only when necessary. That is, it loads the relevant .json files via XML-HTTP-request in the browser, or via file loading in the node module. However, it is now possible to pre-bundle (some) locales directly into a custom distribution using webpack, which is particularly useful if you want to run MathJax offline while still using the full power of is assistive technology extension. See the tex-chtml-full-speech component as an example.

Output Improvements

  • Properly handle border and padding CSS in CHTML and SVG output. (#799)

Lazy Typesetting

  • Have lazy typesetter typeset all remaining math before printing. (#777)
  • Have lazy typesetting specify a (configurable) distance around the viewport for triggering typesetting. (#777)
  • Allow containers to be marked so that they are always typeset by the lazy typesetter. (#777)

Bugs Addressed in this Release

Output Bug Fixes

  • Update svg output to properly handle token elements with multiple child nodes. (mathjax/MathJax#2836)

  • Include CSS to reset border-collapse in CHTML output. (#2861)

  • Prevent CHTML adaptive CSS from adding character CSS multiple times. (#796)

  • Make sure all character data is included when adaptiveCSS is false. (#2724)

  • Place super- and subscripts properly around \vcenter elements. (#787)

  • Add a minimum height for accented characters. (#2766)

  • Take relative scaling into account for CHTML output of non-MathJax fonts. (#2818)

  • Fix placement of surd when root extends above the top of the root. (#2764)

  • Fix problem with msubsup when subscript is blank. (#2765)

TeX Input Fixes

  • Add \textup and \textnormal to macros allowed by textmacros. (#2846)

  • Update \operatorname to work more like in LaTeX. (#2830)

  • Have physics package match nested parentheses, fix spacing issues. (#2760, #2831)

  • Re-implement \sideset using mmultiscripts. (#1217)

  • Fix problem where errors during mhchem argument collection are not properly handled. (#2835)

  • Update XSLT to produce better results in mml3 extension. (#785)

  • Add ability for TeX input to force normal variant for CJK input. (#2744)

  • Make sure math-in-text forms an ORD atom within textmacros. (#2828)

  • Make sure explicit attributes added by \mmlToken are not removed. (#2806)

  • Fix typo in \DeclarePairedDelimiter macros, and substitute arguments in pre and post sections. (#2816, #2758)

  • Mark mo as not an accent if used in \overset and friends. (#2800)

MathML Input Fixes

  • Fix problems with verification and repair of malformed mtables. (#779)

  • Add support for mglyph use of fontfamily/index. (#2298)

  • Trim MathML string before parsing it. (#2805)

  • Only process MJX-TeXAtom classes on mrow elements. (#2822)

  • Move mml3 filter to an mmlFilter so that forceReparse isn’t needed. (#2718)

  • Make U+2061 through U+2064 have TeX class NONE so they don’t affect spacing. (#806)

Miscellaneous

  • Handle documents better when created by parsing in XHTML. (#2788)

  • Add version numbers to component files and check them when loaded. (#738)

  • Fix problem where some menu settings weren’t sticky (#2786)

  • Add a linkedom adaptor (#2833)

  • Refactor usage of all-packages to reduce redundant code in components. (#784)

  • Make variables local in legacy AsciiMath code. (#2748)

  • Make safe extension properly handle scriptlevel of 0. (#2745)

  • Update webpack files for empheq and cases. (#2762)

  • Update build tools to work with extensions better. (#737)

  • Add defaultPageReady() to MathJaxObject interface. (#746)

Availability of version 3.2.1

Although version 3.2.1 was released earlier today, it may take a day or two for the new version to propagate to the various CDN network computers, so you may not see v3.2.1 immediately if you are loading mathjax using a generic mathjax@3 URL. You should be able to obtain it immediately if you use the full version mathjax@3.2.1.

You may also have a cached version in your browser, so you may need to either clear the browser cache, or relaunch your browser (or both) in order to get the latest version (the cached version should expire in about a week, depending on the CDN being used).

Note that it is possible for some files to be updated before others, so it may be the case that users of websites that load extensions (either explicitly or by autoloading TeX packages) may get mixed versions until the CDN versions stabilize, which should be within a day. If you are loading one of the combined components (e.g., tex-chml.js), this is less likely to be an issue, and if you are loading a component ending in -full it is even less likely to occur.

Version 3.2.1 is available immediately from npm and GitHub for use in node applications.

Previous News

Typora becomes a MathJax Supporter
VitalSource becomes a MathJax Supporter
MathJax v3.2.0 now available
Cambridge University Press continues as MathJax Supporter
MathJax v3.1.3 now available
Taylor and Francis continues as MathJax Sponsor
MAA continues as MathJax Sponsor
Elsevier continues as MathJax Sponsor
EBSCO continues as MathJax supporter
MathJax v3.1.2 now available
MathJax v3.1.0 now available
MathJax v2.7.9 now available
Springer Nature continues as MathJax supporter
The London Mathematical Society continues as MathJax supporter
MathJax v3.0.5 now available
MathJax v2.7.8 now available
Taylor & Francis continues as MathJax Supporter
MathJax v2.7.6 now available
MathJax v3 beta.4 released
MathJax v3 beta.3 released
MathJax v3 beta.2 released
MathJax v2.7.5 now available
MathJax v3 beta released
The American Statistical Association becomes a MathJax Supporter
MathJax v2.7.4 now available
MathJax v2.7.3 now available
MathWorks continues as MathJax Supporter
Oxford University Press continues as MathJax Supporter
EBSCO Information Services continues as a MathJax Supporter
The London Mathematical Society continues as MathJax supporter
IOP Publishing continues as MathJax Supporter
RedLink becomes a MathJax Supporter
Elsevier continues as MathJax Sponsor
AIP Publishing continues as MathJax Supporter
OSA Publishing continues as MathJax Supporter
The Mathematical Association of America continues as MathJax Supporter
PLOS continues as MathJax Supporter
MathJax v2.7.2 now available
IBM continues as MathJax Supporter
MathJax v2.7.2 beta now available
Cambridge University Press continues as MathJax Supporter
Springer Nature continues as a MathJax Supporter
American Physical Society continues as MathJax Supporter
Stack Overflow continues as MathJax Partner
Pearson continues as MathJax Supporter
The London Mathematical Society continues as MathJax supporter
IEEE continues as MathJax Partner
MathJax CDN shutting down on April 30, 2017.
Alternatives available.
Taylor & Francis continues as MathJax Supporter
MathJax-node v1.0 released
Atypon continues as a MathJax Supporter
Wiley continues as MathJax Supporter
MathJax awarded grant from Simons Foundation for 'Universally enhancing math on the web'
EBSCO Information Services continues as a MathJax Supporter
2016 in review
IOP Publishing continues as MathJax Supporter
MathWorks continues as MathJax Supporter
Project Euclid continues as MathJax Supporter
The Mathematical Association of America continues as MathJax Supporter
MathJax v2.7 now available
Cambridge University Press continues as MathJax Supporter
Elsevier continues as MathJax Sponsor
IBM becomes a MathJax Supporter
MathJax v2.7 beta now available
MathJax wins PAM Division Award 2016
Springer Nature continues as a MathJax Supporter
AIP Publishing continues as MathJax Supporter
OSA Publishing continues as MathJax Supporter
American Physical Society continues as MathJax Supporter
Pearson becomes a MathJax Supporter
IEEE continues as MathJax Partner
MathJax Accessibility Extensions v1.0 now available
Stack Overflow continues as MathJax Partner
Oxford University Press continues as MathJax Supporter
Atypon continues as a MathJax Supporter
Wiley continues as MathJax Supporter
PLOS continues as MathJax Supporter
Taylor & Francis continues as MathJax Supporter
EBSCO Information Services becomes a MathJax Supporter
HighWire continues as MathJax Supporter
MathJax v2.6 now available
IOP Publishing continues as MathJax Supporter
The MathWorks continues as MathJax Supporter
Responsive Equations
MathJax whitepaper "Towards MathJax v3.0" released
The London Mathematical Society continues as MathJax supporter
Project Euclid continues as MathJax Supporter
The Mathematical Association of America continues as MathJax Supporter
MathJax v2.6 beta now available
AIP Publishing continues as MathJax Supporter
Springer Science+Business Media continues as a MathJax Supporter
Elsevier continues as MathJax Sponsor
American Physical Society continues as MathJax Supporter
Cambridge University Press continues as MathJax Supporter
OSA Publishing continues as MathJax Supporter
Stack Exchange continues as MathJax Partner
MathJax Community Update #8
IEEE continues as MathJax Partner
Oxford University Press continues as MathJax Supporter
Making math on Wikipedia more awesome | an interview with Moritz Schubotz
Atypon continues as a MathJax Supporter
Taylor & Francis continues as MathJax Supporter
MathJax announces PLOS is latest to join its sponsorship program
Wiley becomes a MathJax Supporter
MathJax v2.5 now available
IOP Publishing continues as MathJax Supporter
MathJax v2.5 beta now available
Thank you for your support in 2014!
A quick stroll around our code repositories
HighWire continues as MathJax Supporter
Project Euclid continues as a MathJax Supporter
The London Mathematical Society continues as MathJax supporter
The MathWorks continues as MathJax Supporter
MathJax Community Update #7
The Mathematical Association of America continues as MathJax Supporter
Springer Science+Business Media continues as a MathJax Supporter
AIP Publishing continues as MathJax Supporter
Static site generation for researchers | an interview with Wonseok Shin
Changes to the MathJax CDN
American Physical Society continues as MathJax Supporter
Cambridge University Press continues as MathJax Supporter
The Optical Society of America continues as MathJax Supporter
MathJax v2.4 now available
Elsevier continues as MathJax Partner
MathJax Community Update #6
MathJax v2.4 beta now available
Stack Exchange continues as MathJax Partner
IEEE continues as MathJax Partner
Christian Perfect joins the MathJax team
Google+ Hangout on Air on open math textbooks
Taylor & Francis supports MathJax as a MathJax Supporter
Oxford University Press continues as MathJax Supporter
Social media for students and educators | an interview with Demonstranda
MathJax community update #5
Google+ Hangout on Air Q&A with Davide Cervone, Peter Jipsen, and David Lippman
Atypon continues as a MathJax Supporter
IOP Publishing continues as a MathJax Supporter
The London Mathematical Society continues as MathJax supporter
MathJax community update #4
HighWire supports MathJax as a MathJax Supporter
Project Euclid continues as a MathJax Supporter
MathJax v2.3 now available
MathJax community update #3
Getting a response from STEM audiences | an interview with LetsFeedback
MathJax v2.3 beta now available
Markdown authoring as webapp | an interview with StackEdit
MathWorks supports MathJax as a MathJax Supporter
Springer Science+Business Media continues as a MathJax Supporter
MathJax community update
The Mathematical Association of America continues as MathJax Supporter
MathJax community update
AIP Publishing continues as MathJax Partner
Introducing COMM / Interview at Fidus Writer
Cengage Learning and MathJax Improve User Experience through Delivery of Mathematical Equations in Digital Solutions
The Optical Society of America continues as MathJax Supporter
Cambridge University Press becomes a MathJax Supporter
Stack Exchange continues as MathJax Partner
American Physical Society continues as MathJax Supporter
MathJax v2.2 now available
Elsevier becomes a MathJax Partner
MathJax v2.2 beta now available
IEEE becomes a MathJax Partner
Elsevier Announces MathJax Now Available on ScienceDirect
Oxford University Press supports MathJax
AMS becomes managing partner of the MathJax Consortium
Frédéric Wang joins MathJax as core developer
Atypon becomes a MathJax Supporter
Getting ready for the Joint Math Meetings 2013
The London Mathematical Society continues as MathJax supporter
IOP Publishing continues as MathJax Supporter
MathJax community meetup at the Joint Mathematics Meetings 2013
Project Euclid continues as MathJax Supporter
MathJax v2.1 now available
MathJax v2.1-beta now available on the CDN
The Mathematical Association of America becomes a MathJax Supporter
BISG endorses epub3 as preferred standard
American Physical Society continues as MathJax Supporter
The Optical Society of America continues as MathJax Supporter
Stack Exchange continues as MathJax Partner
Springer Science+Business Media becomes a MathJax Supporter
Website maintenance on June 11, 2012
Upcoming changes to the CDN
Readium adds MathML support via MathJax
Why cdn.mathjax.org was unavailable for 4 hours on March 13
MathJax 2.0 and the default rendering in Firefox
MathJax version 2.0 now available
MathJax v2.0-beta now available on CDN
MathJax Staff for 2012
MathJax Meet-up at JMM in Boston
A sad day
AIP Publishing Partners with MathJax
MathJax is looking for a Business Development Manager
Support from IEEE boosts MathJax
Scheduled CDN Maintenance September 11-12
Article about MathJax in E-learning websites released
Mathematics E-learning Community Benefits from MathJax
IOP Publishing becomes a MathJax Supporter
Project Euclid Renews Sponsorship of MathJax
Video tutorial “Using MathJax in Blackboard” released
The MathJax project is now accepting donations
MathJax CDN Service very successful
MathJax v1.1a Now Available
American Physical Society continues as MathJax Supporter
Video tutorial “How to use MathJax with Tumblr” released
WebAssign becomes a MathJax Supporter
The Optical Society becomes a MathJax Supporter
Stack Exchange becomes MathJax Partner
MathJax Launches CDN Service with 1.1 Release
MathJax starts Discussion Group on LinkedIn
MathJax: Time to Step Up
Leading journals illustrate MathJax's flexible use in scholarly communication
MathJax version 1.1 Beta Ready for Testing
Project Euclid Enables MathJax for 20 Journals
Update for Firefox 3.6.13
MathJax Developer Resources Have Moved
Russian Mathematics Portal Moves to MathJax
MathSciNet Now Uses MathJax
Business Development Manager Sought
MathML in HTML5: Problems with IE9
Accessible Pages with MathJax
GitHub Chooses MathJax For Math Support
MathJax 1.0 is Now Available
Developers: Source Control Changes Coming Thursday July 29
Job: MathJax API Designer/Developer Wanted
MathJax Beta 2 Adds MathML Support
MathJax Gets A Facebook Page (And Twitter)
Project Euclid Joins MathJax as a Supporter
MathML Development Roadmap
Presentations preview MathML support, ideas on copy and paste
Elsevier Adds Support To MathJax
MathJax Beta Released
American Physical Society Becomes a MathJax Supporter
MathJax at the Joint Mathematics Meetings
Preview Page Goes Live!
MathSciNet with MathJax
American Scientist Spotlights MathJax