import {MathJax} from "mathjax3/mathjax.js"; export {MathJax} from "mathjax3/mathjax.js"; import "mathjax3/handlers/html.js"; import {AsciiMath} from "mathjax3/input/asciimath.js"; let OPTIONS = { InputJax: new AsciiMath() }; let HTML = [ 'This is some math: `x = y` and `x < z`.', '
', 'text', '', '

', '`(x+1)/(x-1)`', 'and', '`int x dx`', '

', '` x
y `', 'and more `z-1`', '
' ].join("\n"); var html; try { // // Use browser document, if there is one // html = MathJax.document(document,OPTIONS); document.body.insertBefore(document.createElement("hr"),document.body.firstChild); var div = document.createElement('div'); div.innerHTML = HTML; div.style.marginBottom = "1em"; document.body.insertBefore(div,document.body.firstChild); } catch (err) { // // Otherwise, make a new document (measurements not supported here) // html = MathJax.document( 'Test MathJax3' + HTML + '', OPTIONS ); } const STRING = function (item) { let {node, n, delim} = item; let value = node.nodeValue; return (value.substr(0,n)+"@"+value.substr(n)).replace(/\n/g,"\\n"); }; const DELIMITERS = function (start,end) { let value = start.node.nodeValue; let [n,m] = [start.n,end.n]; return (value.substr(0,n)+"@"+value.substr(n,m-n)+"@"+value.substr(m)).replace(/\n/g,"\\n"); }; MathJax.handleRetriesFor(function () { html.findMath(); for (const math of html.math) { console.log(math.math,math.display); if (math.start.node === math.end.node) { console.log("=> ",DELIMITERS(math.start,math.end)); } else { console.log(">> ",STRING(math.start)); console.log("<< ",STRING(math.end)); } }; }).catch(err => { console.log(err.message); console.log(err.stack.replace(/\n.*\/system\.js:(.|\n)*/,"")); });