@pie-lib/math-rendering 2.3.13 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/lib/render-math.js +27 -3
- package/lib/render-math.js.map +1 -1
- package/package.json +2 -2
- package/src/render-math.js +40 -23
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [2.4.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-rendering@2.3.13...@pie-lib/math-rendering@2.4.0) (2022-04-28)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* tests ([90d79c4](https://github.com/pie-framework/pie-lib/commit/90d79c4b8c61c029959a729ba1eea1d69a3f2cbe))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* add data-mathml attribute on MathJax containers to be able to use with Text to Speech (TTS) PD-1499 ([df50318](https://github.com/pie-framework/pie-lib/commit/df503184814f0463ef588e468570db3f7d2651df))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
## [2.3.13](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-rendering@2.3.12...@pie-lib/math-rendering@2.3.13) (2022-03-21)
|
|
7
23
|
|
|
8
24
|
|
package/lib/render-math.js
CHANGED
|
@@ -29,6 +29,8 @@ var _normalization = require("./normalization");
|
|
|
29
29
|
|
|
30
30
|
var _MmlFactory = require("mathjax-full/js/core/MmlTree/MmlFactory");
|
|
31
31
|
|
|
32
|
+
var _SerializedMmlVisitor = require("mathjax-full/js/core/MmlTree/SerializedMmlVisitor");
|
|
33
|
+
|
|
32
34
|
var _WrapperFactory = require("mathjax-full/js/output/chtml/WrapperFactory");
|
|
33
35
|
|
|
34
36
|
var _mspace = require("mathjax-full/js/output/chtml/Wrappers/mspace");
|
|
@@ -47,6 +49,8 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
|
|
|
47
49
|
|
|
48
50
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
49
51
|
|
|
52
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
53
|
+
|
|
50
54
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
51
55
|
|
|
52
56
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
@@ -57,6 +61,12 @@ if (typeof window !== 'undefined') {
|
|
|
57
61
|
(0, _html.RegisterHTMLHandler)((0, _browserAdaptor.browserAdaptor)());
|
|
58
62
|
}
|
|
59
63
|
|
|
64
|
+
var visitor = new _SerializedMmlVisitor.SerializedMmlVisitor();
|
|
65
|
+
|
|
66
|
+
var toMMl = function toMMl(node) {
|
|
67
|
+
return visitor.visitTree(node);
|
|
68
|
+
};
|
|
69
|
+
|
|
60
70
|
var log = (0, _debug["default"])('pie-lib:math-rendering');
|
|
61
71
|
var NEWLINE_BLOCK_REGEX = /\\embed\{newLine\}\[\]/g;
|
|
62
72
|
var NEWLINE_LATEX = '\\newline ';
|
|
@@ -198,9 +208,23 @@ var bootstrap = function bootstrap(opts) {
|
|
|
198
208
|
elements[_key] = arguments[_key];
|
|
199
209
|
}
|
|
200
210
|
|
|
201
|
-
this.html.findMath(elements.length ? {
|
|
211
|
+
var updatedDocument = this.html.findMath(elements.length ? {
|
|
202
212
|
elements: elements
|
|
203
|
-
} : {}).compile().getMetrics().typeset().updateDocument()
|
|
213
|
+
} : {}).compile().getMetrics().typeset().updateDocument();
|
|
214
|
+
|
|
215
|
+
try {
|
|
216
|
+
var list = updatedDocument.math.list;
|
|
217
|
+
|
|
218
|
+
for (var item = list.next; _typeof(item.data) !== 'symbol'; item = item.next) {
|
|
219
|
+
var mathMl = toMMl(item.data.root);
|
|
220
|
+
var parsedMathMl = mathMl.replaceAll('\n', '');
|
|
221
|
+
item.data.typesetRoot.setAttribute('data-mathml', parsedMathMl);
|
|
222
|
+
}
|
|
223
|
+
} catch (e) {
|
|
224
|
+
console.error(e.toString());
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
updatedDocument.clear();
|
|
204
228
|
}
|
|
205
229
|
};
|
|
206
230
|
};
|
|
@@ -236,7 +260,7 @@ var renderMath = function renderMath(el, renderOpts) {
|
|
|
236
260
|
"display": 'in-line',
|
|
237
261
|
"text-align": 'left'
|
|
238
262
|
} which prevents it from showing as a newline value
|
|
239
|
-
*/
|
|
263
|
+
*/
|
|
240
264
|
|
|
241
265
|
|
|
242
266
|
_mspace.CHTMLmspace.styles = {
|
package/lib/render-math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/render-math.js"],"names":["window","log","NEWLINE_BLOCK_REGEX","NEWLINE_LATEX","getGlobal","key","pkg","name","version","split","defaultOpts","opts","fixMathElement","element","property","textContent","unwrapped","replace","fixMathElements","mathElements","document","querySelectorAll","forEach","item","bootstrap","Typeset","useSingleDollar","console","warn","packages","AllPackages","filter","push","macros","parallelogram","overarc","napprox","longdiv","texConfig","loader","require","inlineMath","displayMath","processEscapes","mmlConfig","parseAs","forceReparse","parseError","node","error","adaptor","fontURL","mathjax","htmlConfig","wrapperFactory","CHTMLWrapperFactory","defaultNodes","chtmlNodes","mml","MathML","TeX","customMmlFactory","MmlFactory","mmlNodes","html","compileError","mj","math","err","typesetError","doc","InputJax","OutputJax","CHTML","setMmlFactory","elements","findMath","length","compile","getMetrics","typeset","updateDocument","clear","renderMath","el","renderOpts","instance","Element","arr","Array","from","CHTMLmspace","styles","display","height"],"mappings":"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","sourcesContent":["import { mathjax } from 'mathjax-full/js/mathjax';\nimport { MathML } from 'mathjax-full/js/input/mathml';\nimport { TeX } from 'mathjax-full/js/input/tex';\n\nimport { CHTML } from 'mathjax-full/js/output/chtml';\nimport { RegisterHTMLHandler } from 'mathjax-full/js/handlers/html';\nimport { browserAdaptor } from 'mathjax-full/js/adaptors/browserAdaptor';\nimport { AllPackages } from 'mathjax-full/js/input/tex/AllPackages';\n\nif (typeof window !== 'undefined') {\n RegisterHTMLHandler(browserAdaptor());\n}\n\nimport pkg from '../package.json';\nimport { mmlNodes, chtmlNodes } from './mstack';\nimport debug from 'debug';\nimport { wrapMath, unWrapMath } from './normalization';\nimport { MmlFactory } from 'mathjax-full/js/core/MmlTree/MmlFactory';\nimport { CHTMLWrapperFactory } from 'mathjax-full/js/output/chtml/WrapperFactory';\nimport { CHTMLmspace } from 'mathjax-full/js/output/chtml/Wrappers/mspace';\n\nconst log = debug('pie-lib:math-rendering');\n\nconst NEWLINE_BLOCK_REGEX = /\\\\embed\\{newLine\\}\\[\\]/g;\nconst NEWLINE_LATEX = '\\\\newline ';\n\nconst getGlobal = () => {\n const key = `${pkg.name}@${pkg.version.split('.')[0]}`;\n\n if (typeof window !== 'undefined') {\n if (!window[key]) {\n window[key] = {};\n }\n return window[key];\n } else {\n return {};\n }\n};\n\n/** Add temporary support for a global singleDollar override\n * <code>\n * // This will enable single dollar rendering\n * window.pie = window.pie || {};\n * window.pie.mathRendering = {useSingleDollar: true };\n * </code>\n */\nconst defaultOpts = () => getGlobal().opts || {};\n\nexport const fixMathElement = element => {\n let property = 'innerText';\n\n if (element.textContent) {\n property = 'textContent';\n }\n\n if (element[property]) {\n element[property] = wrapMath(unWrapMath(element[property]).unwrapped);\n // because mathquill doesn't understand line breaks, sometimes we end up with custom elements on prompts/rationale/etc.\n // we need to replace the custom embedded elements with valid latex that Mathjax can understand\n element[property] = element[property].replace(NEWLINE_BLOCK_REGEX, NEWLINE_LATEX);\n }\n};\n\nexport const fixMathElements = () => {\n const mathElements = document.querySelectorAll('[data-latex]');\n\n mathElements.forEach(item => fixMathElement(item));\n};\n\nconst bootstrap = opts => {\n if (typeof window === 'undefined') {\n return { Typeset: () => ({}) };\n }\n\n opts = opts || defaultOpts();\n\n if (opts.useSingleDollar) {\n // eslint-disable-next-line\n console.warn('[math-rendering] using $ is not advisable, please use $$..$$ or \\\\(...\\\\)');\n }\n\n const packages = AllPackages.filter(name => name !== 'bussproofs'); // Bussproofs needs an output jax\n\n // The autoload extension predefines all the macros from the extensions that haven't been loaded already\n // so that they automatically load the needed extension when they are first used\n packages.push('autoload');\n\n const macros = {\n parallelogram: '\\\\lower.2em{\\\\Huge\\\\unicode{x25B1}}',\n overarc: '\\\\overparen',\n napprox: '\\\\not\\\\approx',\n longdiv: '\\\\enclose{longdiv}'\n };\n\n const texConfig = opts.useSingleDollar\n ? {\n loader: {\n require: require\n },\n packages,\n macros,\n inlineMath: [\n ['$', '$'],\n ['\\\\(', '\\\\)']\n ],\n displayMath: [\n ['$$', '$$'],\n ['\\\\[', '\\\\]']\n ],\n processEscapes: true\n }\n : {\n packages,\n macros\n };\n\n const mmlConfig = {\n parseAs: 'html',\n forceReparse: false,\n parseError: function(node) {\n // function to process parsing errors\n console.log('error:', node);\n this.error(this.adaptor.textContent(node).replace(/\\n.*/g, ''));\n }\n };\n\n const fontURL = `https://unpkg.com/mathjax-full@${mathjax.version}/ts/output/chtml/fonts/tex-woff-v2`;\n const htmlConfig = {\n fontURL,\n\n wrapperFactory: new CHTMLWrapperFactory({\n ...CHTMLWrapperFactory.defaultNodes,\n ...chtmlNodes\n })\n };\n\n const mml = new MathML(mmlConfig);\n console.log([new TeX(texConfig), mml]);\n\n const customMmlFactory = new MmlFactory({\n ...MmlFactory.defaultNodes,\n ...mmlNodes\n });\n\n const html = mathjax.document(document, {\n compileError: (mj, math, err) => {\n console.log('bad math?:', math);\n console.error(err);\n },\n typesetError: function(doc, math, err) {\n console.log('typeset error');\n console.error(err);\n doc.typesetError(math, err);\n },\n\n InputJax: [new TeX(texConfig), mml],\n OutputJax: new CHTML(htmlConfig)\n });\n\n // Note: we must set this *after* mathjax.document (no idea why)\n mml.setMmlFactory(customMmlFactory);\n\n return {\n version: mathjax.version,\n html: html,\n\n Typeset: function(...elements) {\n this.html\n .findMath(elements.length ? { elements } : {})\n .compile()\n .getMetrics()\n .typeset()\n .updateDocument()\n .clear();\n }\n };\n};\n\nconst renderMath = (el, renderOpts) => {\n //TODO: remove this - has nothing to do with math-rendering (it's from editable-html)\n fixMathElements();\n\n if (!getGlobal().instance) {\n getGlobal().instance = bootstrap(renderOpts);\n }\n\n if (!el) {\n log('el is undefined');\n return;\n }\n\n if (el instanceof Element) {\n getGlobal().instance.Typeset(el);\n } else if (el.length) {\n const arr = Array.from(el);\n getGlobal().instance.Typeset(...arr);\n }\n};\n\n/**\n * This style is added to overried default styling of mjx-mspace Mathjax tag\n * In mathjax src code \\newline latex gets parsed to <mjx-mspace></mjx-mspace>,\n * but has the default style\n * 'mjx-mspace': {\n \"display\": 'in-line',\n \"text-align\": 'left'\n} which prevents it from showing as a newline value\n*/\nCHTMLmspace.styles = {\n 'mjx-mspace': {\n display: 'block',\n 'text-align': 'center',\n height: '5px'\n }\n};\n\nexport default renderMath;\n"],"file":"render-math.js"}
|
|
1
|
+
{"version":3,"sources":["../src/render-math.js"],"names":["window","visitor","SerializedMmlVisitor","toMMl","node","visitTree","log","NEWLINE_BLOCK_REGEX","NEWLINE_LATEX","getGlobal","key","pkg","name","version","split","defaultOpts","opts","fixMathElement","element","property","textContent","unwrapped","replace","fixMathElements","mathElements","document","querySelectorAll","forEach","item","bootstrap","Typeset","useSingleDollar","console","warn","packages","AllPackages","filter","push","macros","parallelogram","overarc","napprox","longdiv","texConfig","loader","require","inlineMath","displayMath","processEscapes","mmlConfig","parseAs","forceReparse","parseError","error","adaptor","fontURL","mathjax","htmlConfig","wrapperFactory","CHTMLWrapperFactory","defaultNodes","chtmlNodes","mml","MathML","TeX","customMmlFactory","MmlFactory","mmlNodes","html","compileError","mj","math","err","typesetError","doc","InputJax","OutputJax","CHTML","setMmlFactory","elements","updatedDocument","findMath","length","compile","getMetrics","typeset","updateDocument","list","next","data","mathMl","root","parsedMathMl","replaceAll","typesetRoot","setAttribute","e","toString","clear","renderMath","el","renderOpts","instance","Element","arr","Array","from","CHTMLmspace","styles","display","height"],"mappings":"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","sourcesContent":["import { mathjax } from 'mathjax-full/js/mathjax';\nimport { MathML } from 'mathjax-full/js/input/mathml';\nimport { TeX } from 'mathjax-full/js/input/tex';\n\nimport { CHTML } from 'mathjax-full/js/output/chtml';\nimport { RegisterHTMLHandler } from 'mathjax-full/js/handlers/html';\nimport { browserAdaptor } from 'mathjax-full/js/adaptors/browserAdaptor';\nimport { AllPackages } from 'mathjax-full/js/input/tex/AllPackages';\n\nif (typeof window !== 'undefined') {\n RegisterHTMLHandler(browserAdaptor());\n}\n\nimport pkg from '../package.json';\nimport { mmlNodes, chtmlNodes } from './mstack';\nimport debug from 'debug';\nimport { wrapMath, unWrapMath } from './normalization';\nimport { MmlFactory } from 'mathjax-full/js/core/MmlTree/MmlFactory';\nimport { SerializedMmlVisitor } from 'mathjax-full/js/core/MmlTree/SerializedMmlVisitor';\nimport { CHTMLWrapperFactory } from 'mathjax-full/js/output/chtml/WrapperFactory';\nimport { CHTMLmspace } from 'mathjax-full/js/output/chtml/Wrappers/mspace';\n\nconst visitor = new SerializedMmlVisitor();\nconst toMMl = node => visitor.visitTree(node);\n\nconst log = debug('pie-lib:math-rendering');\n\nconst NEWLINE_BLOCK_REGEX = /\\\\embed\\{newLine\\}\\[\\]/g;\nconst NEWLINE_LATEX = '\\\\newline ';\n\nconst getGlobal = () => {\n const key = `${pkg.name}@${pkg.version.split('.')[0]}`;\n\n if (typeof window !== 'undefined') {\n if (!window[key]) {\n window[key] = {};\n }\n return window[key];\n } else {\n return {};\n }\n};\n\n/** Add temporary support for a global singleDollar override\n * <code>\n * // This will enable single dollar rendering\n * window.pie = window.pie || {};\n * window.pie.mathRendering = {useSingleDollar: true };\n * </code>\n */\nconst defaultOpts = () => getGlobal().opts || {};\n\nexport const fixMathElement = element => {\n let property = 'innerText';\n\n if (element.textContent) {\n property = 'textContent';\n }\n\n if (element[property]) {\n element[property] = wrapMath(unWrapMath(element[property]).unwrapped);\n // because mathquill doesn't understand line breaks, sometimes we end up with custom elements on prompts/rationale/etc.\n // we need to replace the custom embedded elements with valid latex that Mathjax can understand\n element[property] = element[property].replace(NEWLINE_BLOCK_REGEX, NEWLINE_LATEX);\n }\n};\n\nexport const fixMathElements = () => {\n const mathElements = document.querySelectorAll('[data-latex]');\n\n mathElements.forEach(item => fixMathElement(item));\n};\n\nconst bootstrap = opts => {\n if (typeof window === 'undefined') {\n return { Typeset: () => ({}) };\n }\n\n opts = opts || defaultOpts();\n\n if (opts.useSingleDollar) {\n // eslint-disable-next-line\n console.warn('[math-rendering] using $ is not advisable, please use $$..$$ or \\\\(...\\\\)');\n }\n\n const packages = AllPackages.filter(name => name !== 'bussproofs'); // Bussproofs needs an output jax\n\n // The autoload extension predefines all the macros from the extensions that haven't been loaded already\n // so that they automatically load the needed extension when they are first used\n packages.push('autoload');\n\n const macros = {\n parallelogram: '\\\\lower.2em{\\\\Huge\\\\unicode{x25B1}}',\n overarc: '\\\\overparen',\n napprox: '\\\\not\\\\approx',\n longdiv: '\\\\enclose{longdiv}'\n };\n\n const texConfig = opts.useSingleDollar\n ? {\n loader: {\n require: require\n },\n packages,\n macros,\n inlineMath: [\n ['$', '$'],\n ['\\\\(', '\\\\)']\n ],\n displayMath: [\n ['$$', '$$'],\n ['\\\\[', '\\\\]']\n ],\n processEscapes: true\n }\n : {\n packages,\n macros\n };\n\n const mmlConfig = {\n parseAs: 'html',\n forceReparse: false,\n parseError: function(node) {\n // function to process parsing errors\n console.log('error:', node);\n this.error(this.adaptor.textContent(node).replace(/\\n.*/g, ''));\n }\n };\n\n const fontURL = `https://unpkg.com/mathjax-full@${mathjax.version}/ts/output/chtml/fonts/tex-woff-v2`;\n const htmlConfig = {\n fontURL,\n\n wrapperFactory: new CHTMLWrapperFactory({\n ...CHTMLWrapperFactory.defaultNodes,\n ...chtmlNodes\n })\n };\n\n const mml = new MathML(mmlConfig);\n console.log([new TeX(texConfig), mml]);\n\n const customMmlFactory = new MmlFactory({\n ...MmlFactory.defaultNodes,\n ...mmlNodes\n });\n\n const html = mathjax.document(document, {\n compileError: (mj, math, err) => {\n console.log('bad math?:', math);\n console.error(err);\n },\n typesetError: function(doc, math, err) {\n console.log('typeset error');\n console.error(err);\n doc.typesetError(math, err);\n },\n\n InputJax: [new TeX(texConfig), mml],\n OutputJax: new CHTML(htmlConfig)\n });\n\n // Note: we must set this *after* mathjax.document (no idea why)\n mml.setMmlFactory(customMmlFactory);\n\n return {\n version: mathjax.version,\n html: html,\n Typeset: function(...elements) {\n const updatedDocument = this.html\n .findMath(elements.length ? { elements } : {})\n .compile()\n .getMetrics()\n .typeset()\n .updateDocument();\n\n try {\n const list = updatedDocument.math.list;\n\n for (let item = list.next; typeof item.data !== 'symbol'; item = item.next) {\n const mathMl = toMMl(item.data.root);\n const parsedMathMl = mathMl.replaceAll('\\n', '');\n\n item.data.typesetRoot.setAttribute('data-mathml', parsedMathMl);\n }\n } catch (e) {\n console.error(e.toString());\n }\n\n updatedDocument.clear();\n }\n };\n};\n\nconst renderMath = (el, renderOpts) => {\n //TODO: remove this - has nothing to do with math-rendering (it's from editable-html)\n fixMathElements();\n\n if (!getGlobal().instance) {\n getGlobal().instance = bootstrap(renderOpts);\n }\n\n if (!el) {\n log('el is undefined');\n return;\n }\n\n if (el instanceof Element) {\n getGlobal().instance.Typeset(el);\n } else if (el.length) {\n const arr = Array.from(el);\n getGlobal().instance.Typeset(...arr);\n }\n};\n\n/**\n * This style is added to overried default styling of mjx-mspace Mathjax tag\n * In mathjax src code \\newline latex gets parsed to <mjx-mspace></mjx-mspace>,\n * but has the default style\n * 'mjx-mspace': {\n \"display\": 'in-line',\n \"text-align\": 'left'\n} which prevents it from showing as a newline value\n */\nCHTMLmspace.styles = {\n 'mjx-mspace': {\n display: 'block',\n 'text-align': 'center',\n height: '5px'\n }\n};\n\nexport default renderMath;\n"],"file":"render-math.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-lib/math-rendering",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "math rendering utilities",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -14,6 +14,6 @@
|
|
|
14
14
|
"lodash": "^4.17.11",
|
|
15
15
|
"mathjax-full": "^3.2.0"
|
|
16
16
|
},
|
|
17
|
-
"gitHead": "
|
|
17
|
+
"gitHead": "15c7a1364de782a095f8387f6be54af23e45fa10",
|
|
18
18
|
"scripts": {}
|
|
19
19
|
}
|
package/src/render-math.js
CHANGED
|
@@ -16,9 +16,13 @@ import { mmlNodes, chtmlNodes } from './mstack';
|
|
|
16
16
|
import debug from 'debug';
|
|
17
17
|
import { wrapMath, unWrapMath } from './normalization';
|
|
18
18
|
import { MmlFactory } from 'mathjax-full/js/core/MmlTree/MmlFactory';
|
|
19
|
+
import { SerializedMmlVisitor } from 'mathjax-full/js/core/MmlTree/SerializedMmlVisitor';
|
|
19
20
|
import { CHTMLWrapperFactory } from 'mathjax-full/js/output/chtml/WrapperFactory';
|
|
20
21
|
import { CHTMLmspace } from 'mathjax-full/js/output/chtml/Wrappers/mspace';
|
|
21
22
|
|
|
23
|
+
const visitor = new SerializedMmlVisitor();
|
|
24
|
+
const toMMl = node => visitor.visitTree(node);
|
|
25
|
+
|
|
22
26
|
const log = debug('pie-lib:math-rendering');
|
|
23
27
|
|
|
24
28
|
const NEWLINE_BLOCK_REGEX = /\\embed\{newLine\}\[\]/g;
|
|
@@ -94,25 +98,25 @@ const bootstrap = opts => {
|
|
|
94
98
|
|
|
95
99
|
const texConfig = opts.useSingleDollar
|
|
96
100
|
? {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
101
|
+
loader: {
|
|
102
|
+
require: require
|
|
103
|
+
},
|
|
104
|
+
packages,
|
|
105
|
+
macros,
|
|
106
|
+
inlineMath: [
|
|
107
|
+
['$', '$'],
|
|
108
|
+
['\\(', '\\)']
|
|
109
|
+
],
|
|
110
|
+
displayMath: [
|
|
111
|
+
['$$', '$$'],
|
|
112
|
+
['\\[', '\\]']
|
|
113
|
+
],
|
|
114
|
+
processEscapes: true
|
|
115
|
+
}
|
|
112
116
|
: {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
117
|
+
packages,
|
|
118
|
+
macros
|
|
119
|
+
};
|
|
116
120
|
|
|
117
121
|
const mmlConfig = {
|
|
118
122
|
parseAs: 'html',
|
|
@@ -163,15 +167,28 @@ const bootstrap = opts => {
|
|
|
163
167
|
return {
|
|
164
168
|
version: mathjax.version,
|
|
165
169
|
html: html,
|
|
166
|
-
|
|
167
170
|
Typeset: function(...elements) {
|
|
168
|
-
this.html
|
|
171
|
+
const updatedDocument = this.html
|
|
169
172
|
.findMath(elements.length ? { elements } : {})
|
|
170
173
|
.compile()
|
|
171
174
|
.getMetrics()
|
|
172
175
|
.typeset()
|
|
173
|
-
.updateDocument()
|
|
174
|
-
|
|
176
|
+
.updateDocument();
|
|
177
|
+
|
|
178
|
+
try {
|
|
179
|
+
const list = updatedDocument.math.list;
|
|
180
|
+
|
|
181
|
+
for (let item = list.next; typeof item.data !== 'symbol'; item = item.next) {
|
|
182
|
+
const mathMl = toMMl(item.data.root);
|
|
183
|
+
const parsedMathMl = mathMl.replaceAll('\n', '');
|
|
184
|
+
|
|
185
|
+
item.data.typesetRoot.setAttribute('data-mathml', parsedMathMl);
|
|
186
|
+
}
|
|
187
|
+
} catch (e) {
|
|
188
|
+
console.error(e.toString());
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
updatedDocument.clear();
|
|
175
192
|
}
|
|
176
193
|
};
|
|
177
194
|
};
|
|
@@ -205,7 +222,7 @@ const renderMath = (el, renderOpts) => {
|
|
|
205
222
|
"display": 'in-line',
|
|
206
223
|
"text-align": 'left'
|
|
207
224
|
} which prevents it from showing as a newline value
|
|
208
|
-
*/
|
|
225
|
+
*/
|
|
209
226
|
CHTMLmspace.styles = {
|
|
210
227
|
'mjx-mspace': {
|
|
211
228
|
display: 'block',
|