diff --git a/mathjax/extensions/mml2jax.js b/mathjax/extensions/mml2jax.js index ba4f87fc6..1533e82df 100644 --- a/mathjax/extensions/mml2jax.js +++ b/mathjax/extensions/mml2jax.js @@ -13,6 +13,6 @@ */ MathJax.Unpack([ - ['MathJax.Extension.mml2jax','={varsion:"1.0.2",config:{element:null,preview:"alttext"},MMLnamespace:"http://www.w3.org/1998/Math/MathML",','PreProcess',':function(','b){if(!','this.configured','){','MathJax.Hub.','Insert(','this.config',',(',7,'config.','mml2jax||{}));if(',9,'.Augment','){',7,8,'this,',9,15,')}',5,'=true}if(typeof(b)==="string"){b=document.getElementById(b)}if(!b){b=',9,'.element||document.body}var c=b.getElementsByTagName("math"),a;if(c.length===0&&','b.getElementsByTagNameNS','){c=',27,'(this.MMLnamespace,"math")}if(this.','msieMathTagBug','){','for(a=c.length-1;a>=0;a--){','if(c[a].nodeName==="MATH"){this.','msieProcessMath','(c[a])}else{','this.ProcessMath(c[a','])}}}else{',33,37,'])}}},ProcessMath',3,'e){var d','=e.parentNode;var a=document.createElement("script");a.type="math/mml";','d','.insertBefore(','a,e);if(this.msieScriptBug){var b=e.outerHTML;b=b.replace(/<\\?import .*?>/i,"").replace(/<\\?xml:namespace .*?\\/>/i,"");b=b.replace(/<(\\/?)m:/g,"<$1").replace(/ /g," ");a.text=b;d.removeChild(e)}else{var ','c=MathJax.HTML.Element("span','");c.appendChild(e);MathJax.HTML.addText(a,c.innerHTML)}','if(this.config.preview!=="none"){this.createPreview(e,a)}},',35,3,'e){var c',44,'c',46,'a,e);var b="";while(e&&','e.nodeName','!=="/MATH"){if(',58,'==="#text"||',58,'==="#comment"){b+=e.nodeValue.replace(/&/g,"&").replace(//g,">")}else{b+=this.','toLowerCase','(e.outerHTML)}var d=e;e=e.nextSibling;d','.parentNode.removeChild(','d)}if(e&&',58,'==="/MATH"){e',66,'e)}a.text=b+"";',50,64,3,'b){var d=b.split(/"/);for(var c=0,a=d.length;c=0;a--){','if(b[a].nodeName==="MATH"){this.','msieProcessMath','(b[a])}else{','this.ProcessMath(b[a','])}}}else{',51,55,'])}}}},ProcessMath',5,'e){var d','=e.parentNode;var a=document.createElement("script");a.type="math/mml";','d','.insertBefore(','a,e);if',35,'msieScriptBug','){var b=e.outerHTML;b=b.replace(/<\\?import .*?>/i,"").replace(/<\\?xml:namespace .*?\\/>/i,"");a.text=b.replace(/ /g," ");d.removeChild(e)}else{var ','c=MathJax.HTML.Element("span','");c.appendChild(e);MathJax.HTML.addText(a,c.innerHTML)}','if(this.config.preview!=="none"){this.createPreview(e,a)}},',53,5,'e){var c',62,'c',64,'a,e);var b="";while(e&&','e.nodeName','!=="/MATH"){if(',79,'==="#text"||',79,'==="#comment"){b+=e.nodeValue.replace(/&/g,"&").replace(//g,">")}else{b+=this.','toLowerCase','(e.outerHTML)}var d=e;e=e.nextSibling;d','.parentNode.removeChild(','d)}if(e&&',79,'==="/MATH"){e',87,'e)}a.text=b+"";',71,85,5,'b){var d=b.split(/"/);for(var c=0,a=d.length;c= 0; i--) { - if (math[i].nodeName === "MATH") {this.msieProcessMath(math[i])} - else {this.ProcessMath(math[i])} + // + // Handle all math tags with no namespaces + // + this.ProcessMathArray(element.getElementsByTagName("math")); + // + // Handle math with namespaces in XHTML + // + if (element.getElementsByTagNameNS) + {this.ProcessMathArray(element.getElementsByTagNameNS(this.MMLnamespace,"math"))} + // + // Handle math with namespaces in HTML + // + var html = document.getElementsByTagName("html")[0]; + if (html) { + for (var i = 0, m = html.attributes.length; i < m; i++) { + var attr = html.attributes[i]; + if (attr.nodeName.substr(0,6) === "xmlns:" && attr.nodeValue === this.MMLnamespace) + {this.ProcessMathArray(element.getElementsByTagName(attr.nodeName.substr(6)+":math"))} + } + } + }, + + ProcessMathArray: function (math) { + var i; + if (math.length) { + if (this.msieMathTagBug) { + for (i = math.length-1; i >= 0; i--) { + if (math[i].nodeName === "MATH") {this.msieProcessMath(math[i])} + else {this.ProcessMath(math[i])} + } + } else { + for (i = math.length-1; i >= 0; i--) {this.ProcessMath(math[i])} } - } else { - for (i = math.length-1; i >= 0; i--) {this.ProcessMath(math[i])} } }, @@ -66,8 +89,7 @@ MathJax.Extension.mml2jax = { if (this.msieScriptBug) { var html = math.outerHTML; html = html.replace(/<\?import .*?>/i,"").replace(/<\?xml:namespace .*?\/>/i,""); - html = html.replace(/<(\/?)m:/g,"<$1").replace(/ /g," "); - script.text = html; + script.text = html.replace(/ /g," "); parent.removeChild(math); } else { var span = MathJax.HTML.Element("span"); span.appendChild(math);