diff --git a/unpacked/extensions/MathML/content-mathml.js b/unpacked/extensions/MathML/content-mathml.js index b1846603f..a6cf174d1 100644 --- a/unpacked/extensions/MathML/content-mathml.js +++ b/unpacked/extensions/MathML/content-mathml.js @@ -190,7 +190,18 @@ MathJax.Extension["MathML/content-mathml"] = (function(HUB) { */ appendToken: function(parentNode,name,textContent) { var element = CToP.createElement(name); - element.appendChild(document.createTextNode(textContent)); + if (name === 'mn' && textContent.substr(0,1) === "-") { + // + // use n instead of -n + // + element.appendChild(document.createTextNode(textContent.substr(1))); + var mrow = CToP.createElement('mrow'); + CToP.appendToken(mrow,'mo','\u2212'); + mrow.appendChild(element); + element = mrow; + } else { + element.appendChild(document.createTextNode(textContent)); + } parentNode.appendChild(element); return element; }, diff --git a/unpacked/jax/output/CommonHTML/jax.js b/unpacked/jax/output/CommonHTML/jax.js index 6c9e54f93..724a5b878 100644 --- a/unpacked/jax/output/CommonHTML/jax.js +++ b/unpacked/jax/output/CommonHTML/jax.js @@ -1794,8 +1794,9 @@ /********************************************************/ MML.mn.Augment({ + CHTMLremapMinus: function (text) {return text.replace(/^-/,"\u2212")}, toCommonHTML: function (node) { - node = this.CHTMLdefaultNode(node); + node = this.CHTMLdefaultNode(node,{childOptions:{remap:this.CHTMLremapMinus}}); var bbox = this.CHTML, text = this.data.join(""); if (bbox.skew != null && text.length !== 1) delete bbox.skew; if (bbox.r > bbox.w && text.length === 1 && !this.CHTMLvariant.noIC) { diff --git a/unpacked/jax/output/HTML-CSS/jax.js b/unpacked/jax/output/HTML-CSS/jax.js index 23a111c0b..7773158cf 100644 --- a/unpacked/jax/output/HTML-CSS/jax.js +++ b/unpacked/jax/output/HTML-CSS/jax.js @@ -2244,11 +2244,17 @@ }); MML.mn.Augment({ + HTMLremapMinus: function (text) {return text.replace(/^-/,"\u2212")}, toHTML: function (span) { span = this.HTMLhandleSize(this.HTMLcreateSpan(span)); span.bbox = null; var variant = this.HTMLgetVariant(); - for (var i = 0, m = this.data.length; i < m; i++) - {if (this.data[i]) {this.data[i].toHTML(span,variant)}} + var remap = this.HTMLremapMinus; + for (var i = 0, m = this.data.length; i < m; i++) { + if (this.data[i]) { + this.data[i].toHTML(span,variant,remap); + remap = null; + } + } if (!span.bbox) {span.bbox = this.HTMLzeroBBox()} if (this.data.join("").length !== 1) {delete span.bbox.skew} this.HTMLhandleSpace(span); diff --git a/unpacked/jax/output/NativeMML/jax.js b/unpacked/jax/output/NativeMML/jax.js index c7c436587..6936f2e98 100644 --- a/unpacked/jax/output/NativeMML/jax.js +++ b/unpacked/jax/output/NativeMML/jax.js @@ -890,6 +890,22 @@ } } }); + + MML.mn.Augment({ + NativeMMLremapMinus: function (text) {return text.replace(/^-/,"\u2212")}, + toNativeMML: function (parent) { + var tag = this.NativeMMLelement(this.type); + this.NativeMMLattributes(tag); + var remap = this.NativeMMLremapMinus; + for (var i = 0, m = this.data.length; i < m; i++) { + if (this.data[i]) { + this.data[i].toNativeMML(tag,remap); + remap = null; + } + } + parent.appendChild(tag); + } + }); var fontDir = AJAX.fileURL(MathJax.OutputJax.fontDir+"/HTML-CSS/TeX/otf"); @@ -1179,8 +1195,10 @@ // // Add a text node // - toNativeMML: function (parent) { - parent.appendChild(document.createTextNode(this.toString())); + toNativeMML: function (parent,remap) { + var text = this.toString(); + if (remap) text = remap(text); + parent.appendChild(document.createTextNode(text)); } }); diff --git a/unpacked/jax/output/SVG/jax.js b/unpacked/jax/output/SVG/jax.js index 3e6475a09..66ed6e16a 100644 --- a/unpacked/jax/output/SVG/jax.js +++ b/unpacked/jax/output/SVG/jax.js @@ -1569,6 +1569,31 @@ return svg; } }); + + MML.mn.Augment({ + SVGremapMinus: function (text) {return text.replace(/^-/,"\u2212")}, + toSVG: function () { + this.SVGgetStyles(); + var variant = this.SVGgetVariant(); + var svg = this.SVG(); this.SVGgetScale(svg); + this.SVGhandleSpace(svg); + var remap = this.SVGremapMinus; + for (var i = 0, m = this.data.length; i < m; i++) { + if (this.data[i]) { + var child = svg.Add(this.data[i].toSVG(variant,svg.scale,remap),svg.w,0,true); + if (child.skew) {svg.skew = child.skew} + remap = null; + } + } + svg.Clean(); var text = this.data.join(""); + if (svg.skew && text.length !== 1) {delete svg.skew} + if (svg.r > svg.w && text.length === 1 && !variant.noIC) + {svg.ic = svg.r - svg.w; svg.w = svg.r} + this.SVGhandleColor(svg); + this.SVGsaveData(svg); + return svg; + }, + }), MML.mtext.Augment({ toSVG: function () {