MathJaxhttps://www.mathjax.org/MathJax Consortium2023-05-20T12:23:25+00:00MathJax v3.2.1 now availablehttps://www.mathjax.org/MathJax-v3.2.1-available/2022-05-19T00:00:00+00:002022-05-19T00:00:00+00:00The 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.
<p>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 <a href="https://github.com/mathjax/MathJax-src/milestone/8">3.2.1 milestone</a> for the pull requests involved in this release.</p>
<hr />
<h1 id="new-features-in-this-release">New Features in this Release</h1>
<p><a id="sre"></a></p>
<h2 id="speech-rule-engine">Speech-Rule Engine</h2>
<p>MathJax now integrates version 4 of Speech Rule Engine (SRE). (<a href="https://github.com/mathjax/MathJax-src/pull/800">#800</a>)</p>
<ul>
<li>SRE v4 is a full port to ES6 using TypeScript providing <strong>transpiled JavaScript for easier integration</strong> into third party projects via its npm package.</li>
<li>Uses webpack as the primary bundler to offer a <strong>single bundle file</strong> for both node and browser.</li>
<li>Major rewrite of rule handling and provision of locales.
<ul>
<li>Smaller locale files and memory footprint in the index structure.</li>
<li>Hierarchical locale setup that allows inheritance within rule sets.</li>
<li><strong>Uses ES6 promises</strong> to handle locale loading and engine setup.</li>
</ul>
</li>
<li>A number of <strong>new locales</strong> for Swedish, Norwegian (Bokmal and Nynorks), Danish (MathSpeak only), and Catalan (MathSpeak only)</li>
<li>Locale files are now served with a <code class="language-plaintext highlighter-rouge">.json</code> extension. (https://github.com/mathjax/MathJax/issues/2403)</li>
</ul>
<p>For more details and a full list of all changes and additions <a href="https://github.com/Speech-Rule-Engine/speech-rule-engine/releases/tag/v4.0.0">see the SRE release notes</a>.</p>
<p>MathJax makes use of SRE v4 new features in the following ways:</p>
<ul>
<li>Source integration
<ul>
<li>Integrates SRE directly via importing the relevant library files into its code and webpacks them into its components and bundles.</li>
<li>Replaces the timeout-driven SRE loading promise with SRE’s new native promises.</li>
<li>The <code class="language-plaintext highlighter-rouge">sre.ts</code> module now imports and exports exclusively API methods necessary for SRE’s use in MathJax</li>
<li>A new <code class="language-plaintext highlighter-rouge">mathmaps.ts</code> module provides a map for directly integrating and bundling locales (see more below).</li>
</ul>
</li>
<li>Components integration
<ul>
<li>The <code class="language-plaintext highlighter-rouge">sre</code> component under <code class="language-plaintext highlighter-rouge">components/src/sre</code> now simply handles copying the locale files in the <code class="language-plaintext highlighter-rouge">mathmaps</code> directory.</li>
<li>The <code class="language-plaintext highlighter-rouge">a11y/sre</code> component under <code class="language-plaintext highlighter-rouge">components/src/sre</code> contains a configuration file <code class="language-plaintext highlighter-rouge">sre_config.js</code> that sets up the basic SRE configuration for MathJax, especially the correct path to the <code class="language-plaintext highlighter-rouge">mathmaps</code> folder (online or in the npm distribution).</li>
<li>Components can webpack SRE’s locale files into bundles. See the <code class="language-plaintext highlighter-rouge">components/src/tex-chtml-full-speech</code> component as an example.</li>
</ul>
</li>
<li>MathJax Configuration
<ul>
<li>The <code class="language-plaintext highlighter-rouge">sre</code> path in MathJax is now used exclusively for pointing to a directory containing the locale files.</li>
</ul>
</li>
</ul>
<p>Most of these changes are internal and should remain unnoticeable. However, there are a couple of points to note when using SRE via MathJax:</p>
<ul>
<li>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:
<ul>
<li>
<p><strong>OLD</strong>: 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 <code class="language-plaintext highlighter-rouge">SRE</code> namespace, and additionally, the full functionality was reachable in the browser through the <code class="language-plaintext highlighter-rouge">sre</code> namespace.</p>
<p><strong>NEW</strong>: Now only the explicitly exported API methods are available to import via the <code class="language-plaintext highlighter-rouge">a11y/sre</code> component.</p>
</li>
<li>
<p><strong>OLD</strong>: You could easily change the version of SRE MathJax would use by:</p>
<ol>
<li>In the browser, pointing to an alternative copy of <code class="language-plaintext highlighter-rouge">sre_browser.js</code> using the <code class="language-plaintext highlighter-rouge">sre</code> path in the MathJax configuration, and</li>
<li>In node, replacing the <code class="language-plaintext highlighter-rouge">speech-rule-engine</code> package with a different version in the <code class="language-plaintext highlighter-rouge">node_modules</code> folder.</li>
</ol>
<p><strong>NEW</strong>: This is no longer possible.</p>
</li>
</ul>
</li>
<li>The <code class="language-plaintext highlighter-rouge">sreReady</code> method is still exported but <em>deprecated</em>. In the future, you should use the corresponding method in the API bundle <code class="language-plaintext highlighter-rouge">Sre.sreReady()</code>.</li>
<li>By default SRE comes without rules (or locales) preloaded, and pulls those in only when necessary. That is, it loads the relevant <code class="language-plaintext highlighter-rouge">.json</code> 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 <code class="language-plaintext highlighter-rouge">tex-chtml-full-speech</code> component as an example.</li>
</ul>
<p><a id="output"></a></p>
<h2 id="output-improvements">Output Improvements</h2>
<ul>
<li>Properly handle border and padding CSS in CHTML and SVG output. (<a href="https://github.com/mathjax/MathJax-src/pull/799">#799</a>)</li>
</ul>
<p><a id="lazy"></a></p>
<h2 id="lazy-typesetting">Lazy Typesetting</h2>
<ul>
<li>Have lazy typesetter typeset all remaining math before printing. (<a href="https://github.com/mathjax/MathJax-src/pull/777">#777</a>)</li>
<li>Have lazy typesetting specify a (configurable) distance around the viewport for triggering typesetting. (<a href="https://github.com/mathjax/MathJax-src/pull/777">#777</a>)</li>
<li>Allow containers to be marked so that they are always typeset by the lazy typesetter. (<a href="https://github.com/mathjax/MathJax-src/pull/777">#777</a>)</li>
</ul>
<hr />
<p><a id="bugs"></a></p>
<h1 id="bugs-addressed-in-this-release">Bugs Addressed in this Release</h1>
<p><a id="output"></a></p>
<h2 id="output-bug-fixes">Output Bug Fixes</h2>
<ul>
<li>
<p>Update svg output to properly handle token elements with multiple child nodes. (mathjax/MathJax#2836)</p>
</li>
<li>
<p>Include CSS to reset border-collapse in CHTML output. (<a href="https://github.com/mathjax/MathJax/issues/2861">#2861</a>)</p>
</li>
<li>
<p>Prevent CHTML adaptive CSS from adding character CSS multiple times. (<a href="https://github.com/mathjax/MathJax-src/pull/796">#796</a>)</p>
</li>
<li>
<p>Make sure all character data is included when adaptiveCSS is false. (<a href="https://github.com/mathjax/MathJax/issues/2724">#2724</a>)</p>
</li>
<li>
<p>Place super- and subscripts properly around <code class="language-plaintext highlighter-rouge">\vcenter</code> elements. (<a href="https://github.com/mathjax/MathJax-src/pull/787">#787</a>)</p>
</li>
<li>
<p>Add a minimum height for accented characters. (<a href="https://github.com/mathjax/MathJax/issues/2766">#2766</a>)</p>
</li>
<li>
<p>Take relative scaling into account for CHTML output of non-MathJax fonts. (<a href="https://github.com/mathjax/MathJax/issues/2818">#2818</a>)</p>
</li>
<li>
<p>Fix placement of surd when root extends above the top of the root. (<a href="https://github.com/mathjax/MathJax/issues/2764">#2764</a>)</p>
</li>
<li>
<p>Fix problem with <code class="language-plaintext highlighter-rouge">msubsup</code> when subscript is blank. (<a href="https://github.com/mathjax/MathJax/issues/2765">#2765</a>)</p>
</li>
</ul>
<p><a id="tex"></a></p>
<h2 id="tex-input-fixes">TeX Input Fixes</h2>
<ul>
<li>
<p>Add <code class="language-plaintext highlighter-rouge">\textup</code> and <code class="language-plaintext highlighter-rouge">\textnormal</code> to macros allowed by <code class="language-plaintext highlighter-rouge">textmacros</code>. (<a href="https://github.com/mathjax/MathJax/issues/2846">#2846</a>)</p>
</li>
<li>
<p>Update <code class="language-plaintext highlighter-rouge">\operatorname</code> to work more like in LaTeX. (<a href="https://github.com/mathjax/MathJax/issues/2830">#2830</a>)</p>
</li>
<li>
<p>Have physics package match nested parentheses, fix spacing issues. (<a href="https://github.com/mathjax/MathJax/issues/2760">#2760</a>, <a href="https://github.com/mathjax/MathJax/issues/2831">#2831</a>)</p>
</li>
<li>
<p>Re-implement <code class="language-plaintext highlighter-rouge">\sideset</code> using <code class="language-plaintext highlighter-rouge">mmultiscripts</code>. (<a href="https://github.com/mathjax/MathJax/issues/1217">#1217</a>)</p>
</li>
<li>
<p>Fix problem where errors during <code class="language-plaintext highlighter-rouge">mhchem</code> argument collection are not properly handled. (<a href="https://github.com/mathjax/MathJax/issues/2835">#2835</a>)</p>
</li>
<li>
<p>Update XSLT to produce better results in <code class="language-plaintext highlighter-rouge">mml3</code> extension. (<a href="https://github.com/mathjax/MathJax-src/pull/785">#785</a>)</p>
</li>
<li>
<p>Add ability for TeX input to force normal variant for CJK input. (<a href="https://github.com/mathjax/MathJax/issues/2744">#2744</a>)</p>
</li>
<li>
<p>Make sure math-in-text forms an ORD atom within <code class="language-plaintext highlighter-rouge">textmacros</code>. (<a href="https://github.com/mathjax/MathJax/issues/2828">#2828</a>)</p>
</li>
<li>
<p>Make sure explicit attributes added by <code class="language-plaintext highlighter-rouge">\mmlToken</code> are not removed. (<a href="https://github.com/mathjax/MathJax/issues/2806">#2806</a>)</p>
</li>
<li>
<p>Fix typo in <code class="language-plaintext highlighter-rouge">\DeclarePairedDelimiter</code> macros, and substitute arguments in pre and post sections. (<a href="https://github.com/mathjax/MathJax/issues/2816">#2816</a>, <a href="https://github.com/mathjax/MathJax/issues/2758">#2758</a>)</p>
</li>
<li>
<p>Mark <code class="language-plaintext highlighter-rouge">mo</code> as not an accent if used in <code class="language-plaintext highlighter-rouge">\overset</code> and friends. (<a href="https://github.com/mathjax/MathJax/issues/2800">#2800</a>)</p>
</li>
</ul>
<p><a id="mathml"></a></p>
<h2 id="mathml-input-fixes">MathML Input Fixes</h2>
<ul>
<li>
<p>Fix problems with verification and repair of malformed mtables. (<a href="https://github.com/mathjax/MathJax-src/pull/779">#779</a>)</p>
</li>
<li>
<p>Add support for <code class="language-plaintext highlighter-rouge">mglyph</code> use of <code class="language-plaintext highlighter-rouge">fontfamily</code>/<code class="language-plaintext highlighter-rouge">index</code>. (<a href="https://github.com/mathjax/MathJax/issues/2298">#2298</a>)</p>
</li>
<li>
<p>Trim MathML string before parsing it. (<a href="https://github.com/mathjax/MathJax/issues/2805">#2805</a>)</p>
</li>
<li>
<p>Only process MJX-TeXAtom classes on <code class="language-plaintext highlighter-rouge">mrow</code> elements. (<a href="https://github.com/mathjax/MathJax/issues/2822">#2822</a>)</p>
</li>
<li>
<p>Move <code class="language-plaintext highlighter-rouge">mml3</code> filter to an <code class="language-plaintext highlighter-rouge">mmlFilter</code> so that <code class="language-plaintext highlighter-rouge">forceReparse</code> isn’t needed. (<a href="https://github.com/mathjax/MathJax/issues/2718">#2718</a>)</p>
</li>
<li>
<p>Make U+2061 through U+2064 have TeX class NONE so they don’t affect spacing. (<a href="https://github.com/mathjax/MathJax-src/pull/806">#806</a>)</p>
</li>
</ul>
<p><a id="misc"></a></p>
<h2 id="miscenaleous">Miscenaleous</h2>
<ul>
<li>
<p>Handle documents better when created by parsing in XHTML. (<a href="https://github.com/mathjax/MathJax/issues/2788">#2788</a>)</p>
</li>
<li>
<p>Add version numbers to component files and check them when loaded. (<a href="https://github.com/mathjax/MathJax-src/pull/738">#738</a>)</p>
</li>
<li>
<p>Fix problem where some menu settings weren’t sticky (<a href="https://github.com/mathjax/MathJax/issues/2786">#2786</a>)</p>
</li>
<li>
<p>Add a <code class="language-plaintext highlighter-rouge">linkedom</code> adaptor (<a href="https://github.com/mathjax/MathJax/issues/2833">#2833</a>)</p>
</li>
<li>
<p>Refactor usage of all-packages to reduce redundant code in components. (<a href="https://github.com/mathjax/MathJax-src/pull/784">#784</a>)</p>
</li>
<li>
<p>Make variables local in legacy AsciiMath code. (<a href="https://github.com/mathjax/MathJax/issues/2748">#2748</a>)</p>
</li>
<li>
<p>Make safe extension properly handle scriptlevel of 0. (<a href="https://github.com/mathjax/MathJax/issues/2745">#2745</a>)</p>
</li>
<li>
<p>Update webpack files for <code class="language-plaintext highlighter-rouge">empheq</code> and <code class="language-plaintext highlighter-rouge">cases</code>. (<a href="https://github.com/mathjax/MathJax/issues/2762">#2762</a>)</p>
</li>
<li>
<p>Update build tools to work with extensions better. (<a href="https://github.com/mathjax/MathJax-src/pull/737">#737</a>)</p>
</li>
<li>
<p>Add <code class="language-plaintext highlighter-rouge">defaultPageReady()</code> to <code class="language-plaintext highlighter-rouge">MathJaxObject</code> interface. (<a href="https://github.com/mathjax/MathJax-src/pull/746">#746</a>)</p>
</li>
</ul>
<p><a id="available"></a></p>
<h1 id="availability-of-version-321">Availability of version 3.2.1</h1>
<p>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 <code class="language-plaintext highlighter-rouge">mathjax@3</code> URL. You should be able to obtain it immediately if you use the full version <code class="language-plaintext highlighter-rouge">mathjax@3.2.1</code>.</p>
<p>You may also have a cached version in your browser, so 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).</p>
<p>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., <code class="language-plaintext highlighter-rouge">tex-chml.js</code>), this is less likely to be an issue, and if you are loading a component ending in <code class="language-plaintext highlighter-rouge">-full</code> it is even less likely to occur.</p>
<p>Version 3.2.1 is available immediately from npm and GitHub for use in node applications.</p>
Typora becomes a MathJax Supporterhttps://www.mathjax.org/Typora-supports-MathJax/2022-01-07T00:00:00+00:002022-01-07T00:00:00+00:00MathJax today announced that Typora is joining its sponsorship program as
a MathJax Supporter.
<p>MathJax today announced that <a href="https://typora.io">Typora</a> is joining its sponsorship program as
a <a href="//www.mathjax.org/#sponsors">MathJax Supporter</a>.</p>
<p>Typora is a minimal Markdown editor built by the team of <a href="https://appmakes.io">appmakes.io</a>, which recently ended its long-term beta and now offers stable releases. Unlike some other editors, it offers a seamless experience between writing and reading, by providing an inline preview function. Typora also offers many advanced features, such as math expressions powered by MathJax. It is a good choice if you are looking for an app for writing your documents, blogs, or academic notes.</p>
<p>“MathJax supports mathematical formulae rendering without complex setups, it just works, and it works quite well,” remarked the developer behind Typora. “With MathJax, we were able to allow our users to create STEM contents in simple Markdown format, right inside our editor, smoothly and efficiently. We really appreciate MathJax team’s great work to bring math functionalities to our product, as well as to many other websites and products.”</p>
<p>“We really appreciate the support provided by Typora,” said Davide Cervone, the lead developer for MathJax. “This support allows us to continue to grow MathJax’s features in version 3.”</p>
<p>The MathJax team looks forward to the collaboration with Typora, and welcomes its support for the MathJax project.</p>
VitalSource becomes a MathJax Supporterhttps://www.mathjax.org/Vitalsource-supports-MathJax/2021-07-14T00:00:00+00:002021-07-14T00:00:00+00:00MathJax today announced that VitalSource is joining its sponsorship program as
a MathJax Supporter.
<p>MathJax today announced that <a href="https://get.vitalsource.com/">VitalSource</a> is joining its sponsorship program as
a <a href="//www.mathjax.org/#sponsors">MathJax Supporter</a>.</p>
<p>VitalSource Technologies, LLC is the leading education technology solutions provider committed to helping partners create, deliver, and distribute affordable, accessible, and impactful learning experiences worldwide. As a recognized innovator in the digital course materials market, VitalSource is best known for partnering with more than 1,000 publishers and resellers to deliver extraordinary learning experiences to millions of active users globally—and today we’re also powering new, cutting-edge technologies designed to optimize teaching and learning for maximum results.</p>
<p>“Through MathJax, VitalSource Bookshelf helps bring MathML rendering to all users both online and offline” said Dave Campbell, Vice President of Software Development at VitalSource. “We value MathJax’s performance, rendering quality, and configurability but most importantly, their continued commitment to accessibility which mirrors that of VitalSource and the Bookshelf platform.”</p>
<p>“We are excited to receive support from VitalSource,” said Davide Cervone, the lead developer for MathJax. “The new Partnership will help us continue to strengthen MathJax’s features, and help keep us one of the premier math-rendering solutions on the web.”</p>
<p>The MathJax team looks forward to the collaboration with VitalSource, and welcomes its support for the MathJax project.</p>
MathJax v3.2.0 now availablehttps://www.mathjax.org/MathJax-v3.2.0-available/2021-06-17T00:00:00+00:002021-06-17T00:00:00+00:00The MathJax team is pleased to announce version 3.2.0 of MathJax, released earlier today. This version includes a number of new features, along with several bug fixes. The new features include a lazy-typesetting extension, better handling of adaptive CSS in the CommonHTML output, several new TeX extensions, a port of the MML3 extension from v2, and the addition of the Hindi language to the speech generation. These are described more fully below.
<p>The MathJax team is pleased to announce version 3.2.0 of MathJax, released earlier today. This version includes a number of new features, along with several bug fixes. The new features include a lazy-typesetting extension, better handling of adaptive CSS in the CommonHTML output, several new TeX extensions, a port of the MML3 extension from v2, and the addition of the Hindi language to the speech generation. These are described more fully below.</p>
<p>There are several several potentially breaking changes in this release. See the second section below for more details.</p>
<p>Finally, a number of bug fixes are also included in this release, as described in the last section below.</p>
<hr />
<ul>
<li><a href="#features">New Features</a>
<ul>
<li><a href="#lazy">Lazy Typesetting</a></li>
<li><a href="#css">CSS Updates</a></li>
<li><a href="#packages">New TeX Packages</a></li>
<li><a href="#mml3">MathML Extensions</a></li>
<li><a href="#hindi">Explorer Update</a></li>
<li><a href="#other">Other New Features</a></li>
</ul>
</li>
<li><a href="#breaking">Breaking Changes</a></li>
<li><a href="#bugs">Bug Fixes</a>
<ul>
<li><a href="#output">Output Bug Fixes</a></li>
<li><a href="#input">Input Bug Fixes</a></li>
<li><a href="#misc">Miscellaneous</a></li>
</ul>
</li>
<li><a href="#available">Availability of v3.2.0</a></li>
</ul>
<hr />
<h1 id="new-features-in-this-release">New Features in this Release</h1>
<p><a id="lazy"></a></p>
<h2 id="lazy-typesetting">Lazy Typesetting</h2>
<p>Although MathJax version 3 is already an order of magnitude faster than version 2, with version 3.2 we offer a new extension that is designed to make pages with large numbers of equations perform even better. It implements a “lazy typesetting” approach that only typesets an expression when it comes into view, which means that expressions will not be typeset when they are not visible. Your readers will not have to wait for the entire document to typeset, which can speed up their initial view of the page. Furthermore, any expressions that are never seen will not be typeset. This also helps with the situation where you may link to a particular location in your page (via a URL with a hash); in version 2, typesetting the material above that point can cause the browser to change the scroll position, and so the user may not end up at the proper location in the page. With the lazy extension, the material above that point is not typeset until the user scrolls upwards, and so there is no position change.</p>
<p>Lazy typesetting works best with SVG output, but changes (discussed below) with the way the CommonHTML output handles its stylesheet updates make the CHTML output nearly as fast. With TeX input, the lazy extension makes sure that previous expressions are processed by TeX (though not output to the page) so that any macro definitions or automatic equation numbers are in place when the visible expressions are processed. Currently, documents that contain <code class="language-plaintext highlighter-rouge">\ref</code> or <code class="language-plaintext highlighter-rouge">\eqref</code> links may not yet work properly, since target equations may not have been typeset, and so the link location may not be marked in the document. In particular, forward references are unlikely to work, and backward references will work only if the target expression has already been typeset. We hope to improve this situation in a future release.</p>
<p>See the <a href="https://docs.mathjax.org/en/latest/output/lazy.html">lazy extension</a> documentation for information on how to configure MathJax to use this new feature.</p>
<p><a id="css"></a></p>
<h2 id="css-updates">CSS Updates</h2>
<p>MathJax’s CHTML output handles the characters that appear in the math on the page by storing information about their bounding boxes and text content in a CSS stylesheet. When additional math is typeset, this stylesheet may need to be updated, and in previous versions, MathJax would replace the entire stylesheet with a new one. This can cause visual flashing, and can be expensive as the browser must re-evaluate all the rules and apply them again. In version 3.2, the CHTML output now adds rules to the stylesheet individually, so the older rules are not replaced, and only the new rules must be evaluated and applied. This makes updates must faster, and is of particular benefit to the lazy-typesetting extension described above, as the page can be updated many times as equations scroll into view. This change makes the CHTML output work almost as smoothly as SVG output with the lazy extension.</p>
<p><a id="packages"></a></p>
<h2 id="new-tex-packages">New TeX Packages</h2>
<p>Version 3.2 includes nine new TeX extension packages:</p>
<ul>
<li><a href="https://docs.mathjax.org/en/latest/input/tex/extensions/cased.html">cases</a> — provides environments for individually numbered cases.</li>
<li><a href="https://docs.mathjax.org/en/latest/input/tex/extensions/centernot.html">centernot</a> — implements a centered <code class="language-plaintext highlighter-rouge">\not</code> command (and a non-standard <code class="language-plaintext highlighter-rouge">\centerOver</code> that places one symbol centered on top of another).</li>
<li><a href="https://docs.mathjax.org/en/latest/input/tex/extensions/colortbl.html">colortbl</a> — provides macros for coloring cells of an array or alignment.</li>
<li><a href="https://docs.mathjax.org/en/latest/input/tex/extensions/empheq.html">empheq</a> — an environment for placing material to the left or right of an alignment that has individual equation numbers.</li>
<li><a href="https://docs.mathjax.org/en/latest/input/tex/extensions/gensymb.html">gensymb</a> — provides macros for some specific units.</li>
<li><a href="https://docs.mathjax.org/en/latest/input/tex/extensions/mathtools.html">mathtools</a> — offers a range of macros and environments for advanced mathematical typesetting.</li>
<li><a href="https://docs.mathjax.org/en/latest/input/tex/extensions/setoptions.html">setoptions</a> — provides the ability to change some TeX input jax options from within an expression (e.g., to change the tag side).</li>
<li><a href="https://docs.mathjax.org/en/latest/input/tex/extensions/textcomp.html">textcomp</a> — provides a range of macros for specifying various text characters.</li>
<li><a href="https://docs.mathjax.org/en/latest/input/tex/extensions/upgreek.html">upgreek</a> — provides macros for upright Greek characters.</li>
</ul>
<p>These are all included in the components that end in <code class="language-plaintext highlighter-rouge">-full</code> (and include the TeX input jax), and you can load individual ones as you would other tex packages. Note, however, that none of these are autoloaded, though you can configure the <code class="language-plaintext highlighter-rouge">autoload</code> extension to do so, if you wish. See the <a href="https://docs.mathjax.org/en/latest/input/tex/extensions/autoload.html">autoload documentation</a> for details.</p>
<p>In addition to these new packages, some of the older packages have been updated:</p>
<ul>
<li>
<p>The <code class="language-plaintext highlighter-rouge">ams</code> package now includes <code class="language-plaintext highlighter-rouge">flalign</code>, <code class="language-plaintext highlighter-rouge">xalign</code>, and <code class="language-plaintext highlighter-rouge">xxalign</code> environments. In addition, the <code class="language-plaintext highlighter-rouge">multline</code> extension has been made more compatible with actual LaTeX. In the past, <code class="language-plaintext highlighter-rouge">multline</code> was set to be 85% of the container width, but now it is set to 100%, but with a 1em indent on both sides; when there is a tag, the indent on the tag side is increased by the width of the tag, as is the case in LaTeX. The width was stored in the <code class="language-plaintext highlighter-rouge">multlineWidth</code> configuration option in the <code class="language-plaintext highlighter-rouge">tex</code> configuration block. That has now been moved to the <code class="language-plaintext highlighter-rouge">ams</code> block in the <code class="language-plaintext highlighter-rouge">tex</code> configuration, and there is a new <code class="language-plaintext highlighter-rouge">multlineIndent</code> value. These are set to <code class="language-plaintext highlighter-rouge">100%</code> and <code class="language-plaintext highlighter-rouge">1em</code> respectively. To obtain the old behavior, set them to <code class="language-plaintext highlighter-rouge">85%</code> and <code class="language-plaintext highlighter-rouge">0</code>. Currently, if <code class="language-plaintext highlighter-rouge">multlineWidth</code> is found in the main <code class="language-plaintext highlighter-rouge">tex</code> option block, it will be moved to the <code class="language-plaintext highlighter-rouge">ams</code> block, but that backward-compatibility code will be removed in a future release.</p>
</li>
<li>
<p>The <code class="language-plaintext highlighter-rouge">physics</code> package now implements all macros, even those that are not officially documented, but are nevertheless available in LaTeX. In addition, it now implements the <code class="language-plaintext highlighter-rouge">italicdiff</code> and <code class="language-plaintext highlighter-rouge">arrowdel</code> options.</p>
</li>
<li>
<p>The following macros have been added to the indicated package:</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">\overunderset</code> (ams) — a combination of <code class="language-plaintext highlighter-rouge">\overset</code> and <code class="language-plaintext highlighter-rouge">\underset</code>.</li>
<li><code class="language-plaintext highlighter-rouge">\stackbin</code> (ams) — similar to <code class="language-plaintext highlighter-rouge">\stackrel</code> but produces a symbol with the spacing of a binary operator.</li>
<li><code class="language-plaintext highlighter-rouge">\nonscript</code> (base) — apply the following spacing only when in display and text styles.</li>
<li><code class="language-plaintext highlighter-rouge">\boxed</code> (base) — puts a frame around an expression.</li>
<li><code class="language-plaintext highlighter-rouge">\framebox</code> (base) — puts a frame around a text argument.</li>
<li><code class="language-plaintext highlighter-rouge">\ip</code>, <code class="language-plaintext highlighter-rouge">\Bqty</code>, <code class="language-plaintext highlighter-rouge">\qsince</code>, <code class="language-plaintext highlighter-rouge">\Residue</code> (physics) — originally missing from the physics package.</li>
</ul>
</li>
</ul>
<p><a id="mml3"></a></p>
<h2 id="mathml-extensions">MathML Extensions</h2>
<p>The MML3 extension from version 2 has been ported to version 3 and is available to be included when you load the MathML input jax. This extension implements the MathML3 elementary math tags (like <code class="language-plaintext highlighter-rouge"><mstack></code> and <code class="language-plaintext highlighter-rouge"><mlongdiv></code>) using an XSLT transform to convert these tags into other presentation MathML tags that MathJax has implemented. This does a reasonable job for some constructs, and a poorer job for others, but it does make it possible to process elementary math within MathJax v3. This is an experimental extension as a stop-gap measure until these tags are fully implemented within core MathJax.</p>
<p>See the <a href="https://docs.mathjax.org/en/latest/input/mathml.html#experimental-mml3-extension">mml3 extension</a> documentation for information on how to configure MathJax to use this new feature.</p>
<p><a id="hindi"></a></p>
<h2 id="explorer-update">Explorer Update</h2>
<p>The Speech-Rule Engine (SRE) that underlies MathJax’s assistive technology support has been updated to the most recent version (3.3.3). This includes support for the Hindi language, so that the expression explorer can generate speech in Hindi (as well as its other languages: English, French, German, Italian, Spanish, together with Braille support in Nemeth).</p>
<p>See the <a href="https://github.com/zorkow/speech-rule-engine/releases">SRE release notes</a> for details.</p>
<p>This release also ports the remaining missing features for the explorer to v3. This includes summarising expressions and navigation of tabular expressions, like matrices or equation systems. See the <a href="https://docs.mathjax.org/en/latest/basic/explorer-commands.html#special-key-combinations-for-navigating-tables">explorer keyboard commands</a> for details.</p>
<p><a id="other"></a></p>
<h2 id="other-new-features">Other New Features</h2>
<p>In addition to the major features listed above, there are some minor new features as well:</p>
<ul>
<li>
<p>Packages can now be specified for the <code class="language-plaintext highlighter-rouge">textmacros</code> extension to the TeX input jax. This allows you to configure additional macros that can be processed within text mode. See the <a href="https://docs.mathjax.org/en/latest/input/tex/extensions/textmacros.html">textmacros documentation</a> for details.</p>
</li>
<li>
<p>Processing of raw Unicode characters in TeX input has been improved. In the past, nearly all non-ASCII characters would be placed within an <code class="language-plaintext highlighter-rouge"><mo></code> element, which is not always the best tag to use. In version 3.2, processing of raw Unicode characters is more nuanced, so that letters are placed in <code class="language-plaintext highlighter-rouge"><mi></code> elements and other symbols in <code class="language-plaintext highlighter-rouge"><mo></code>. For example, a literal Greek alpha (U+03B1) will produce <code class="language-plaintext highlighter-rouge"><mi>&#x03B1;</mi></code> (which is what is generated by <code class="language-plaintext highlighter-rouge">\alpha</code>) rather than <code class="language-plaintext highlighter-rouge"><mo>&#x03B1;</mo></code> as in earlier versions. This should provide better results, though perhaps still not perfect in all cases.</p>
</li>
<li>
<p>In the past, errors in the MathJax configuration options (such as an unknown option) would produce a fatal error and MathJax would not run. In version 3.2, such errors now produce non-fatal warnings instead, and MathJax will continue to process the remaining options (and then typeset the page). This means that changes to the options (like those described in the <a href="#breaking">breaking changes</a> below) will not cause your pages to fail outright (though the old options will have no effect). You can configure MathJax to make such errors fatal again, if you wish, and you can provide a function that will be called when there is an option error so that you can more easily trap such errors and handle them yourself. See the <a href="https://docs.mathjax.org/en/latest/options/startup/startup.html">startup options</a> for more details.</p>
</li>
<li>
<p>The component loader uses a set of filters to convert a component specification (like <code class="language-plaintext highlighter-rouge">[tex]/physics</code>) to the full URL for loading the extension. In the past, it was difficult to hook into that filtering mechanism, but in version 3.2, you can now configure additional filters for the loader. See the <a href="https://docs.mathjax.org/en/latest/options/startup/loader.html">loader documentation</a> for more details.</p>
</li>
</ul>
<p><a id="breaking"></a></p>
<h1 id="breaking-changes-in-this-release">Breaking Changes in this Release</h1>
<p>Some of the changes made to the options to accommodate the updated speech-rule engine are potentially breaking changes, in that the previous options (<code class="language-plaintext highlighter-rouge">enrichSpeech</code>, <code class="language-plaintext highlighter-rouge">a11y.locale</code>, <code class="language-plaintext highlighter-rouge">a11y.speechRules</code>) are no longer valid options. Version 3.1.4 includes code to transfer the old options to their new locations, but that code has been removed in version 3.2. As errors in options are no longer fatal (unless you configure them to be), this change will no longer cause MathJax to fail, but will cause warning messages in the browser console, so look there for such error reports.</p>
<p>Similarly, the code that automatically renames the older TeX package names to their current all-lower-case versions (e.g., <code class="language-plaintext highlighter-rouge">configMacros</code> to <code class="language-plaintext highlighter-rouge">configmacros</code> and <code class="language-plaintext highlighter-rouge">colorV2</code> to <code class="language-plaintext highlighter-rouge">colorv2</code>) has been removed from version 3.2. If you are using old package names, you will need to update your configuration. This applies to <code class="language-plaintext highlighter-rouge">\require{}</code> macros that refer to the older names as well as their names in the <code class="language-plaintext highlighter-rouge">loader</code> section, the <code class="language-plaintext highlighter-rouge">tex.packages</code> array, and the <code class="language-plaintext highlighter-rouge">tex.autoload</code> block.</p>
<p>Version 3.2 removes the <code class="language-plaintext highlighter-rouge">matchFontHeight</code> option for the SVG output jax, since it only applies to the CommonHTML output, but was previously allowed in the <code class="language-plaintext highlighter-rouge">svg</code> configuration block, while doing nothing.</p>
<p>Version 3.2 removes of the <code class="language-plaintext highlighter-rouge">toArray()</code> method from the <code class="language-plaintext highlighter-rouge">LinkedList</code> class (and its subclasses), so any custom code that uses that should switch to using <code class="language-plaintext highlighter-rouge">Array.from(...)</code> around the list instead.</p>
<p>Finally, the <code class="language-plaintext highlighter-rouge">Box.ts</code> and <code class="language-plaintext highlighter-rouge">CssStyles.ts</code> (and their associated <code class="language-plaintext highlighter-rouge">.js</code> files) have been moved from the <code class="language-plaintext highlighter-rouge">output</code> directories to the <code class="language-plaintext highlighter-rouge">util</code> directory. Compatibility files were placed in the original locations so that older code would continue to work, but these have been removed in v3.2, so you should modify any custom code that loads these files to obtain them from the <code class="language-plaintext highlighter-rouge">util</code> directory instead.</p>
<p><a id="bugs"></a></p>
<h1 id="bugs-addressed-in-this-release">Bugs Addressed in this Release</h1>
<p><a id="output"></a></p>
<h2 id="output-bug-fixes">Output Bug Fixes</h2>
<ul>
<li>Work around long-standing WebKit bug with CHTML characters. (<a href="https://github.com/mathjax/MathJax/issues/2435">2435</a>)</li>
<li>Fix error where a second use of <code class="language-plaintext highlighter-rouge">\|</code> delim causes the wrong size to be used. (<a href="https://github.com/mathjax/MathJax-src/issues/700">700</a>)</li>
<li>Fixed problem with vertical centering of tables (<a href="https://github.com/mathjax/MathJax-src/issues/697">697</a>)</li>
<li>Reset cramped style for explicit style changes, and in tables (<a href="https://github.com/mathjax/MathJax-src/issues/697">697</a>)</li>
<li>Force setting of width of text with an explicit font (work around Safari bug) (<a href="https://github.com/mathjax/MathJax-src/issues/699">699</a>)</li>
<li>Add support for shifting combining-character accents into place (<a href="https://github.com/mathjax/MathJax-src/issues/695">695</a>)</li>
</ul>
<p><a id="input"></a></p>
<h2 id="input-bug-fixes">Input Bug Fixes</h2>
<ul>
<li>Fix \overset and similar macros to now convert over-under to sub-sup in text mode. (<a href="https://github.com/mathjax/MathJax/issues/2709">2709</a>)</li>
<li>Fixed problem with converting under-over to sub-sup when one script is missing. (<a href="https://github.com/mathjax/MathJax/issues/2691">2691</a>)</li>
<li>Trim delimiter for <code class="language-plaintext highlighter-rouge">\big</code> and friends (<a href="https://github.com/mathjax/MathJax/issues/2688">2688</a>, <a href="https://github.com/mathjax/MathJax/issue/2689">2689</a>)</li>
<li>Wrap results of <code class="language-plaintext highlighter-rouge">\mathbf</code> and similar macros so they are treated as a unit(<a href="https://github.com/mathjax/MathJax/issues/2688">2688</a>, <a href="https://github.com/mathjax/MathJax/issue/2689">2689</a>)</li>
<li>Fix several bugs in the <code class="language-plaintext highlighter-rouge">physics</code> package (<a href="https://github.com/mathjax/MathJax/issues/2449">2449</a>)</li>
<li>Remove heuristic for U+2061 forcing previous item to be TeX class OP (<a href="https://github.com/mathjax/MathJax-src/issues/719">719</a>)</li>
</ul>
<p><a id="misc"></a></p>
<h2 id="miscellaneous">Miscellaneous</h2>
<ul>
<li>Update <code class="language-plaintext highlighter-rouge">node-main</code> for webpack 5 (<a href="https://github.com/mathjax/MathJax-src/issues/696">696</a>)</li>
<li>Fix problem with detecting whether the ex-height can be computed, and work around jsdom problems (<a href="https://github.com/mathjax/MathJax-src/issues/691">691</a>)</li>
<li>Clear the stylesheet when used in a new MathDocument. (<a href="https://github.com/mathjax/MathJax/issues/2678">2678</a>)</li>
<li>Only return a DOCTYPE if there is one (<a href="https://github.com/mathjax/MathJax-src/issues/692">692</a>)</li>
<li>Go back to <code class="language-plaintext highlighter-rouge">mhchemparser</code> package, now that it is es5 (<a href="https://github.com/mathjax/MathJax-src/issues/714">714</a>).</li>
</ul>
<p><a id="available"></a></p>
<h1 id="availability-of-version-320">Availability of version 3.2.0</h1>
<p>Although version 3.2.0 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.0 immediately if you are loading mathjax using a generic <code class="language-plaintext highlighter-rouge">mathjax@3</code> URL. You should be able to obtain it immediately if you use the full version <code class="language-plaintext highlighter-rouge">mathjax@3.2.0</code>.</p>
<p>You may also have a cached version in your browser, so 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).</p>
<p>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 for until the CDN versions stabilize, which should be within a day. If you are loading one of the combined components (e.g., <code class="language-plaintext highlighter-rouge">tex-chml.js</code>), this is less likely to be an issue, and if you are loading a component ending in <code class="language-plaintext highlighter-rouge">-full</code> it is even less likely to occur.</p>
<p>Version 3.2.0 is available immediately from npm and GitHub for use in node applications.</p>
Cambridge University Press continues as MathJax Supporterhttps://www.mathjax.org/cambridge-university-press-continues-as-mathjax-supporter-2021/2021-05-28T00:00:00+00:002021-05-28T00:00:00+00:00<!-- # Cambridge University Press continues as MathJax Supporter -->
<p><a href="http://cambridge.org">Cambridge University Press</a> continues to support the MathJax project as a MathJax Supporter.</p>
<p>With its first publication dating back to 1584, Cambridge University Press (CUP) is the oldest publishing house in the world. As part of the University of Cambridge. CUP follows the University’s mission to disseminate knowledge in the pursuit of education, learning and research at the highest international levels of excellence. Today, CUP publishes 50,000 titles by authors from over 100 countries with platforms such as <a href="https://www.cambridge.org/core">Cambridge Core</a> leveraging MathJax to deliver high-quality, accessible mathematics in over 300 peer-reviewed journals.</p>
<p>“Cambridge University Press is pleased to work with MathJax to ensure the optimal presentation of mathematics content in the research we disseminate online. We’re committed to our publishing partnership with the math and science community and delighted to be a MathJax sponsor,” says Roger Astley, Executive Publisher, Mathematical Sciences.</p>
<p>“We value the continued backing that Cambridge University Press offers MathJax, and are pleased to contribute to their web-based mathematical offerings”, comments Davide P. Cervone, MathJax lead developer. “As a MathJax Supporter, CUP makes an important contribution to keeping MathJax the reliable, flexible, and open technology it is today.”</p>
<p>We look forward to continuing the collaboration with CUP, and welcome their ongoing support for the MathJax project.</p>
MathJax v3.1.3 now availablehttps://www.mathjax.org/MathJax-v3-1-3-available/2021-04-22T00:00:00+00:002021-04-22T00:00:00+00:00The MathJax team is pleased to announce version 3.1.3 of MathJax, released earlier today. This is a bug-fix release that fixes over 70 issues. It also updates the Speech-Rule Engine to version 3.2, and includes a few new features as well.
<p>The MathJax team is pleased to announce version 3.1.3 of MathJax, released earlier today. This is a bug-fix release that fixes over 70 issues. It also updates the Speech-Rule Engine to version 3.2, and includes a few new features as well.</p>
<h1 id="new-features-in-this-release">New Features in this Release</h1>
<ul>
<li>The speech-rule engine (SRE) has been updated to v3.2.0. (<a href="https://github.com/zorkow/speech-rule-engine/releases/tag/v3.2.0">SRE release notes.</a>)</li>
<li>The options controlling the SRE have been separated out from the other assistive options so they can be configured independently. (<a href="https://docs.mathjax.org/en/v3.1-latest/options/accessibility.html?highlight=sre#semantic-enrich-extension-options">documentation</a>)</li>
<li>The MathDocument <code class="language-plaintext highlighter-rouge">reset()</code> command now allows resetting input and output jax. (<a href="https://github.com/mathjax/MathJax-src/issues/647">#647</a>)</li>
<li>LaTeX environments can now be defined in the MathJax configuration, just like macros. (<a href="https://github.com/mathjax/MathJax/issues/2505">#2505</a>) (<a href="https://docs.mathjax.org/en/v3.1-latest/input/tex/extensions/configmacros.html?highlight=environments">documentation</a>)</li>
<li>Add support for all <code class="language-plaintext highlighter-rouge">\mathXYZ</code> and <code class="language-plaintext highlighter-rouge">\symXYZ</code> macros (e.g., <code class="language-plaintext highlighter-rouge">\mathsfit</code>, <code class="language-plaintext highlighter-rouge">\symbfup</code>) and use multi-letter <code class="language-plaintext highlighter-rouge"><mi></code> when possible. (<a href="https:github.com/mathjax/MathJax#2595">#2595</a>)</li>
<li>Add support for trapping and reporting SRE errors. (<a href="https://github.com/mathjax/MathJax-src/issues/679">#679</a>) (<a href="https://docs.mathjax.org/en/v3.1-latest/options/accessibility.html?highlight=enricherror#semantic-enrich-extension-options">documentation</a>)</li>
<li>Add ability to trigger links within expressions (via the return key) while using the expression explorer. (<a href="https://github.com/mathjax/MathJax-src/issues/687">#687</a>)</li>
<li>Update the <code class="language-plaintext highlighter-rouge">mhchem</code> extension to the latest version from the author. (<a href="https://github.com/mathjax/MathJax-src/issues/688">#688</a>)</li>
<li>Update AsciiMath to current version. (<a href="https:github.com/mathjax/MathJax#2640">#2640</a>)</li>
</ul>
<h1 id="bugs-addressed-in-this-release">Bugs Addressed in this release</h1>
<h2 id="tex-input-issues">TeX Input Issues</h2>
<ul>
<li>Allow <code class="language-plaintext highlighter-rouge">\middle</code> to work when a style or color is open. (<a href="https:github.com/mathjax/MathJax#2663">#2663</a>)</li>
<li>Fully clear tagging on equation start. (<a href="https:github.com/mathjax/MathJax#2643">#2643</a>)</li>
<li>Ignore <code class="language-plaintext highlighter-rouge">*</code> in <code class="language-plaintext highlighter-rouge">\\*</code> and <code class="language-plaintext highlighter-rouge">\\*[...]</code> constructions. (<a href="https:github.com/mathjax/MathJax#2433">#2433</a>)</li>
<li>Fix problems with SVG output being misplaced. (<a href="https:github.com/mathjax/MathJax#2554">#2554</a>, mathjax/MathJax#2624, mathjax/MathJax#2577)</li>
<li>Fix problem with <code class="language-plaintext highlighter-rouge">\|</code> being stretchy when it shouldn’t be. (<a href="https:github.com/mathjax/MathJax#2632">#2632</a>)</li>
<li>Fix placement of undefined macro when <code class="language-plaintext highlighter-rouge">textmacros</code> and <code class="language-plaintext highlighter-rouge">noundefined</code> are both in effect. (<a href="https:github.com/mathjax/MathJax#2622">#2622</a>)</li>
<li>Fix problem with autoloading when macro name is followed by a space. (<a href="https:github.com/mathjax/MathJax#2580">#2580</a>)</li>
</ul>
<h2 id="mathml-input-issues">MathML Input Issues</h2>
<ul>
<li>Fix problem with loading entity files when MathML input encounters an entity that isn’t defined. (<a href="https:github.com/mathjax/MathJax#2650">#2650</a>)</li>
<li>Fix handling of <code class="language-plaintext highlighter-rouge"><mrow></code> nodes that look like <code class="language-plaintext highlighter-rouge">\left...\right</code> to be TeX class INNER. (mathjax/Mathjax#2584)</li>
<li>Don’t mark <code class="language-plaintext highlighter-rouge"><mrow></code> nodes as fences if the parentheses aren’t stretchy. (<a href="https://github.com/mathjax/MathJax-src/issues/583">#583</a>)</li>
<li>Make <code class="language-plaintext highlighter-rouge"><mspace></code> elements have TeX class NONE. (<a href="https:github.com/mathjax/MathJax#2576">#2576</a>)</li>
</ul>
<h2 id="output-issues">Output Issues</h2>
<ul>
<li>Fix MathML spacing rules for <code class="language-plaintext highlighter-rouge"><mo></code> elements to better follow the specification. (<a href="https:github.com/mathjax/MathJax#2392">#2392</a>)</li>
<li>Better handling of minimum height and width for SVG (so they don’t disappear). (<a href="https:github.com/mathjax/MathJax#2605">#2605</a>)</li>
<li>Fix issues with placement of <code class="language-plaintext highlighter-rouge"><menclose></code> notations. (<a href="https:github.com/mathjax/MathJax#2571">#2571</a>)</li>
<li>Fix several issues with tables (label alignment in CHTML, lines in SVG in tables with tags, vertical centering). (mathjax/Mathjax#2601)</li>
<li>Update SVG output so that following a link scrolls to the top of the tag rather than the baseline in all browsers. (<a href="https:github.com/mathjax/MathJax#2588">#2588</a>)</li>
<li>Use a colon in link anchor ids so that links work in Safari in SVG output. (<a href="https:github.com/mathjax/MathJax#2586">#2586</a>)</li>
<li>Improve positioning of extenders for stretchy characters. (<a href="https:github.com/mathjax/MathJax#2547">#2547</a>, mathjax/MathJax#2598)</li>
<li>Improve heights of successively larger multi-character surds. (<a href="https:github.com/mathjax/MathJax#2658">#2658</a>)</li>
<li>Handle variant forms for pseudo-scripts better in fonts that have them. (<a href="https:github.com/mathjax/MathJax#2519">#2519</a>)</li>
<li>Allow stylesheet to be obtained even after it was created. (<a href="https:github.com/mathjax/MathJax#2542">#2542</a>)</li>
<li>Correct errors in the horizontal stretchy data for several characters. (<a href="https://github.com/mathjax/MathJax-src/issues/645">#645</a>)</li>
<li>Updates to handle <code class="language-plaintext highlighter-rouge">smallmatrix</code> environment properly. (<a href="https://github.com/mathjax/MathJax-src/issues/582">#582</a>, #621)</li>
<li>Fix problem with selectors for SVG path widths. (<a href="https:github.com/mathjax/MathJax#2618">#2618</a>)</li>
<li>Fix incorrect glyph for script capital I. (mathjax/MathJax-src#2555)</li>
<li>Add a small separation between super- and subscripts and their base. (<a href="https:github.com/mathjax/MathJax#2406">#2406</a>)</li>
<li>Allow “single-character” <code class="language-plaintext highlighter-rouge"><mi></code> elements to include trailing combining characters. (<a href="https:github.com/mathjax/MathJax#2617">#2617</a>)</li>
<li>Improve spacing between accents and their bases, and handle under- and over-lines more like TeX. (<a href="https://github.com/mathjax/MathJax-src/issues/619">#619</a>)</li>
<li>Handle accents more like TeX does (better sizes and placement). (<a href="https:github.com/mathjax/MathJax#712">#712</a>, mathjax/MathJax#2474)</li>
<li>Fix handling of italic correction for <code class="language-plaintext highlighter-rouge"><munderover></code> and <code class="language-plaintext highlighter-rouge"><msubsup></code> combinations. (<a href="https://github.com/mathjax/MathJax-src/issues/634">#634</a>)</li>
<li>Better handling of the placement of scripts in enriched MathML. (zorkow/speech-rule-engine#462, #617)</li>
<li>Handle spacing in <code class="language-plaintext highlighter-rouge"><mroot></code> elements properly. (<a href="https:github.com/mathjax/MathJax#2630">#2630</a>)</li>
<li>Make sure hit-box is translated along with the hit-able element in SVG output. (<a href="https:github.com/mathjax/MathJax#2530">#2530</a>)</li>
<li>Add support for setting the unknown character family for when a character is not in the MathJax fonts. (<a href="https://github.com/mathjax/MathJax-src/issues/576">#576</a>)</li>
<li>Make sure bevelled fraction is symmetrically placed. (<a href="https://github.com/mathjax/MathJax-src/issues/580">#580</a>)</li>
<li>Prevent border-spacing and border-collapse from being inherited from an outer table. (<a href="https://github.com/mathjax/MathJax-src/issues/686">#686</a>)</li>
</ul>
<h2 id="miscellaneous">Miscellaneous</h2>
<ul>
<li>Update operator dictionary to the current state of Appendix C of the specification. (<a href="https://github.com/mathjax/MathJax-src/issues/652">#652</a>)</li>
<li>Skip DOM node types that MathJax can’t process. (<a href="https:github.com/mathjax/MathJax#2662">#2662</a>)</li>
<li>Fix a problem where <code class="language-plaintext highlighter-rouge">enableEnrich</code> and other a11y options could not be configured. (<a href="https:github.com/mathjax/MathJax#2651">#2651</a>)</li>
<li>Properly serialize <code class="language-plaintext highlighter-rouge"><annotation-xml></code> content. (<a href="https://github.com/mathjax/MathJax-src/issues/678">#678</a>)</li>
<li>Reset the tex labels and ids when A11y changes force re-rendering. (<a href="https:github.com/mathjax/MathJax#2597">#2597</a>)</li>
<li>Trim TeX and annotations before copying to clipboard. (<a href="https:github.com/mathjax/MathJax#2574">#2574</a>)</li>
<li>Remove <code class="language-plaintext highlighter-rouge">role='presentation'</code> attributes. (<a href="https:github.com/mathjax/MathJax#2608">#2608</a>)</li>
<li>Handle measuring of elements in jsdom adaptor the same way as in liteDOM, since jsdom doesn’t do measurements. (<a href="https:github.com/mathjax/MathJax#2550">#2550</a>)</li>
<li>Show more internal properties in serialized MathML. (<a href="https:github.com/mathjax/MathJax#2585">#2585</a>)</li>
<li>Improve build tools to make it easier to create custom components. (<a href="https://github.com/mathjax/MathJax-src/issues/592">#592</a>)</li>
<li>Fix <code class="language-plaintext highlighter-rouge">pack</code> and <code class="language-plaintext highlighter-rouge">makeAll</code> commands to display the modules used in version 5 of webpack. (<a href="https://github.com/mathjax/MathJax-src/issues/591">#591</a>, #579)</li>
<li>Fix <code class="language-plaintext highlighter-rouge">webpack.common.js</code> to handle windows paths correctly. (<a href="https://github.com/mathjax/MathJax-demos-web/issues/30">demos-web#30</a>)</li>
<li>Update LiteAdaptor to handle full-width characters better. (<a href="https://github.com/mathjax/MathJax-demos-node/issues/29">demos-node#29</a>)</li>
</ul>
<h1 id="potential-future-breaking-changes">Potential Future Breaking Changes</h1>
<p>Some of the changes made to the options to accommodate the updated speech-rule engine are potentially breaking changes, in that the previous options (<code class="language-plaintext highlighter-rouge">enrichSpeech</code>, <code class="language-plaintext highlighter-rouge">a11y.locale</code>, <code class="language-plaintext highlighter-rouge">a11y.speechRules</code>) are no longer valid options. Since MathJax flags invalid options and stops processing when it encounters one, this means any configurations that used the older options would no longer work. Version 3.1.3 includes code to transfer the old options to their new locations, but that code will be removed in version 3.2. This gives page authors the opportunity to fix the issue before version 3.2 is released and their pages break.</p>
<p>Similarly, the code that automatically renames the older TeX package names to their current all-lower-case versions (e.g., <code class="language-plaintext highlighter-rouge">configMacros</code> to <code class="language-plaintext highlighter-rouge">configmacros</code> and <code class="language-plaintext highlighter-rouge">colorV2</code> to <code class="language-plaintext highlighter-rouge">colorv2</code>) will likely be removed from version 3.2, so if you are using old package names, you should change your configurations before version 3.2. This applies to <code class="language-plaintext highlighter-rouge">\require{}</code> macros that refer to the older names as well as their names in the <code class="language-plaintext highlighter-rouge">loader</code> section, the <code class="language-plaintext highlighter-rouge">tex.packages</code> array, and the <code class="language-plaintext highlighter-rouge">tex.autoload</code> block.</p>
<p>Version 3.2 will also see the removal of the <code class="language-plaintext highlighter-rouge">matchFontHeight</code> option for the SVG output jax, since it only applies to the CommonHTML output, but is currently allowed in the <code class="language-plaintext highlighter-rouge">svg</code> configuration block, while doing nothing.</p>
<p>Version 3.2 may include other breaking changes, such as the removal of the <code class="language-plaintext highlighter-rouge">toArray()</code> method from the <code class="language-plaintext highlighter-rouge">LinkedList</code> class (and its subclasses), so any custom code that uses that should switch to using <code class="language-plaintext highlighter-rouge">Array.from(...)</code> around the list instead.</p>
<p>Finally, the <code class="language-plaintext highlighter-rouge">Box.ts</code> and <code class="language-plaintext highlighter-rouge">CssStyles.ts</code> (and their associated <code class="language-plaintext highlighter-rouge">.js</code> files) have been moved from the <code class="language-plaintext highlighter-rouge">output</code> directories to the <code class="language-plaintext highlighter-rouge">util</code> directory. Compatibility files were placed in the original locations so that older code would continue to work, but these will likely be removed in v3.2, so you should modify any custom code that loads these files to obtain them from the <code class="language-plaintext highlighter-rouge">util</code> directory instead.</p>
<h1 id="availability-of-version-313">Availability of version 3.1.3</h1>
<p>Although version 3.1.3 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.1.3 immediately if you are loading mathjax using a generic <code class="language-plaintext highlighter-rouge">mathjax@3</code> URL. You should be able to obtain it immediately if you use the full version <code class="language-plaintext highlighter-rouge">mathjax@3.1.3</code>.</p>
<p>You may also have a cached version in your browser, so 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).</p>
<p>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 for until the CDN versions stabilize, which should be within a day. If you are loading one of the combined components (e.g., <code class="language-plaintext highlighter-rouge">tex-chml.js</code>), this is less likely to be an issue, and if you are loading a component ending in <code class="language-plaintext highlighter-rouge">-full</code> it is even less likely to occur.</p>
<p>Version 3.1.3 is available immediately from npm and GitHub for use in node applications.</p>
Taylor and Francis continues as MathJax Sponsorhttps://www.mathjax.org/taylor-and-francis-continues-as-mathjax-partner-2021/2021-03-11T00:00:00+00:002021-03-11T00:00:00+00:00Taylor & Francis continues to support MathJax as a MathJax Supporter.
<p><a href="http://www.taylorandfrancisgroup.com/">Taylor & Francis</a> continues to support MathJax as a <a href="/#supporters">MathJax Supporter</a>.</p>
<p>Taylor & Francis, a division of <a href="http://www.informa.com/">Informa plc</a>, is a leading international academic publisher with more than 2,700 journals, over 7,000 new books each year, and a books backlist in excess of 140,000 specialist titles. Access to all journals from Taylor & Francis, Routledge and Psychology Press is provided by T&F’s state-of-the art platform <a href="http://tandfonline.com">Taylor & Francis Online</a> where MathJax provides beautiful, accessible mathematics in publications such as the journals of the <a href="http://amstat.tandfonline.com/">American Statistical Association</a> and the <a href="https://maa.tandfonline.com/">Mathematical Association of America</a>.</p>
<p>Paul Naish, Global Head of Portfolio for Mathematics & Statistics at Taylor & Francis, noted “Taylor & Francis are dedicated supporters of MathJax since 2014. We are fans for a number of reasons, not least is the accessibility that MathJax provides for those using assistive technology, but also its simple and effective readability of equations in any browser.”</p>
<p>“We are indebted to sponsors like Taylor & Francis for their dedication to making mathematics available and accessible on the web,” comments Davide Cervone, MathJax lead developer and project manager. “The continuing support from Taylor & Francis helps us to improve MathJax, develop new features, and maintain our high standards for on-line mathematical presentation.”</p>
<p>We look forward to continuing the collaboration with Taylor & Francis, and welcome their ongoing participation in the MathJax project.</p>
MAA continues as MathJax Sponsorhttps://www.mathjax.org/maa-continues-as-mathjax-partner-2021/2021-02-24T00:00:00+00:002021-02-24T00:00:00+00:00The Mathematical Association of America (MAA) continues to support the MathJax project as a MathJax Sponsor.
<p><a href="https://www.maa.com">The Mathematical Association of America (MAA)</a> continues to support the MathJax project as a MathJax Sponsor.</p>
<p>The MAA is the world’s largest community of mathematicians, students, and enthusiasts. It accelerates the understanding of our world through mathematics because mathematics drives society and shapes lives.</p>
<p>“Communication is a core value of the MAA,” said Michael Pearson, MAA Executive Director. “The acceleration of the development and presentation of mathematics online, for both research and education, requires effective tools such as MathJax to bring mathematical equations to life, and we are happy to continue our support.”</p>
<p>“The MAA’s support has been a long-term asset to MathJax and our development efforts. We are pleased to partner with the MAA, and to continue to work with them toward greater support for mathematics on the web”, said Davide P. Cervone, MathJax lead developer. “Thanks to the MAA, we can continue to enhance MathJax, and its support for the assistive technology that is so important for math education.”</p>
<p>We look forward to continuing the collaboration with the MAA and welcome their ongoing support for the MathJax project.</p>
Elsevier continues as MathJax Sponsorhttps://www.mathjax.org/elsevier-continues-as-mathjax-partner-2020/2021-02-16T00:00:00+00:002021-02-16T00:00:00+00:00Elsevier continues to support the MathJax project as a MathJax Sponsor.
<p><a href="http://www.elsevier.com">Elsevier</a> continues to support the MathJax project as a MathJax Sponsor.</p>
<p>Elsevier is a world-leading provider of information solutions for science, health, and technology professionals. Elsevier provides web-based, digital solutions — among them ScienceDirect, Scopus, Elsevier Research Intelligence, and ClinicalKey — and publishes over 2,600 journals, including The Lancet and Cell, and more than 33,000 book titles, including a number of iconic reference works. Elsevier is actively advancing discipline-specific content, format, and tools to the author and user needs and workflow.</p>
<p>“Elsevier consistently and proactively endeavours to make our products fully accessible to all our readers. MathJax is a crucial component of our ability to consistently render math equations across all fulltext journals and books on ScienceDirect in an accessible manner, and a feature we know to be greatly valued by our users. We are therefore delighted to continue our support of the MathJax project,” commented Rose L’Huillier, SVP Product Management Reading at Elsevier</p>
<p>“Elsevier’s long-term support and feedback has been invaluable to MathJax during our development efforts. Their technical expertise and large corpus of mathematical texts are a perfect match for our needs”, said Davide P. Cervone, MathJax lead developer. “Thanks to Elsevier, we can continue to enhance MathJax, and remain a key technology for math and science on the web.”</p>
<p>We look forward to continuing the collaboration with Elsevier and welcome their ongoing support for the MathJax project.</p>
<p><strong>About Elsevier</strong></p>
<p>Elsevier is a world-leading provider of information solutions that enhance the performance of science, health, and technology professionals, empowering them to make better decisions, deliver better care, and sometimes make groundbreaking discoveries that advance the boundaries of knowledge and human progress. Elsevier provides web-based, digital solutions — among them <a href="http://www.sciencedirect.com/">ScienceDirect</a>, <a href="http://www.scopus.com/">Scopus</a>, <a href="http://www.elsevier.com/research-intelligence">Elsevier Research Intelligence</a> and <a href="https://www.clinicalkey.com/#!/">ClinicalKey</a> — and publishes over 2,600 journals, including <a href="http://www.thelancet.com/">The Lancet</a> and <a href="http://www.cell.com/">Cell</a>, and more than 33,000 book titles, including a number of iconic reference works. Elsevier is part of <a href="http://www.relx.com/Pages/Home.aspx">RELX Group plc</a>, a world-leading provider of information solutions for professional customers across industries.</p>
EBSCO continues as MathJax supporterhttps://www.mathjax.org/EBSCO-continues-as-mathjax-supporter-2020/2020-12-18T00:00:00+00:002020-12-18T00:00:00+00:00EBSCO Information Services (EBSCO) continues to support MathJax as a MathJax Supporter.
<p><a href="http://www.ebsco.com">EBSCO Information Services</a> (EBSCO) continues to support MathJax as a MathJax Supporter.</p>
<p>EBSCO is the provider of online research content and search technologies serving academic, school and public libraries; healthcare and medical institutions; corporations; and government agencies around the world. From research, acquisition management, subscription services and discovery to clinical decision support and patient care, learning, and research and development, EBSCO provides institutions with access to content and resources to serve the information and workflow needs of their users and organizations. Its participation in the sponsorship program is just one way that EBSCO is involved with MathJax. EBSCO also uses MathJax to ensure that the mathematical equations are optimally displayed when they appear in its research databases.</p>
<p>EBSCO Information Services Vice President of Database Partnerships, Ryan Bernier, said, “MathJax improves accessibility, readability and interpretation of equations on both desktop and mobile devices. As a provider of STEM e-journals and databases including MathSciNet, EBSCO is proud to support the development and enhancement of MathJax.”</p>
<p>MathJax’s lead developer responds: “We are pleased to partner with EBSCO to help bring their quality research content on line. EBSCO’s ongoing contributions to MathJax allow us to develop new features, and help maintain MathJax as a key component for accessible mathematics on the web.”</p>
<p>The MathJax team looks forward to continued collaboration with EBSCO and welcomes its support for the MathJax project.</p>
MathJax v3.1.2 now availablehttps://www.mathjax.org/MathJax-v3-1-2-available/2020-09-20T00:00:00+00:002020-09-20T00:00:00+00:00The MathJax team is pleased to announce version 3.1.2 of MathJax, released earlier today (version 3.1.1 contained an error that was fixed shortly after it was released). This is a bug-fix release to address several issues that arose from the 3.1.0 release, particularly with the textmacros package for the TeX input jax. It also updates the Speech-Rule Engine to version 3.1.1.
<p>The MathJax team is pleased to announce version 3.1.2 of MathJax, released earlier today (version 3.1.1 contained an error that was fixed shortly after it was released). This is a bug-fix release to address several issues that arose from the 3.1.0 release, particularly with the <code class="language-plaintext highlighter-rouge">textmacros</code> package for the TeX input jax. It also updates the Speech-Rule Engine to version 3.1.1.</p>
<h1 id="bugs-addressed-in-this-release">Bugs Addressed in this release</h1>
<ul>
<li>Fix issue with <code class="language-plaintext highlighter-rouge">\textit</code>, etc., not working with the <code class="language-plaintext highlighter-rouge">textmacros</code> extension enabled. (<a href="https://github.com/mathjax/MathJax/issues/2514">2514</a>)</li>
<li>Add ‘smart quote’ version of acute and grave accents in <code class="language-plaintext highlighter-rouge">textmacros</code> extension. (<a href="https://github.com/mathjax/MathJax/issues/2526">2526</a>)</li>
<li>Add missing support for <code class="language-plaintext highlighter-rouge">\ref</code> and <code class="language-plaintext highlighter-rouge">\eqref</code> in <code class="language-plaintext highlighter-rouge">textmacros</code> extension. (<a href="https://github.com/mathjax/MathJax/issues/2528">2528</a>)</li>
<li>Only ignore space following alphabetic control sequences in <code class="language-plaintext highlighter-rouge">textmacros</code>. (<a href="https://github.com/mathjax/MathJax/issues/2527">2527</a>)</li>
<li>Fix issue with <code class="language-plaintext highlighter-rouge">textmacros</code> causing incorrect display in SVG mode. (<a href="https://github.com/mathjax/MathJax/issues/2524">2524</a>)</li>
<li>Make sure configuration renaming is performed for *-full components. (<a href="https://github.com/mathjax/MathJax/issues/2516">2516</a>)</li>
<li>Handle AsciiMath configuration properly, in particular, <code class="language-plaintext highlighter-rouge">displaystyle</code>. (<a href="https://github.com/mathjax/MathJax/issue/2520">2520</a>)</li>
<li>Convert mu to em in CD environment. (<a href="https://github.com/mathjax/MathJax/issues/2513">2513</a>)</li>
<li>Fix autoload to handle macro or <code class="language-plaintext highlighter-rouge">\begin</code> followed by spaces. (<a href="https://github.com/mathjax/MathJax/issues/2511">2511</a>)</li>
<li>Update <code class="language-plaintext highlighter-rouge">convert()</code> to accept <code class="language-plaintext highlighter-rouge">family</code> parameter (<a href="https://github.com/mathjax/MathJax/issues/2512">2512</a>)</li>
</ul>
<h1 id="changes-in-speech-rule-engine">Changes in Speech-Rule Engine</h1>
<ul>
<li>Introduces handling of direct speech attributes like <code class="language-plaintext highlighter-rouge">aria-label</code>, <code class="language-plaintext highlighter-rouge">alt</code>, <code class="language-plaintext highlighter-rouge">exact-speech</code>.</li>
<li>Handling of elements like <code class="language-plaintext highlighter-rouge">mglyph</code> if they contain a direct speech attribute.</li>
<li>Allows floats as part of mixed numbers.</li>
<li>A number of fixes to the Clearspeak and Nemeth rule sets.</li>
<li>Fixes regression of SVG highlighter.</li>
</ul>
MathJax v3.1.0 now availablehttps://www.mathjax.org/MathJax-v3-1-0-available/2020-08-25T00:00:00+00:002020-08-25T00:00:00+00:00The MathJax team is pleased to announce version 3.1 of MathJax, released earlier today. This is a feature release that includes a number of API improvements, new extensions, and updates to the assistive tools, as described below. It also includes several bug fixes.
<p>The MathJax team is pleased to announce version 3.1 of MathJax, released earlier today. This is a feature release that includes a number of API improvements, new extensions, and updates to the assistive tools, as described below. It also includes several bug fixes.</p>
<p>See the individual issues and pull requests linked below, as well as the <a href="https://docs.mathjax.org/en/v3.1-latest/upgrading/whats-new-3.1.html">What’s new in v3.1</a> section of the MathJax documentation, for more details.</p>
<p>Also note that the demos in the <a href="https://github.com/mathjax/MathJax-demos-node">node examples</a> have been updated and expanded to include examples of using a <a href="https://github.com/mathjax/MathJax-demos-node/tree/master/simple">simplified interface</a> for MathJax in server-side node applications, <a href="https://github.com/mathjax/MathJax-demos-node/tree/master/puppeteer">MathJax with Puppeteer</a>, and <a href="https://github.com/mathjax/MathJax-demos-node/tree/master/jsdom">MathJax with jsdom</a>.</p>
<h2 id="new-features-in-this-release">New Features in this Release</h2>
<ul>
<li>New <code class="language-plaintext highlighter-rouge">textmacros</code> extension for handling some macros in text-mode. (<a href="https://github.com/mathjax/MathJax-src/pull/509">#509</a>)</li>
<li>Add <code class="language-plaintext highlighter-rouge">safe</code> extension and component. (<a href="https://github.com/mathjax/MathJax-src/pull/514">#514</a>)</li>
<li>New German localization for speech output using the expression explorer.</li>
<li>Updated options within the accessibility contextual menu. (<a href="https://github.com/mathjax/MathJax-src/pull/505">#505</a>)</li>
<li>Allow MathML verification options to be specified in the input jax. (<a href="https://github.com/mathjax/MathJax-src/pull/519">#519</a>)</li>
<li>Add enable/disable options to document handlers for a11y and menu. (<a href="https://github.com/mathjax/MathJax-src/pull/499">#499</a>)</li>
<li>Add configuration options to <code class="language-plaintext highlighter-rouge">noundefined</code> extension. (<a href="https://github.com/mathjax/MathJax-src/pull/507">#507</a>)</li>
<li>Fix problems with <code class="language-plaintext highlighter-rouge">mtextInheritFont</code>, and provide new <code class="language-plaintext highlighter-rouge">mtextFont</code> option. (<a href="https://github.com/mathjax/MathJax/issues/2189">mathjax/MathJax#2189</a>)</li>
<li>Make <code class="language-plaintext highlighter-rouge">formatError</code> a configuration option for tex input jax. (<a href="https://github.com/mathjax/MathJax-src/pull/483">#483</a>)</li>
<li>Improve <code class="language-plaintext highlighter-rouge">startup.promise</code> so it is always valid. (<a href="https://github.com/mathjax/MathJax/issues/2189">mathjax/MathJax#2307</a>)</li>
<li>Add functions to manage math items within a given container. (<a href="https://github.com/mathjax/MathJax-src/issues/351">#351</a>)</li>
<li>General improvements to input/output errors. (<a href="https://github.com/mathjax/MathJax-src/pull/491">#491</a>)</li>
<li>Allow MathML verification options to be specified in the input jax. (<a href="https://github.com/mathjax/MathJax-src/pull/519">#519</a>)</li>
<li>Update string processing to handle SMP unicode blocks better. (<a href="https://github.com/mathjax/MathJax-src/pull/504">#504</a>)</li>
<li>Add TeX error as <code class="language-plaintext highlighter-rouge">data-mjx-error</code>, similar to compile/typeset errors. (<a href="https://github.com/mathjax/MathJax-src/pull/490">#490</a>)</li>
</ul>
<h2 id="file-location-changes">File Location Changes</h2>
<ul>
<li>Normalize extension names to all lowercase with no underscores. (<a href="https://github.com/mathjax/MathJax-src/pull/485">#485</a>)</li>
<li>Remove MathItem <code class="language-plaintext highlighter-rouge">bbox</code> property. (<a href="https://github.com/mathjax/MathJax-src/pull/495">#495</a>)</li>
<li>Move <code class="language-plaintext highlighter-rouge">output/common/BBox.ts</code> to util directory. (<a href="https://github.com/mathjax/MathJax-src/pull/494">#494</a>)</li>
<li>Move <code class="language-plaintext highlighter-rouge">output/common/CssStyles.ts</code> to <code class="language-plaintext highlighter-rouge">util/StyleList.ts</code>. (<a href="https://github.com/mathjax/MathJax-src/pull/493">#493</a>)</li>
</ul>
<h2 id="bug-fixes-in-this-release">Bug Fixes in this Release</h2>
<ul>
<li>Fix LiteDOM comments and add support for DOCTYPE. (<a href="https://github.com/mathjax/MathJax-src/pull/523">#523</a>)</li>
<li>Remove ids from assistive MathML to avoid duplicates. (<a href="https://github.com/mathjax/MathJax-src/pull/525">#525</a>)</li>
<li>Fix SRE source location to work in node-main and components. (<a href="https://github.com/mathjax/MathJax-src/pull/521">#521</a>)</li>
<li>Don’t replace stylesheet unnecessarily. (<a href="https://github.com/mathjax/MathJax/issues/2454">mathjax/MathJax#2454</a>)</li>
<li>Properly inherit <code class="language-plaintext highlighter-rouge">scriptminsize</code> and <code class="language-plaintext highlighter-rouge">scriptsizemultiplier</code>. (<a href="https://github.com/mathjax/MathJax-src/pull/515">#515</a>)</li>
<li>Fix processing of <code class="language-plaintext highlighter-rouge">texClass</code> for multi-character <code class="language-plaintext highlighter-rouge"><mi></code> elements. (<a href="https://github.com/mathjax/MathJax-src/pull/503">#503</a>)</li>
<li>Fix <code class="language-plaintext highlighter-rouge">node-main</code> to be able to load SRE more easily. (<a href="https://github.com/mathjax/MathJax-src/pull/479">#479</a>)</li>
<li>Fix problems with <code class="language-plaintext highlighter-rouge">texClass</code>. (<a href="https://github.com/mathjax/MathJax-src/pull/512">#512</a>)</li>
<li>Handle <code class="language-plaintext highlighter-rouge">classList</code> when elements don’t have it. (<a href="https://github.com/mathjax/MathJax/issues/2411">mathjax/MathJax#2411</a>)</li>
<li>Make <code class="language-plaintext highlighter-rouge">\underset</code> explicitly turn off movablelimits. (<a href="https://github.com/mathjax/MathJax/issues/2460">mathjax/MathJax#2460</a>)</li>
<li>Make <code class="language-plaintext highlighter-rouge">\boldsymbol\partial</code> work properly. (<a href="https://github.com/mathjax/MathJax/issues/2417">mathjax/MathJax#2417</a>)</li>
<li>Fix issue with <code class="language-plaintext highlighter-rouge">\overbrace</code> in SVG output. (<a href="https://github.com/mathjax/MathJax/issues/2402">mathjax/MathJax#2402</a>)</li>
<li>Fix processing of root directory under Windows. (<a href="https://github.com/mathjax/MathJax/issues/2486">mathjax/MathJax#2486</a>)</li>
<li>Allow spaces after \begin, \end, and \ref when finding math delimiters. (<a href="https://github.com/mathjax/MathJax/issues/2494">mathjax/MathJax#2494</a>)</li>
<li>Fix problem with maction when the math is converted from a string. (<a href="https://github.com/mathjax/MathJax/issues/2490">mathjax/MathJax#2490</a>)</li>
<li>Fix Unicode mapping of \ncong (<a href="https://github.com/mathjax/MathJax/issues/2497">mathjax/MathJax#2497</a>)</li>
<li>Remove extra remapping of stretchy characters (<a href="https://github.com/mathjax/MathJax/issues/2497">mathjax/MathJax#2497</a>)</li>
</ul>
<h2 id="availability-of-310">Availability of 3.1.0</h2>
<p>Although version 3.1.0 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.1.0 immediately if you are loading mathjax using a generic <code class="language-plaintext highlighter-rouge">mathjax@2</code> URL. You should be able to obtain it immediately if you use the full version <code class="language-plaintext highlighter-rouge">mathjax@3.1.0</code>.</p>
<p>You may also have a cached version in your browser, so 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).</p>
<p>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 for until the CDN versions stabilize, which should be within a day. If you are loading one of the combined components (e.g., <code class="language-plaintext highlighter-rouge">tex-chml.js</code>), this is less likely to be an issue, and if you are loading a component ending in <code class="language-plaintext highlighter-rouge">-full</code> it is even less likely to occur.</p>
<p>Version 3.1.0 is available immediately from npm and GitHub for use in node applications.</p>
MathJax v2.7.9 now availablehttps://www.mathjax.org/MathJax-v2-7-9-available/2020-08-25T00:00:00+00:002020-08-25T00:00:00+00:00The MathJax team is happy to release version 2.7.9 of MathJax, which updates the version of the Speech-Rule Engine (SRE) that underlies MathJax’s accessibility features. MathJax now uses version 3.1 of SRE, which includes new languages (German and French), and access to the Clearspeak rules via the accessibility menu. It also includes bug fixes in SRE, and faster conversion of expressions to speech. See the SRE release notes for details (note that MathJax was using version 2.4 previously, and there have been a number of updates since that version).
<p>The MathJax team is happy to release version 2.7.9 of MathJax, which updates the version of the Speech-Rule Engine (SRE) that underlies MathJax’s accessibility features. MathJax now uses version 3.1 of SRE, which includes new languages (German and French), and access to the Clearspeak rules via the accessibility menu. It also includes bug fixes in SRE, and faster conversion of expressions to speech. See the <a href="https://github.com/zorkow/speech-rule-engine/releases">SRE release notes</a> for details (note that MathJax was using version 2.4 previously, and there have been a number of updates since that version).</p>
<p>MathJax 2.7.9 also updates the a11y extensions to version 1.6.0 to take advantage of the new SRE version.</p>
<h2 id="mathjax-and-cdnjs">MathJax and CDNJS</h2>
<p>MathJax is hosted by a number of different CDNs. For version 2, we had been recommending <code class="language-plaintext highlighter-rouge">cdnjs.cloudflare.com</code>, which had served us well for many years. Now that MathJax has released version 3, it appears that <code class="language-plaintext highlighter-rouge">cdnjs</code> is no longer picking up earlier versions, so version 2.7.9 has not appeared there. That means version 2.7.9 cannot be obtained from <code class="language-plaintext highlighter-rouge">cdnjs</code>, and the <code class="language-plaintext highlighter-rouge">latest.js</code> file will not update automatically to this version</p>
<p>In order to use MathJax v2.7.9, you will need to change the CDN to one of the other ones that does provide all versions of MathJax. Our current recommendation is <code class="language-plaintext highlighter-rouge">jsdelivr</code>, which provides all past versions, as well as an automatic latest version if you wish. For example, you can use</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cdn.jsdelivr.net/npm/mathjax@2/MathJax.js
</code></pre></div></div>
<p>to obtain the latest version 2 release (2.7.9 currently). Alternatively, you can request a specific version and stay at it until you are ready to change to a new version, e.g.,</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cdn.jsdelivr.net/npm/mathjax@2.7.9/MathJax.js
</code></pre></div></div>
<p>will keep you at version 2.7.9 until you change the version number yourself.</p>
<p>Other CDNs are listed in the <a href="http://docs.mathjax.org/en/latest/web/start.html#using-mathjax-from-a-content-delivery-network-cdn">MathJax documentation</a>, in case you prefer one of the alternatives.</p>
<h2 id="availability-of-279">Availability of 2.7.9</h2>
<p>Although version 2.7.9 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 v2.7.9 immediately if you are loading mathjax using a generic <code class="language-plaintext highlighter-rouge">mathjax@2</code> URL. You should be able to obtain it immediately if you use the full version <code class="language-plaintext highlighter-rouge">mathjax@2.7.9</code>.</p>
<p>You may also have a cached version in your browser, so 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).</p>
<p>Version 2.7.9 is available immediately from npm and GitHub for use in node applications.</p>
Springer Nature continues as MathJax supporterhttps://www.mathjax.org/springer-nature-continues-as-mathjax-supporter-2020/2020-06-16T00:00:00+00:002020-06-16T00:00:00+00:00Springer Nature continues to support the MathJax project as a MathJax Supporter. Springer Nature describes themselves as follows:
<p><a href="http://www.springernature.com/">Springer Nature</a> continues to support the MathJax project as a MathJax Supporter. Springer Nature describes themselves as follows:</p>
<p>“Springer Nature advances discovery by providing the best possible service to the whole research community. We make sure all the research we publish is significant, robust and stands up to objective scrutiny and reaches all relevant audiences in the best possible format so it can be discovered, accessed, used, re-used and shared. We support librarians with innovation in technology and data; and provide quality publishing support to societies. Springer Nature is home to trusted brands including Springer, Nature Research, BMC, Palgrave Macmillan and Scientific American. For more information please visit <a href="https://www.springernature.com">springernature.com</a> and <a href="https://www.facebook.com/SpringerNature/">@SpringerNature</a>.”</p>
<p>“The quality of our online publications relies on accurate display of mathematical content”, they continue. “MathJax is critical to achieving this. We are pleased to continue our sponsorship of MathJax and engage with its team as well as a community dedicated to the advancement of mathematics on the web.”</p>
<p>MathJax’s lead developer responds: “We value the contribution that Springer Nature makes to science, and their support of the MathJax project. Springer’s ongoing donations to MathJax allow us to develop new features, and help maintain MathJax as a key component for accessible mathematics on the web.”</p>
<p>The MathJax team looks forward to continuing the collaboration with Springer and welcomes their ongoing support for the MathJax project.</p>
The London Mathematical Society continues as MathJax supporterhttps://www.mathjax.org/the-london-mathematical-society-continues-as-mathjax-supporter-2020/2020-05-29T00:00:00+00:002020-05-29T00:00:00+00:00The London Mathematical Society continues to support MathJax as a MathJax Supporter.
<p>The <a href="http://lms.ac.uk/">London Mathematical Society</a> continues to support MathJax as a MathJax Supporter.</p>
<p>The London Mathematical Society (LMS) is the major UK learned society for mathematics with a nationwide and international membership. The LMS offers a rich publishing program, provides a diverse grant program, and organizes scientific meetings and lectures. Beyond that, the LMS contributes to public debate on matters affecting mathematics and mathematics education.</p>
<p>“The London Mathematical Society ensures that MathJax is used for rendering browser-friendly mathematics in its journals”, said Caroline Wallace, Executive Secretary, LMS. “Provision of full-text HTML along with the PDF is now the publishing standard. MathJax provides a particularly simple means of rendering mathematics in HTML because of its ability to display embedded LaTeX equations. The LMS is proud to support the continued development and enhancement of MathJax to ensure that it remains up to date, versatile, and continues to offer fluid rendering of mathematical web pages.”</p>
<p>“We value the continuing support of the London Mathematical Society as one of our key sponsors”, said Davide Cervone, MathJax lead developer and project manager. “Their support helps us to maintain and improve MathJax, so that MathJax remains reliable, flexible, and open source into the future.”</p>
<p>We look forward to continuing our collaboration with the LMS, and welcome their ongoing support for the MathJax project.</p>
MathJax v3.0.5 now availablehttps://www.mathjax.org/MathJax-v3-0-5-available/2020-04-10T00:00:00+00:002020-04-10T00:00:00+00:00Last August, the MathJax Consortium quietly released version 3.0.0 of MathJax, a complete rewrite of MathJax from the ground up with the goal of modernizing MathJax’s internal infrastructure, bringing it more flexibility for use with contemporary web technologies, making it easier to use with NodeJS for pre-processing and server-side support, and making it faster to render your mathematics.
<p>Last August, the MathJax Consortium quietly released version 3.0.0 of MathJax, a complete rewrite of MathJax from the ground up with the goal of modernizing MathJax’s internal infrastructure, bringing it more flexibility for use with contemporary web technologies, making it easier to use with NodeJS for pre-processing and server-side support, and making it faster to render your mathematics.</p>
<p>Because this was a major update to MathJax, with a completely new application programmer interface (API), and because not all the MathJax version 2 features were ported to version 3, we wanted to wait a bit before making a formal announcement of the new version. During the fall, we collected bug reports and responded to requests for code examples, and in early February 2020, we released version 3.0.1, a bug-fix version that resolved a number of important issues with 3.0.0.</p>
<p>Today, we release version 3.0.5, which fixes additional bugs, and puts MathJax v3 into a stable enough position to warrant formal announcement of the availability of version 3. Note that versions 3.0.2 and 3.0.3 had problems with their <code class="language-plaintext highlighter-rouge">npm</code> deployment, and have been removed. Version <a href="https://github.com/mathjax/MathJax-src/releases/tag/3.0.4">3.0.4</a> is the bug-fix release that fixes most issues that have been reported in v3.0.1, and v3.0.5 is a hot-fix release to resolve an important problem with v3.0.4.</p>
<p>We are pleased to present this result of over three years of work by the MathJax developers. The following material comes from the <a href="">What’s New in v3</a> section of the <a href="http://docs.mathjax.org/en/latest/index.html">MathJax documentation</a>.</p>
<p>For information about converting from version 2 to version 3, see the section on <a href="http://docs.mathjax.org/en/latest/upgrading/v2.html">Upgrading from v2</a>. In particular, note that there is a <a href="https://mathjax.github.io/MathJax-demos-web/convert-configuration/convert-configuration.html">configuration conversion tool</a> to help you move your version 2 configuration to the new version 3 format. There are a number of examples for using MathJax in web pages in the <a href="https://github.com/mathjax/MathJax-demos-web#mathjax-demos-web">MathJax Web Demos</a> repository, and examples of using MathJax in NodeJS applications in the <a href="https://github.com/mathjax/MathJax-demos-node#mathjax-demos-node">MathJax Node Demos</a> repository.</p>
<h1 id="features-of-version-3">Features of Version 3</h1>
<h2 id="improved-speed">Improved Speed</h2>
<p>There were a number of design goals to the version 3 rewrite. A primary one was to improve the rendering speed of MathJax, and we feel we have accomplished that. Because the two versions operate so differently, it is difficult to make precise comparisons, but in tests that render a complete page with several hundred expressions, we see a reduction in rendering time of between 60 and 80 percent, depending on the browser and type of computer.</p>
<h2 id="more-flexibility">More Flexibility</h2>
<p>Another goal was to make MathJax 3 more flexible for web developers using MathJax as part of a larger framework, while still keeping it easy to use in simple settings. To that end, we have broken down the actions that MathJax takes into smaller units than in version 2, and made it possible to call on them individually, or replace them with alternative versions of your own. For example, the typesetting process has been broken into a number of pieces, including finding the math in the page, compiling it into the internal format (MathML), getting metric data for the location of the math, converting the math into the output format, inserting it into the page, adding menu event handlers, and so on. You have control over which of these to perform, and can modify or remove the existing actions, or add new ones of your own. See the <a href="http://docs.mathjax.org/en/latest/options/document.html#document-renderactions"><code class="language-plaintext highlighter-rouge">renderActions</code></a> documentation for details.</p>
<h2 id="improved-support-for-assistive-technology">Improved Support for Assistive Technology</h2>
<p>Accessibility of mathematics has always been an important focus of MathJax, and that continues to be the case in version 3. The speech-rule engine (SRE) that underlies most of MathJax’s assistive support has been improved for version 3 to include more sophisticated speech generation, support for Nemeth Braille output, localization in several languages, and more user control over the speech that is generated. See the <a href="http://docs.mathjax.org/en/latest/basic/accessibility.html#accessibility">Accessibility Features</a> page for more details.</p>
<h2 id="synchronous-conversion">Synchronous Conversion</h2>
<p>A key feature that we wanted to include in version 3 is the ability to run MathJax synchronously, and in particular, to provide a function that can translate an input string (say a TeX expression) into an output DOM tree (say an SVG image). This was not really possible in version 2, since its operation was inherently asynchronous at a fundamental level. With MathJax version 3, this is straight-forward, as we provide a synchronous typesetting path, both within the page, and for individual expressions, provided you load all the components you need ahead of time. See <a href="http://docs.mathjax.org/en/latest/web/typeset.html#web-typeset">Typesetting and Converting Mathematics</a> for details.</p>
<h2 id="no-queues-signals-callbacks">No Queues, Signals, Callbacks</h2>
<p>One of the more difficult aspects of working with MathJax version 2 was having to synchronize your actions with those of MathJax. This involved using <em>queues</em>, <em>callbacks</em>, and <em>signals</em> to mediate the asynchronous actions of MathJax. Since these were not standard javascript paradigms, they caused confusion (and headaches) for many developers trying to use MathJax. With version 3, MathJax has the option of working synchronously (as described above), but it still allows for asynchronous operation (<em>e.g.</em>, to allow TeX’s <code class="language-plaintext highlighter-rouge">\require</code> command to load extensions dynamically) if you wish. This no longer relies on queues, callbacks, and signals, however. Instead, these actions are managed through the ES6 <a href="https://developers.google.com/web/fundamentals/primers/promises">promise</a>, which is a javascript standard and should make integrating MathJax into your own applications more straight-forward.</p>
<h2 id="package-manager-support">Package Manager Support</h2>
<p>Because MathJax version 2 used its own loading mechanism for accessing its components, and because there was no method for combining all the pieces needed by MathJax into one file, MathJax did not work well with javascript packaging systems like <code class="language-plaintext highlighter-rouge">webpack</code>. Version 3 resolves that problem, so it should interoperate better with modern web workflows. You can make your own custom single-file builds of MathJax (see <a href="http://docs.mathjax.org/en/latest/web/webpack.html#web-custom-build">Making a Custom Build of MathJax</a>), or can include it as one component of a larger asset file.</p>
<h2 id="mathjax-components">MathJax Components</h2>
<p>MathJax 3 still provides a loading mechanism similar to the one from version 2, however, so you can customize the extensions that it loads, meaning that you only load the ones you need (though this does require that you use MathJax in its asynchronous mode). The various pieces of MathJax have been packaged into “components” that can be mixed and matched as needed, and which you configure through a global <code class="language-plaintext highlighter-rouge">MathJax</code> variable (see <a href="http://docs.mathjax.org/en/latest/web/examples.html#web-examples">Examples in a Browser</a>). This is how MathJax is being distributed through the various CDNs that host it. When loaded this way, MathJax will automatically set up all the objects and functions that you need to use the components you have loaded, giving you easy access to typesetting and conversion functions for the input and output formats you have selected. See the section on <a href="http://docs.mathjax.org/en/latest/web/components/index.html#web-components">The MathJax Components</a> for more information. You can also create your own custom components to complement or replace the ones provided on the CDN (see <a href="http://docs.mathjax.org/en/latest/web/webpack.html#custom-extension">A Custom Extension</a> for more).</p>
<h2 id="startup-actions">Startup Actions</h2>
<p>If you use any of the <a href="http://docs.mathjax.org/en/latest/web/components/combined.html#combined-components">combined component</a> files, MathJax will perform a number of actions during its startup process. In particular, it will create the input and output jax, math document, DOM adaptor, and other objects that are needed in order to perform typesetting in your document. You can access these through the <code class="language-plaintext highlighter-rouge">MathJax.startup</code> object, if you need to. MathJax will also set up functions that perform typesetting for you, and conversion between the various input and output formats that you have loaded. This should make it easy to perform the most important actions available in MathJax. See <a href="http://docs.mathjax.org/en/latest/web/typeset.html#web-typeset">Typesetting and Converting Mathematics</a> for more details.</p>
<h2 id="server-side-mathjax">Server-Side MathJax</h2>
<p>While MathJax 2 was designed for use in a web browser, an important use case that this left unaddressed is pre-processing mathematics on a server. For version 2, we provided <a href="https://github.com/mathjax/mathjax-node">mathjax-node</a> to fill this gap, but it is not as flexible or easy to use as many would have liked. MathJax 3 resolves this problem by being designed to work with node applications in essentially the same way as in a browser. That is, you can load MathJax components, configure them through the MathJax global variable, and call the same functions for typesetting and conversion as you do within a browser. This makes parallel development for both the browser and server much easier.</p>
<p>Moreover, node applications can access MathJax modules directly (without the packaging used for MathJax components). This gives you the most direct access to MathJax’s features, and the most flexibility in modifying MathJax’s actions. See <a href="http://docs.mathjax.org/en/latest/server/examples.html#node-examples">Examples of MathJax in Node</a> for examples of how this is done.</p>
<h2 id="es6-and-typescript">ES6 and Typescript</h2>
<p>MathJax 3 is written using ES6 modules and the <a href="https://www.typescriptlang.org/">Typescript</a> language. This means the source code includes type information (which improves the code reliability), and allows MathJax to be down-compiled to ES5 for older browsers while still taking advantage of modern javascript programming techniques. It also means that you can produce pure ES6 versions of MathJax (rather than ES5) if you wish; these should be smaller and faster than their ES5 equivalents, though they will only run in modern browsers that support ES6, and so limit your readership. We may provide both ES6 and ES5 versions on the CDN in the future.</p>
<h1 id="new-features-for-existing-components">New Features for Existing Components</h1>
<p>In addition to the new structure for MathJax described above, some new features have been added to existing pieces of MathJax.</p>
<h2 id="tex-input-extensions">TeX Input Extensions</h2>
<p>There are two new TeX input extensions: <a href="http://docs.mathjax.org/en/latest/input/tex/extensions/braket.html#tex-braket">braket</a> and <a href="http://docs.mathjax.org/en/latest/input/tex/extensions/braket.html#tex-braket">physics</a>. Also, some functionality that was built into the TeX input jax in version 2 has been moved into extensions in version 3. This includes the <a href="http://docs.mathjax.org/en/latest/input/tex/extensions/configMacros.html#tex-configmacros">macros</a> configuration option, the <a href="http://docs.mathjax.org/en/latest/input/tex/extensions/tagFormat.html#tex-tagformat">tag formatting</a> configuration options, and the <a href="http://docs.mathjax.org/en/latest/input/tex/extensions/require.html#tex-require">require</a> macro. The new <a href="http://docs.mathjax.org/en/latest/input/tex/extensions/autoload.html#tex-autoload">autoload</a> extension replaces the older autoload-all extension, is more configurable, and is included in the TeX input components by default. There a several extensions that are not yet ported to version 3, including the <code class="language-plaintext highlighter-rouge">autobold</code>, <code class="language-plaintext highlighter-rouge">mediawiki-texvc</code>, and the various third-party extensions.</p>
<h2 id="svg-output">SVG Output</h2>
<p>The SVG output for equations with labels has been improved so that the positions of the labels now react to changes in the container width (just like they do in the HTML output formats).</p>
<h2 id="improved-expression-explorer">Improved Expression Explorer</h2>
<p>The interactive expression explorer has been improved in a number of ways. It now includes better heuristics for creating the speech text for the expressions you explore, provides more keyboard control of the features in play during your exploration, adds support for braille output, adds support for zooming on subexpressions, and more. See the <a href="http://docs.mathjax.org/en/latest/basic/accessibility.html#accessibility">Accessibility Features</a> page for more details.</p>
MathJax v2.7.8 now availablehttps://www.mathjax.org/MathJax-v2-7-8-available/2020-04-08T00:00:00+00:002020-04-08T00:00:00+00:00It has been some time since there was a bug-fix release for MathJax version 2. This is largely due to our efforts to produce version 3, which was a complete rewrite of MathJax, so was pretty time-intensive. Now that version 3 is out, we have been able to return to version 2.7 for a welcome update.
<p>It has been some time since there was a bug-fix release for MathJax version 2. This is largely due to our efforts to produce version 3, which was a complete rewrite of MathJax, so was pretty time-intensive. Now that version 3 is out, we have been able to return to version 2.7 for a welcome update.</p>
<p>We are happy to release version 2.7.8, which fixes a number of bugs, many of them long-standing ones. It also adds a new extension to handle some tex-mode macros inside <code class="language-plaintext highlighter-rouge">\text{}</code> and similar commands.</p>
<h2 id="mathjax-and-cdnjs">MathJax and CDNJS</h2>
<p>MathJax is hosted by a number of different CDNs. For version 2, we had been recommending <code class="language-plaintext highlighter-rouge">cdnjs.cloudflare.com</code>, which had served us well for many years. Now that MathJax has released version 3, it appears that <code class="language-plaintext highlighter-rouge">cdnjs</code> is no longer picking up earlier versions, so version 2.7.8 has not appeared there. That means version 2.7.8 can not be obtained from <code class="language-plaintext highlighter-rouge">cdnjs</code>, and the <code class="language-plaintext highlighter-rouge">latest.js</code> file will not update automatically to this version</p>
<p>In order to use MathJax v2.7.8, you will need to change the CDN to one of the other ones that does provide all versions of MathJax. Our current recommendation is <code class="language-plaintext highlighter-rouge">jsdelivr</code>, which provides all past versions, as well as an automatic latest version if you wish. For example, you can use</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cdn.jsdelivr.net/npm/mathjax@2/MathJax.js
</code></pre></div></div>
<p>to obtain the latest version 2 release (2.7.8 currently). Alternatively, you can request a specific version and stay witht at until you are ready to change to a new version, e.g.,</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cdn.jsdelivr.net/npm/mathjax@2.7.8/MathJax.js
</code></pre></div></div>
<p>will keep you at version 2.7.8 until you change the version number yourself.</p>
<p>Other CDNs are listed in the <a href="http://docs.mathjax.org/en/latest/web/start.html#using-mathjax-from-a-content-delivery-network-cdn">MathJax documentation</a>, in case you prefer one of the alternatives.</p>
<h2 id="bug-fixes-in-this-version">Bug Fixes in this Version</h2>
<p>The following bug fixes are included in version 2.7.8:</p>
<h3 id="output-issues">Output issues</h3>
<ul>
<li>
<p>Fix <code class="language-plaintext highlighter-rouge">displayIndent</code> in CHTML with floating elements. (<a href="https://github.com/mathjax/MathJax/issues/2352">#2352</a>)</p>
</li>
<li>
<p>Add skew values to STIX font italic and bold-italic characters in Plane 1. (<a href="https://github.com/mathjax/MathJax/issues/2050">#2050</a>)</p>
</li>
<li>
<p>Fix CHTML <code class="language-plaintext highlighter-rouge">mroot</code> positioning to match SVG and HTML-CSS. (<a href="https://github.com/mathjax/MathJax/issues/2143">#2143</a>)</p>
</li>
<li>
<p>Make line breaks cause full-width bounding box when they are at the top level. (<a href="https://github.com/mathjax/MathJax/issues/1804">#1804</a>)</p>
</li>
<li>
<p>Fix problem with italic correction not being removed from integrals after a line break. (<a href="https://github.com/mathjax/MathJax/issues/2139">#2139</a>)</p>
</li>
<li>
<p>Fix scaling of enclosures in zoomed CHTML. (<a href="https://github.com/mathjax/MathJax/issues/1815">#1815</a>)</p>
</li>
<li>
<p>Use proper spacing for <code class="language-plaintext highlighter-rouge">mstyle</code> containing a stretchy operator. (<a href="https://github.com/mathjax/MathJax/issues/2052">#2052</a>)</p>
</li>
<li>
<p>Add some missing stretchy character data. (<a href="https://github.com/mathjax/MathJax/issues/2135">#2135</a>)</p>
</li>
<li>
<p>Add CSS to fix RTL issue in Chrome. (<a href="https://github.com/mathjax/MathJax/issues/2190">#2190</a>)</p>
</li>
<li>
<p>Fix over-wide SVG output when <code class="language-plaintext highlighter-rouge">\vphantom</code> is used. (<a href="https://github.com/mathjax/MathJax/issues/1637">#1637</a>)</p>
</li>
<li>
<p>Scale <code class="language-plaintext highlighter-rouge">mglyphs</code> to proper script size. (<a href="https://github.com/mathjax/MathJax/issues/#2125">#2125</a>)</p>
</li>
<li>
<p>Make sure SVG elements are scaled properly in <code class="language-plaintext highlighter-rouge">menclose</code> for CHTML (<a href="https://github.com/mathjax/MathJax/issues/2089">#2089</a>)</p>
</li>
<li>
<p>Properly handle <code class="language-plaintext highlighter-rouge">'fit'</code> columns in percentage-width tables. (<a href="https://github.com/mathjax/MathJax/issues/2075">#2075</a>)</p>
</li>
<li>
<p>Correct offset into Math Alphabet for bold-italic in STIX font data. (<a href="https://github.com/mathjax/MathJax/issues/2035">#2035</a>)</p>
</li>
</ul>
<h2 id="tex-input">TeX Input</h2>
<ul>
<li>
<p>Don’t add <code class="language-plaintext highlighter-rouge">\text</code> to operators whose name already include it. (<a href="https://github.com/mathjax/MathJax/issues/2222">#2222</a>)</p>
</li>
<li>
<p>Allow <code class="language-plaintext highlighter-rouge">\newline</code> to work like <code class="language-plaintext highlighter-rouge">\\</code>. (<a href="https://github.com/mathjax/MathJax/issues/2141">#2141</a>)</p>
</li>
<li>
<p>Use proper spacing for <code class="language-plaintext highlighter-rouge">\mathrel</code> in align environment. (<a href="2175">#2175</a>)</p>
</li>
<li>
<p>Number a single <code class="language-plaintext highlighter-rouge">split</code> environment when <code class="language-plaintext highlighter-rouge">autoNumber</code> is <code class="language-plaintext highlighter-rouge">'all'</code>. (<a href="https://github.com/mathjax/MathJax/issues/2272">#2272</a>, <a href="https://github.com/mathjax/MathJax/issues/1811">#1811</a>)</p>
</li>
<li>
<p>[mediawiki-texvc.js] drop redefinition of <code class="language-plaintext highlighter-rouge">\oint</code> (<a href="https://github.com/mathjax/MathJax/issues/2095">#2095</a>)</p>
</li>
<li>
<p>Add extension to process some text-mode macros (<a href="https://github.com/mathjax/MathJax/issues/2051">#2051</a>)</p>
</li>
<li>
<p>Fix handing of unbalanced braces in TeX input. (<a href="https://github.com/mathjax/MathJax/issues/2036">#2036</a>)</p>
</li>
</ul>
<h2 id="miscellaneous">Miscellaneous</h2>
<ul>
<li>
<p>Update mhchem, SRE, and AsciiMath to current versions (<a href="https://github.com/mathjax/MathJax/issues/2344">#2344</a>)</p>
</li>
<li>
<p>Allow <code class="language-plaintext highlighter-rouge">tex2jax</code> end delimiters to be close braces. (<a href="https://github.com/mathjax/MathJax/issues/2034">#2034</a>)</p>
</li>
<li>
<p>Remove references to <code class="language-plaintext highlighter-rouge">cdn.mathjax.org</code>. (<a href="https://github.com/mathjax/MathJax/issues/2160">#2160</a>)</p>
</li>
</ul>
Taylor & Francis continues as MathJax Supporterhttps://www.mathjax.org/taylor-francis-continues-as-mathjax-supporter-2020/2020-03-20T00:00:00+00:002020-03-20T00:00:00+00:00Taylor & Francis continues to support MathJax as a MathJax Supporter.
<p><a href="http://www.taylorandfrancisgroup.com/">Taylor & Francis</a> continues to support MathJax as a <a href="/#supporters">MathJax Supporter</a>.</p>
<p>Taylor & Francis, a division of <a href="http://www.informa.com/">Informa plc</a>, is a leading international academic publisher with more than 2,700 journals, over 7,000 new books each year, and a books backlist in excess of 140,000 specialist titles. Access to all journals from Taylor & Francis, Routledge and Psychology Press is provided by T&F’s state-of-the art platform <a href="http://tandfonline.com">Taylor & Francis Online</a> where MathJax provides beautiful, accessible mathematics in publications such as the journals of the <a href="http://amstat.tandfonline.com/">American Statistical Association</a> and the <a href="https://maa.tandfonline.com/">Mathematical Association of America</a>.</p>
<p>Paul Naish, Global Head of Portfolio for Mathematics & Statistics at Taylor & Francis, noted “Taylor & Francis are dedicated supporters of MathJax since 2014. It provides elegant, accurate, and adaptive mathematical equations in any browser which is crucial to researchers in multiple disciplines across the globe.”</p>
<p>“Thanks to the dedication of sponsors like Taylor & Francis, we are able to continue to improve MathJax as we move forward with MathJax version 3,” comments Davide Cervone, MathJax lead developer and project manager. “The support we receive from the team at Taylor & Francis is invaluable in achieving our mission to make mathematics an integral part of the web.”</p>
<p>We look forward to continuing the collaboration with Taylor & Francis, and welcome their ongoing participation in the MathJax project.</p>
MathJax v2.7.6 now availablehttps://www.mathjax.org/mathjax-v2-7-6-now-available/2019-08-21T00:00:00+00:002019-08-21T00:00:00+00:00We are happy to officially release MathJax v2.7.6 today.
<p>We are happy to officially release MathJax v2.7.6 today.</p>
<p>This is a maintenance release that fixes an issue with the <code class="language-plaintext highlighter-rouge">latest.js</code> file that is used to obtain the most current 2.x version of MathJax from one of the CDNs that serves MathJax. The problem is that the most current version is only obtained if the highest version on the CDN is version 2.x.y for some x and y, so when MathJax goes to version 3.0.0 (scheduled for August 31st), <code class="language-plaintext highlighter-rouge">latest.js</code> will find that the current CDN version is 3.0.0 and (correctly) will not switch to that, but instead will (incorrectly) use the version from which <code class="language-plaintext highlighter-rouge">latest.js</code> was loaded rather than the highest 2.x.y available. This means that when version 3.0 is released, sites using <code class="language-plaintext highlighter-rouge">latest.js</code> will fall back from version 2.7.5 to the version that they specified for <code class="language-plaintext highlighter-rouge">latests.js</code>. MathJax will still run on those pages, but it may be an earlier version than you have been getting in the past.</p>
<p>The new version of <code class="language-plaintext highlighter-rouge">latest.js</code> properly handles the situation when the current version is not 2.x, so switching to</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/latest.js
</code></pre></div></div>
<p>should mean you will get the highest 2.x version in the future, even when v3.0 is released. This version also updates the CDN list to include additional servers, and to remove RawGit, which is no longer in service. Finally, it updates the packed version of the <code class="language-plaintext highlighter-rouge">mhchem</code> TeX extension to version 3.3.0, so that the unpacked and packed versions are the same.</p>
<p>We recommend anyone using <code class="language-plaintext highlighter-rouge">latest.js</code> switch to this version.</p>
MathJax v3 beta.4 releasedhttps://www.mathjax.org/MathJax-v3-beta.4/2019-05-21T00:00:00+00:002019-05-21T00:00:00+00:00The MathJax team has been working hard on a major rewrite of MathJax from the ground up, with the goal of modernizing MathJax’s internal infrastructure, bringing it more flexibility for use with contemporary web technologies, making it easier to use with NodeJS for pre-processing and server-side support, and making it faster to render your mathematics. We have made headway in all these areas and we are pleased to announce the fourth public beta release of MathJax v3.
<p>The MathJax team has been working hard on a major rewrite of MathJax from the ground up, with the goal of modernizing MathJax’s internal infrastructure, bringing it more flexibility for use with contemporary web technologies, making it easier to use with NodeJS for pre-processing and server-side support, and making it faster to render your mathematics. We have made headway in all these areas and we are pleased to announce the fourth public <a href="https://github.com/mathjax/mathjax-v3/releases/tag/3.0.0-beta.4">beta release of MathJax v3</a>.</p>
<h2 id="where-to-find-the-beta-release">Where to Find the Beta Release</h2>
<p>The code for the release is available in the <a href="https://github.com/mathjax/mathjax-v3/tree/beta">beta</a> branch of the <a href="https://github.com/mathjax/mathjax-v3">MathJax v3</a> github repository.</p>
<p>The <a href="https://github.com/mathjax/mj3-demos">mj3-demos repository</a> includes examples of how to use MathJax v3 in web browsers, including interactive examples, custom configurations, custom tex extensions, and custom builds that you can use as a starting point for your own projects. See the instructions in that repository for more details.</p>
<p>The <a href="https://github.com/mathjax/mj3-demos-node">mj3-demos-node repository</a> includes examples for how to use MathJax v3 in NodeJS applications, and includes sample tools and examples of how to use a number of MathJax v3’s features.</p>
<h2 id="whats-included-in-mathjax-v3">What’s Included in MathJax v3</h2>
<p>This beta version includes two input processors (TeX and MathML) and two output processors (CommonHTML and SVG). Other input and output processors (e.g., AsciiMath input) will be added in the future.</p>
<p>The current TeX input processor has all the core functionality of the MathJax v2 TeX input, and nearly all the extensions that are now available in v3.</p>
<p>The CommonHTML and SVG output implement all the MathML elements that they do in v2, but do not yet include support for line breaking (neither automatic nor explicit ones); this will be implemented in a later version. Both output renderers currently only support the MathJax TeX font; other fonts will be added in the future.</p>
<h2 id="whats-new">What’s New</h2>
<p>This beta includes a number of important improvements over the beta.3 version.</p>
<h3 id="mathjax-components">MathJax Components</h3>
<p>The biggest change is the ability to create MathJax “components” that can be dynamically loaded by MathJax as needed (much as could be done in version 2). This allows portions of MathJax to be bundled together into components that include most or all of what you need to run MathJax, but still allows less-used pieces to be loaded on demand later when needed. This is similar to v2’s combined configuration files and TeX extensions.</p>
<p>The main goal of these components is to use them for the delivery of MathJax from the CDNs that host MathJax. This allows you to customize the MathJax components that you use without having to have (as single files on the CDN) every possible combination of parts that anyone would need packaged together. We will provide a number of all-in-one packages that include an input and output jax together with the data for a font to be used, but also will provide separate components for the individual input and output jax, fonts, TeX extensions, and so on, so that you can mix-and-match them as needed.</p>
<p>MathJax components can be used in the browser as well as on the server in <code class="language-plaintext highlighter-rouge">NodeJS</code> applications, so browser and server-side applications can use the same code base and configurations. Components can be combined together into larger packages, either with other MathJax components, or with your own code, via <code class="language-plaintext highlighter-rouge">webpack</code>, for example.</p>
<p>Moreover, the tools for building components are available so that you can create your own custom components that you can serve from your own website if you have special needs not addressed by the CDN. For example, authors writing TeX extensions for MathJa can create their own components that can be loaded into MathJax from a different server even if the core MathJax is loaded from a CDN.</p>
<p>Although components are a convenient way of working with MathJax, those writing <code class="language-plaintext highlighter-rouge">NodeJS</code> scripts that use MathJax need not use the components as we have packaged them at all; they can continue to import MathJax into their projects directly, as in previous beta versions.</p>
<h3 id="configuring-components">Configuring Components</h3>
<p>The component system described above can be configured using a global variable <code class="language-plaintext highlighter-rouge">MathJax</code> that you set before loading the main MathJax component that you are planning to use. The <code class="language-plaintext highlighter-rouge">MathJax</code> variable specifies configuration blocks for the various components in much the same was as was done in version 2 (this is illustrated in the examples below, and described in more detail in a separate section below). MathJax will modify this global variable to include the methods and data that it creates during the startup process for your use in your applications.</p>
<h3 id="rendering-and-converting-math">Rendering and Converting Math</h3>
<p>The mechanism for rendering expressions in previous beta versions of MathJax 3 involved calling a sequence of MathJax commands to perform the individual actions required to find, compile, typeset, and insert the math into the page. These functions are still available, but there are now several new functions to make that process easier and more natural to perform. The <code class="language-plaintext highlighter-rouge">render()</code> method of the <code class="language-plaintext highlighter-rouge">MathDocument</code> and <code class="language-plaintext highlighter-rouge">MathItem</code> classes will perform all the actions normally needed for typesetting math to the page, and the <code class="language-plaintext highlighter-rouge">convert()</code> method will perform conversion from the input format to the output format of the page (or to MathML, which is used internally by MathJax).</p>
<p>These methods use an internal list of actions to be taken when they are called, and those lists are updated automatically when extensions are loaded. For example, when the semantic-enrichment extension is loaded, the action that performs the enrichment is added to <code class="language-plaintext highlighter-rouge">render()</code> and <code class="language-plaintext highlighter-rouge">convert()</code> automatically, so you don’t have to call the extension’s methods yourself. You can even add your own actions to the list, if you want, or could remove the automatic ones to fully customize the rendering process.</p>
<p>If you use the MathJax components described above, MathJax will set up short-hand functions for you for typesetting the page or converting from input to output formats. For example, if you load the <code class="language-plaintext highlighter-rouge">input/tex</code> and <code class="language-plaintext highlighter-rouge">output/chtml</code> components (or the <code class="language-plaintext highlighter-rouge">tex-chtml</code> combonent that combines them), you automatically get methods <code class="language-plaintext highlighter-rouge">Typeset()</code> and <code class="language-plaintext highlighter-rouge">TypesetPromise()</code> for typesetting the page, and <code class="language-plaintext highlighter-rouge">tex2chml()</code>, <code class="language-plaintext highlighter-rouge">tex2chtmlPromise()</code>, <code class="language-plaintext highlighter-rouge">tex2mml()</code>, and <code class="language-plaintext highlighter-rouge">tex2mmlPromise()</code> that convert from TeX to HTML or MathML. You also get <code class="language-plaintext highlighter-rouge">texReset()</code>, <code class="language-plaintext highlighter-rouge">TypesetClear()</code>, and <code class="language-plaintext highlighter-rouge">chtmlStylesheet()</code> that reset TeX’s labels and equation numbers, reset the typesetting system entirely (the information about CSS used, font caches, etc.), and produce the CSS stylesheet object used by CommonHTML for the expressions you have processed so far. The ones ending in <code class="language-plaintext highlighter-rouge">Promise</code> return a promise that is resolved when the math is completed (use this if there is a chance that an external module needs to be loaded, e.g., with <code class="language-plaintext highlighter-rouge">\require</code>), while the others perform the typesetting or conversion and return the result immediately (they will throw an error if an external module needs to be loaded).</p>
<p>If you are using the MathJax components, then the <code class="language-plaintext highlighter-rouge">MathJax.startup</code> object includes references to the important objects created by MathJax automatically, like the input and output jax, the DOM adaptor, and the MathDocument. You may reference these as needed in order to access their methods for more special-purpose needs. Some of the examples below illustrate this.</p>
<h3 id="contextual-menu">Contextual Menu</h3>
<p>A contextual menu similar to the one in version 2 has been added to MathJax v3 in this beta version. It has the actions familiar from version 2, but also includes some new features like copying to the clipboard.</p>
<h3 id="assistive-technology">Assistive Technology</h3>
<p>This beta version now includes support for assistive technology via the generation of speech strings attached to the math elements, and via an interactive expression explorer like the one in version 2. These can be activated using the contextual menu, as in version 2, or by importing the a11y components into your node project or custom webpacked version of MathJax.</p>
<h3 id="commonhtml-css">CommonHTML CSS</h3>
<p>The CommonHTML output now produces only the CSS needed for the expressions on the page, rather than the CSS for every possible character in the font being used. This reduces the number of CSS rules used by CommonHTML considerably, and improves performance of browser refreshes and zooming. If you use <code class="language-plaintext highlighter-rouge">NodeJS</code> applications to preprocess math expressions and capture the CSS output to a separate CSS file, you may need to process all the math expressions before generating the CSS file. Alternatively, there is a new <code class="language-plaintext highlighter-rouge">adaptiveCSS</code> option for the CommonHTML output jax that you can set to <code class="language-plaintext highlighter-rouge">false</code> to have MathJax return to the beta.3 behavior.</p>
<h3 id="svg-font-caching">SVG Font Caching</h3>
<p>The SVG output now includes the option of caching the glyphs used to render the mathematics so that the paths are shared if a character is used more than once. The cache can either be global (all expressions on the page share a common cache) or local (each expression has a cache for glyphs used within it, but they are not shared between expressions). This can be set using the <code class="language-plaintext highlighter-rouge">fontCache</code> option for the SVG jax, and it can be set to <code class="language-plaintext highlighter-rouge">'global'</code>, <code class="language-plaintext highlighter-rouge">'local'</code>, or <code class="language-plaintext highlighter-rouge">'none'</code>. The default is <code class="language-plaintext highlighter-rouge">'local'</code> so that conversion of math to SVG will produce self-contained SVG expressions.</p>
<h3 id="tex-extensions">TeX Extensions</h3>
<p>As part of the new components feature discussed above, the TeX input jax can load TeX extensions in much the same way that v2 could. This is accomplished through the new <code class="language-plaintext highlighter-rouge">require</code> extension that implements the <code class="language-plaintext highlighter-rouge">\require</code> macro to load extensions. There is also and <code class="language-plaintext highlighter-rouge">autoload</code> extension that will load extensions automatically when their macros or environments are first used. These are included in the default <code class="language-plaintext highlighter-rouge">input/tex</code> component, so you if you use that component (or one of the combined components based on it, like <code class="language-plaintext highlighter-rouge">tex-chtml</code> or <code class="language-plaintext highlighter-rouge">tex-svg</code>), you should have access to these extensions automatically. For example, <code class="language-plaintext highlighter-rouge">\require{physics}</code> will load the <code class="language-plaintext highlighter-rouge">physics</code> package.</p>
<p>Another new TeX package is the <code class="language-plaintext highlighter-rouge">configMacros</code> extension that allows you to configure pre-defined macros using the TeX input jax options, much like you could do in v2.</p>
<p>The new <code class="language-plaintext highlighter-rouge">tagFormat</code> extension allows you to customize how tags are handled in MathJax, and provides the equivalent of the <code class="language-plaintext highlighter-rouge">formatNumber()</code>, <code class="language-plaintext highlighter-rouge">formatTag()</code>, <code class="language-plaintext highlighter-rouge">formatID()</code> and <code class="language-plaintext highlighter-rouge">formatURL()</code> options of the TeX <code class="language-plaintext highlighter-rouge">equationNumbers</code> configuration block from v2.</p>
<p>The new <code class="language-plaintext highlighter-rouge">braket</code> extension implements the physics bra-ket notation macros. They will be loaded automatically if you use the <code class="language-plaintext highlighter-rouge">input/tex</code> component, or include the <code class="language-plaintext highlighter-rouge">autoload</code> extension in your project.</p>
<h3 id="color-macro">Color Macro</h3>
<p>In version 2, the <code class="language-plaintext highlighter-rouge">\color</code> macro worked in a non-standard way. The LaTeX <code class="language-plaintext highlighter-rouge">\color</code> macro acts as a switch, to change the current color for all the math that follows it, while the MathJax version took a second argument that enclosed the math to be colored. Version 2 included a <code class="language-plaintext highlighter-rouge">color</code> extension that implemented the LaTeX <code class="language-plaintext highlighter-rouge">\color</code> behavior, but it was not loaded by default.</p>
<p>In version 3, the LaTeX <code class="language-plaintext highlighter-rouge">\color</code> macro will be the default behavior if you are using the <code class="language-plaintext highlighter-rouge">input/tex</code> or <code class="language-plaintext highlighter-rouge">input/tex-full</code> components, or any component build on them (e.g., <code class="language-plaintext highlighter-rouge">tex-chtml</code> or <code class="language-plaintext highlighter-rouge">tex-svg</code>). You can restore the v2 behavior by setting <code class="language-plaintext highlighter-rouge">color: []</code> in the <code class="language-plaintext highlighter-rouge">autoload</code> configuration for the <code class="language-plaintext highlighter-rouge">tex</code> component (when using <code class="language-plaintext highlighter-rouge">input/tex</code>), or by removing the <code class="language-plaintext highlighter-rouge">color</code> extension from the package list using <code class="language-plaintext highlighter-rouge">packages: {'[-]': ['color']}</code> in the <code class="language-plaintext highlighter-rouge">tex</code> configuration (for <code class="language-plaintext highlighter-rouge">input/tex-full</code>).</p>
<h2 id="note">NOTE</h2>
<p>This is the fourth public beta release of MathJax v3.</p>
<p>Mathjax v3 is in beta release. <strong>Do not use this in production</strong>, but please test it and report issues on the <a href="https://github.com/mathjax/mathjax-v3/issues">MathJax v3 issue tracker</a>!</p>
<p>This is the final planned beta version. We expect an official 3.0 release in the near future.</p>