Skip to content

MathJax v3.1.3

Compare
Choose a tag to compare
@dpvc dpvc released this 22 Apr 19:27
· 409 commits to master since this release

This is mostly a bug-fix release, various display bugs and other issues. See the individual bugs linked below for more details, and the 3.1.3 milestone for the pull requests involved in this release.

New Features in this Release

  • The speech-rule engine (SRE) has been updated to v3.2.0. (SRE release notes.)
  • The options controlling the SRE have been separated out from the other assistive options so they can be configured independently. (documentation)
  • The MathDocument reset() command now allows resetting input and output jax. (#647)
  • LaTeX environments can now be defined in the MathJax configuration, just like macros. (mathjax/MathJax#2505) (documentation)
  • Add support for all \mathXYZ and \symXYZ macros (e.g., \mathsfit, \symbfup) and use multi-letter <mi> when possible. (mathjax/MathJax#2595)
  • Add support for trapping and reporting SRE errors. (#679) (documentation)
  • Add ability to trigger links within expressions (via the return key) while using the expression explorer. (#687)
  • Update the mhchem extension to the latest version from the author. (#688)
  • Update AsciiMath to current version. (mathjax/MathJax#2640)

Bugs Addressed in this release

TeX Input Issues

MathML Input Issues

  • Fix problem with loading entity files when MathML input encounters an entity that isn't defined. (mathjax/MathJax#2650)
  • Fix handling of <mrow> nodes that look like \left...\right to be TeX class INNER. (mathjax/MathJax#2584)
  • Don't mark <mrow> nodes as fences if the parentheses aren't stretchy. (#583)
  • Make <mspace> elements have TeX class NONE. (mathjax/MathJax#2576)

Output Issues

  • Fix MathML spacing rules for <mo> elements to better follow the specification. (mathjax/MathJax#2392)
  • Better handling of minimum height and width for SVG (so they don't disappear). (mathjax/MathJax#2605)
  • Fix issues with placement of <menclose> notations. (mathjax/MathJax#2571)
  • Fix several issues with tables (label alignment in CHTML, lines in SVG in tables with tags, vertical centering). (mathjax/MathJax#2601)
  • Update SVG output so that following a link scrolls to the top of the tag rather than the baseline in all browsers. (mathjax/MathJax#2588)
  • Use a colon in link anchor ids so that links work in Safari in SVG output. (mathjax/MathJax#2586)
  • Improve positioning of extenders for stretchy characters. (mathjax/MathJax#2547, mathjax/MathJax#2598)
  • Improve heights of successively larger multi-character surds. (mathjax/MathJax#2658)
  • Handle variant forms for pseudo-scripts better in fonts that have them. (mathjax/MathJax#2519)
  • Allow stylesheet to be obtained even after it was created. (mathjax/MathJax#2542)
  • Correct errors in the horizontal stretchy data for several characters. (#645)
  • Updates to handle smallmatrix environment properly. (#582, #621)
  • Fix problem with selectors for SVG path widths. (mathjax/MathJax#2618)
  • Fix incorrect glyph for script capital I. (mathjax/MathJax-src#2555)
  • Add a small separation between super- and subscripts and their base. (mathjax/MathJax#2406)
  • Allow "single-character" <mi> elements to include trailing combining characters. (mathjax/MathJax#2617)
  • Improve spacing between accents and their bases, and handle under- and over-lines more like TeX. (#619)
  • Handle accents more like TeX does (better sizes and placement). (mathjax/MathJax#712, mathjax/MathJax#2474)
  • Fix handling of italic correction for <munderover> and <msubsup> combinations. (#634)
  • Better handling of the placement of scripts in enriched MathML. (Speech-Rule-Engine/speech-rule-engine#462, #617)
  • Handle spacing in <mroot> elements properly. (mathjax/MathJax#2630)
  • Make sure hit-box is translated along with the hit-able element in SVG output. (mathjax/MathJax#2530)
  • Add support for setting the unknown character family for when a character is not in the MathJax fonts. (#576)
  • Make sure bevelled fraction is symmetrically placed. (#580)
  • Prevent border-spacing and border-collapse from being inherited from an outer table. (#686)

Miscellaneous

  • Update operator dictionary to the current state of Appendix C of the specification. (#652)
  • Skip DOM node types that MathJax can't process. (mathjax/MathJax#2662)
  • Fix a problem where enableEnrich and other a11y options could not be configured. (mathjax/MathJax#2651)
  • Properly serialize <annotation-xml> content. (#678)
  • Reset the tex labels and ids when A11y changes force re-rendering. (mathjax/MathJax#2597)
  • Trim TeX and annotations before copying to clipboard. (mathjax/MathJax#2574)
  • Remove role='presentation' attributes. (mathjax/MathJax#2608)
  • Handle measuring of elements in jsdom adaptor the same way as in liteDOM, since jsdom doesn't do measurements. (mathjax/MathJax#2550)
  • Show more internal properties in serialized MathML. (mathjax/MathJax#2585)
  • Improve build tools to make it easier to create custom components. (#592)
  • Fix pack and makeAll commands to display the modules used in version 5 of webpack. (#591, #579)
  • Fix webpack.common.js to handle windows paths correctly. (mathjax/MathJax-demos-web#30)
  • Update LiteAdaptor to handle full-width characters better. (mathjax/MathJax-demos-node#29)

Potential Future Breaking Changes

Some of the changes made to the options to accommodate the updated speech-rule engine are potentially breaking changes, in that the previous options (enrichSpeech, a11y.locale, a11y.speechRules) 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.

Similarly, the code that automatically renames the older TeX package names to their current all-lower-case versions (e.g., configMacros to configmacros and colorV2 to colorv2) 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 \require{} macros that refer to the older names as well as their names in the loader section, the tex.packages array, and the tex.autoload block.

Version 3.2 will also see the removal of the matchFontHeight option for the SVG output jax, since it only applies to the CommonHTML output, but is currently allowed in the svg configuration block, while doing nothing.

Version 3.2 may include other breaking changes, such as the removal of the toArray() method from the LinkedList class (and its subclasses), so any custom code that uses that should switch to using Array.from(...) around the list instead.

Finally, the Box.ts and CssStyles.ts (and their associated .js files) have been moved from the output directories to the util 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 util directory instead.