mathjax/Mathjax-src
### [`v3.2.1`](https://togithub.com/mathjax/MathJax-src/releases/tag/3.2.1)
[Compare Source](https://togithub.com/mathjax/Mathjax-src/compare/3.2.0...3.2.1)
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](https://togithub.com/mathjax/MathJax-src/milestone/8) for the pull requests involved in this release.
***
### New Features in this Release
#### Speech-Rule Engine
MathJax now integrates version 4 of Speech Rule Engine (SRE). ([#800](https://togithub.com/mathjax/Mathjax-src/issues/800))
- SRE v4 is a full port to ES6 using TypeScript providing **transpiled JavaScript for easier integration** into third party projects via its npm package.
- Uses webpack as the primary bundler to offer a **single bundle file** for both node and browser.
- Major rewrite of rule handling and provision of locales.
- Smaller locale files and memory footprint in the index structure.
- Hierarchical locale setup that allows inheritance within rule sets.
- **Uses ES6 promises** to handle locale loading and engine setup.
- A number of **new locales** for Swedish, Norwegian (Bokmal and Nynorks), Danish (MathSpeak only), and Catalan (MathSpeak only)
- Locale files are now served with a `.json` extension. ([https://github.com/mathjax/MathJax/issues/2403](https://togithub.com/mathjax/MathJax/issues/2403))
For more details and a full list of all changes and additions [see the SRE release notes](https://togithub.com/Speech-Rule-Engine/speech-rule-engine/releases/tag/v4.0.0).
MathJax makes use of SRE v4 new features in the following ways:
- Source integration
- Integrates SRE directly via importing the relevant library files into its code and webpacks them into its components and bundles.
- Replaces the timeout-driven SRE loading promise with SRE's new native promises.
- The `sre.ts` module now imports and exports exclusively API methods necessary for SRE's use in MathJax
- A new `mathmaps.ts` module provides a map for directly integrating and bundling locales (see more below).
- Components integration
- The `sre` component under `components/src/sre` now simply handles copying the locale files in the `mathmaps` directory.
- The `a11y/sre` component under `components/src/sre` contains a configuration file `sre_config.js` that sets up the basic SRE configuration for MathJax, especially the correct path to the `mathmaps` folder (online or in the npm distribution).
- Components can webpack SRE's locale files into bundles. See the `components/src/tex-chtml-full-speech` component as an example.
- MathJax Configuration
- The `sre` path in MathJax is now used exclusively for pointing to a directory containing the locale files.
Most of these changes are internal and should remain unnoticeable. However, there are a couple of points to note when using SRE via MathJax:
- Previously, MathJax would load SRE as a single library file, but now webpacks its source files, which, as a side-effect, closes several convenient loopholes you could have exploited in the past:
- **OLD**: SRE's functionality was available to a developer as if running SRE standalone. That is, in both node and browser, all of SRE's API methods where available in the `SRE` namespace, and additionally, the full functionality was reachable in the browser through the `sre` namespace.
**NEW**: Now only the explicitly exported API methods are available to import via the `a11y/sre` component.
\* **OLD**: You could easily change the version of SRE MathJax would use by:
1. In the browser, pointing to an alternative copy of `sre_browser.js` using the `sre` path in the MathJax configuration, and
2. In node, replacing the `speech-rule-engine` package with a different version in the `node_modules` folder.
**NEW**: This is no longer possible.
- The `sreReady` method is still exported but *deprecated*. In the future, you should use the corresponding method in the API bundle `Sre.sreReady()`.
- By default SRE comes without rules (or locales) preloaded, and pulls those in only when necessary. That is, it loads the relevant `.json` files via XML-HTTP-request in the browser, or via file loading in the node module. However, it is now possible to pre-bundle (some) locales directly into a custom distribution using webpack, which is particularly useful if you want to run MathJax offline while still using the full power of is assistive technology extension. See the `tex-chtml-full-speech` component as an example.
#### Output Improvements
- Properly handle border and padding CSS in CHTML and SVG output. ([#799](https://togithub.com/mathjax/Mathjax-src/issues/799))
#### Lazy Typesetting
- Have lazy typesetter typeset all remaining math before printing. ([#777](https://togithub.com/mathjax/Mathjax-src/issues/777))
- Have lazy typesetting specify a (configurable) distance around the viewport for triggering typesetting. ([#777](https://togithub.com/mathjax/Mathjax-src/issues/777))
- Allow containers to be marked so that they are always typeset by the lazy typesetter. ([#777](https://togithub.com/mathjax/Mathjax-src/issues/777))
***
### Bugs Addressed in this Release
#### Output Bug Fixes
- Update svg output to properly handle token elements with multiple child nodes. ([mathjax/MathJax#2836](https://togithub.com/mathjax/MathJax/issues/2836))
- Include CSS to reset border-collapse in CHTML output. ([mathjax/MathJax#2861](https://togithub.com/mathjax/MathJax/issues/2861))
- Prevent CHTML adaptive CSS from adding character CSS multiple times. ([#796](https://togithub.com/mathjax/Mathjax-src/issues/796))
- Make sure all character data is included when adaptiveCSS is false. ([mathjax/MathJax#2724](https://togithub.com/mathjax/MathJax/issues/2724))
- Place super- and subscripts properly around `\vcenter` elements. ([#787](https://togithub.com/mathjax/Mathjax-src/issues/787))
- Add a minimum height for accented characters. ([mathjax/MathJax#2766](https://togithub.com/mathjax/MathJax/issues/2766))
- Take relative scaling into account for CHTML output of non-MathJax fonts. ([mathjax/MathJax#2818](https://togithub.com/mathjax/MathJax/issues/2818))
- Fix placement of surd when root extends above the top of the root. ([mathjax/MathJax#2764](https://togithub.com/mathjax/MathJax/issues/2764))
- Fix problem with `msubsup` when subscript is blank ([mathjax/MathJax#2765](https://togithub.com/mathjax/MathJax/issues/2765))
#### TeX Input Fixes
- Add `\textup` and `\textnormal` to macros allowed by `textmacros`. ([mathjax/MathJax#2846](https://togithub.com/mathjax/MathJax/issues/2846))
- Update `\operatorname` to work more like in LaTeX. ([mathjax/MathJax#2830](https://togithub.com/mathjax/MathJax/issues/2830))
- Have physics package match nested parentheses, fix spacing issues. ([mathjax/MathJax#2760](https://togithub.com/mathjax/MathJax/issues/2760), [mathjax/MathJax#2831](https://togithub.com/mathjax/MathJax/issues/2831))
- Re-implement `\sideset` using `mmultiscripts`. ([mathjax/MathJax#1217](https://togithub.com/mathjax/MathJax/issues/1217))
- Fix problem where errors during `mhchem` argument collection are not properly handled. ([mathjax/MathJax#2835](https://togithub.com/mathjax/MathJax/issues/2835))
- Update XSLT to produce better results in `mml3` extension. ([#785](https://togithub.com/mathjax/Mathjax-src/issues/785))
- Add ability for TeX input to force normal variant for CJK input. ([mathjax/MathJax#2744](https://togithub.com/mathjax/MathJax/issues/2744))
- Make sure math-in-text forms an ORD atom within `textmacros`. ([mathjax/MathJax#2828](https://togithub.com/mathjax/MathJax/issues/2828))
- Make sure explicit attributes added by `\mmlToken` are not removed. ([mathjax/MathJax#2806](https://togithub.com/mathjax/MathJax/issues/2806))
- Fix typo in `\DeclarePairedDelimiter` macros, and substitute arguments in pre and post sections. ([mathjax/MathJax#2816](https://togithub.com/mathjax/MathJax/issues/2816), [mathjax/MathJax#2758](https://togithub.com/mathjax/MathJax/issues/2758))
- Mark `mo` as not an accent if used in `\overset` and friends. ([mathjax/MathJax#2800](https://togithub.com/mathjax/MathJax/issues/2800))
#### MathML Input Fixes
- Fix problems with verification and repair of malformed mtables. ([#779](https://togithub.com/mathjax/Mathjax-src/issues/779))
- Add support for `mglyph` use of `fontfamily`/`index`. ([mathjax/MathJax#2298](https://togithub.com/mathjax/MathJax/issues/2298))
- Trim MathML string before parsing it. ([mathjax/MathJax#2805](https://togithub.com/mathjax/MathJax/issues/2805))
- Only process MJX-TeXAtom classes on `mrow` elements. ([mathjax/MathJax#2822](https://togithub.com/mathjax/MathJax/issues/2822))
- Move `mml3` filter to an `mmlFilter` so that `forceReparse` isn't needed. ([mathjax/MathJax#2718](https://togithub.com/mathjax/MathJax/issues/2718))
- Make U+2061 through U+2064 have TeX class NONE so they don't affect spacing. ([#806](https://togithub.com/mathjax/Mathjax-src/issues/806))
#### Miscenaleous
- Handle documents better when created by parsing in XHTML. ([mathjax/MathJax#2788](https://togithub.com/mathjax/MathJax/issues/2788))
- Add version numbers to component files and check them when loaded. ([#738](https://togithub.com/mathjax/Mathjax-src/issues/738))
- Fix problem where some menu settings weren't sticky ([mathjax/MathJax#2786](https://togithub.com/mathjax/MathJax/issues/2786))
- Add a `linkedom` adaptor ([mathjax/MathJax#2833](https://togithub.com/mathjax/MathJax/issues/2833))
- Refactor usage of all-packages to reduce redundant code in components. ([#784](https://togithub.com/mathjax/Mathjax-src/issues/784))
- Make variables local in legacy AsciiMath code. ([mathjax/MathJax#2748](https://togithub.com/mathjax/MathJax/issues/2748))
- Make safe extension properly handle scriptlevel of 0. ([mathjax/MathJax#2745](https://togithub.com/mathjax/MathJax/issues/2745))
- Update webpack files for empheq and cases. ([mathjax/MathJax#2762](https://togithub.com/mathjax/MathJax/issues/2762))
- Update build tools to work with extensions better. ([#737](https://togithub.com/mathjax/Mathjax-src/issues/737))
- Add `defaultPageReady()` to `MathJaxObject` interface. ([#746](https://togithub.com/mathjax/Mathjax-src/issues/746))
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, click this checkbox.
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
3.2.0
->3.2.1
Release Notes
mathjax/Mathjax-src
### [`v3.2.1`](https://togithub.com/mathjax/MathJax-src/releases/tag/3.2.1) [Compare Source](https://togithub.com/mathjax/Mathjax-src/compare/3.2.0...3.2.1) 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](https://togithub.com/mathjax/MathJax-src/milestone/8) for the pull requests involved in this release. *** ### New Features in this Release #### Speech-Rule Engine MathJax now integrates version 4 of Speech Rule Engine (SRE). ([#800](https://togithub.com/mathjax/Mathjax-src/issues/800)) - SRE v4 is a full port to ES6 using TypeScript providing **transpiled JavaScript for easier integration** into third party projects via its npm package. - Uses webpack as the primary bundler to offer a **single bundle file** for both node and browser. - Major rewrite of rule handling and provision of locales. - Smaller locale files and memory footprint in the index structure. - Hierarchical locale setup that allows inheritance within rule sets. - **Uses ES6 promises** to handle locale loading and engine setup. - A number of **new locales** for Swedish, Norwegian (Bokmal and Nynorks), Danish (MathSpeak only), and Catalan (MathSpeak only) - Locale files are now served with a `.json` extension. ([https://github.com/mathjax/MathJax/issues/2403](https://togithub.com/mathjax/MathJax/issues/2403)) For more details and a full list of all changes and additions [see the SRE release notes](https://togithub.com/Speech-Rule-Engine/speech-rule-engine/releases/tag/v4.0.0). MathJax makes use of SRE v4 new features in the following ways: - Source integration - Integrates SRE directly via importing the relevant library files into its code and webpacks them into its components and bundles. - Replaces the timeout-driven SRE loading promise with SRE's new native promises. - The `sre.ts` module now imports and exports exclusively API methods necessary for SRE's use in MathJax - A new `mathmaps.ts` module provides a map for directly integrating and bundling locales (see more below). - Components integration - The `sre` component under `components/src/sre` now simply handles copying the locale files in the `mathmaps` directory. - The `a11y/sre` component under `components/src/sre` contains a configuration file `sre_config.js` that sets up the basic SRE configuration for MathJax, especially the correct path to the `mathmaps` folder (online or in the npm distribution). - Components can webpack SRE's locale files into bundles. See the `components/src/tex-chtml-full-speech` component as an example. - MathJax Configuration - The `sre` path in MathJax is now used exclusively for pointing to a directory containing the locale files. Most of these changes are internal and should remain unnoticeable. However, there are a couple of points to note when using SRE via MathJax: - Previously, MathJax would load SRE as a single library file, but now webpacks its source files, which, as a side-effect, closes several convenient loopholes you could have exploited in the past: - **OLD**: SRE's functionality was available to a developer as if running SRE standalone. That is, in both node and browser, all of SRE's API methods where available in the `SRE` namespace, and additionally, the full functionality was reachable in the browser through the `sre` namespace. **NEW**: Now only the explicitly exported API methods are available to import via the `a11y/sre` component. \* **OLD**: You could easily change the version of SRE MathJax would use by: 1. In the browser, pointing to an alternative copy of `sre_browser.js` using the `sre` path in the MathJax configuration, and 2. In node, replacing the `speech-rule-engine` package with a different version in the `node_modules` folder. **NEW**: This is no longer possible. - The `sreReady` method is still exported but *deprecated*. In the future, you should use the corresponding method in the API bundle `Sre.sreReady()`. - By default SRE comes without rules (or locales) preloaded, and pulls those in only when necessary. That is, it loads the relevant `.json` files via XML-HTTP-request in the browser, or via file loading in the node module. However, it is now possible to pre-bundle (some) locales directly into a custom distribution using webpack, which is particularly useful if you want to run MathJax offline while still using the full power of is assistive technology extension. See the `tex-chtml-full-speech` component as an example. #### Output Improvements - Properly handle border and padding CSS in CHTML and SVG output. ([#799](https://togithub.com/mathjax/Mathjax-src/issues/799)) #### Lazy Typesetting - Have lazy typesetter typeset all remaining math before printing. ([#777](https://togithub.com/mathjax/Mathjax-src/issues/777)) - Have lazy typesetting specify a (configurable) distance around the viewport for triggering typesetting. ([#777](https://togithub.com/mathjax/Mathjax-src/issues/777)) - Allow containers to be marked so that they are always typeset by the lazy typesetter. ([#777](https://togithub.com/mathjax/Mathjax-src/issues/777)) *** ### Bugs Addressed in this Release #### Output Bug Fixes - Update svg output to properly handle token elements with multiple child nodes. ([mathjax/MathJax#2836](https://togithub.com/mathjax/MathJax/issues/2836)) - Include CSS to reset border-collapse in CHTML output. ([mathjax/MathJax#2861](https://togithub.com/mathjax/MathJax/issues/2861)) - Prevent CHTML adaptive CSS from adding character CSS multiple times. ([#796](https://togithub.com/mathjax/Mathjax-src/issues/796)) - Make sure all character data is included when adaptiveCSS is false. ([mathjax/MathJax#2724](https://togithub.com/mathjax/MathJax/issues/2724)) - Place super- and subscripts properly around `\vcenter` elements. ([#787](https://togithub.com/mathjax/Mathjax-src/issues/787)) - Add a minimum height for accented characters. ([mathjax/MathJax#2766](https://togithub.com/mathjax/MathJax/issues/2766)) - Take relative scaling into account for CHTML output of non-MathJax fonts. ([mathjax/MathJax#2818](https://togithub.com/mathjax/MathJax/issues/2818)) - Fix placement of surd when root extends above the top of the root. ([mathjax/MathJax#2764](https://togithub.com/mathjax/MathJax/issues/2764)) - Fix problem with `msubsup` when subscript is blank ([mathjax/MathJax#2765](https://togithub.com/mathjax/MathJax/issues/2765)) #### TeX Input Fixes - Add `\textup` and `\textnormal` to macros allowed by `textmacros`. ([mathjax/MathJax#2846](https://togithub.com/mathjax/MathJax/issues/2846)) - Update `\operatorname` to work more like in LaTeX. ([mathjax/MathJax#2830](https://togithub.com/mathjax/MathJax/issues/2830)) - Have physics package match nested parentheses, fix spacing issues. ([mathjax/MathJax#2760](https://togithub.com/mathjax/MathJax/issues/2760), [mathjax/MathJax#2831](https://togithub.com/mathjax/MathJax/issues/2831)) - Re-implement `\sideset` using `mmultiscripts`. ([mathjax/MathJax#1217](https://togithub.com/mathjax/MathJax/issues/1217)) - Fix problem where errors during `mhchem` argument collection are not properly handled. ([mathjax/MathJax#2835](https://togithub.com/mathjax/MathJax/issues/2835)) - Update XSLT to produce better results in `mml3` extension. ([#785](https://togithub.com/mathjax/Mathjax-src/issues/785)) - Add ability for TeX input to force normal variant for CJK input. ([mathjax/MathJax#2744](https://togithub.com/mathjax/MathJax/issues/2744)) - Make sure math-in-text forms an ORD atom within `textmacros`. ([mathjax/MathJax#2828](https://togithub.com/mathjax/MathJax/issues/2828)) - Make sure explicit attributes added by `\mmlToken` are not removed. ([mathjax/MathJax#2806](https://togithub.com/mathjax/MathJax/issues/2806)) - Fix typo in `\DeclarePairedDelimiter` macros, and substitute arguments in pre and post sections. ([mathjax/MathJax#2816](https://togithub.com/mathjax/MathJax/issues/2816), [mathjax/MathJax#2758](https://togithub.com/mathjax/MathJax/issues/2758)) - Mark `mo` as not an accent if used in `\overset` and friends. ([mathjax/MathJax#2800](https://togithub.com/mathjax/MathJax/issues/2800)) #### MathML Input Fixes - Fix problems with verification and repair of malformed mtables. ([#779](https://togithub.com/mathjax/Mathjax-src/issues/779)) - Add support for `mglyph` use of `fontfamily`/`index`. ([mathjax/MathJax#2298](https://togithub.com/mathjax/MathJax/issues/2298)) - Trim MathML string before parsing it. ([mathjax/MathJax#2805](https://togithub.com/mathjax/MathJax/issues/2805)) - Only process MJX-TeXAtom classes on `mrow` elements. ([mathjax/MathJax#2822](https://togithub.com/mathjax/MathJax/issues/2822)) - Move `mml3` filter to an `mmlFilter` so that `forceReparse` isn't needed. ([mathjax/MathJax#2718](https://togithub.com/mathjax/MathJax/issues/2718)) - Make U+2061 through U+2064 have TeX class NONE so they don't affect spacing. ([#806](https://togithub.com/mathjax/Mathjax-src/issues/806)) #### Miscenaleous - Handle documents better when created by parsing in XHTML. ([mathjax/MathJax#2788](https://togithub.com/mathjax/MathJax/issues/2788)) - Add version numbers to component files and check them when loaded. ([#738](https://togithub.com/mathjax/Mathjax-src/issues/738)) - Fix problem where some menu settings weren't sticky ([mathjax/MathJax#2786](https://togithub.com/mathjax/MathJax/issues/2786)) - Add a `linkedom` adaptor ([mathjax/MathJax#2833](https://togithub.com/mathjax/MathJax/issues/2833)) - Refactor usage of all-packages to reduce redundant code in components. ([#784](https://togithub.com/mathjax/Mathjax-src/issues/784)) - Make variables local in legacy AsciiMath code. ([mathjax/MathJax#2748](https://togithub.com/mathjax/MathJax/issues/2748)) - Make safe extension properly handle scriptlevel of 0. ([mathjax/MathJax#2745](https://togithub.com/mathjax/MathJax/issues/2745)) - Update webpack files for empheq and cases. ([mathjax/MathJax#2762](https://togithub.com/mathjax/MathJax/issues/2762)) - Update build tools to work with extensions better. ([#737](https://togithub.com/mathjax/Mathjax-src/issues/737)) - Add `defaultPageReady()` to `MathJaxObject` interface. ([#746](https://togithub.com/mathjax/Mathjax-src/issues/746))Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.