Add an xml object to the ElementJax classes to handle the annotation-xml data, and make implementations of it in the various input and output jax (resolves issue #117).
This commit is contained in:
parent
bb09608b23
commit
8f20a75ffe
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -12,5 +12,5 @@
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
MathJax.Hub.Register.LoadHook("[MathJax]/jax/element/mml/jax.js",function(){var b="1.1";var a=MathJax.ElementJax.mml;a.mbase.Augment({toMathML:function(k){var g=(this.inferred&&this.parent.inferRow);if(k==null){k=""}var e=this.type,d=this.MathMLattributes();if(e==="mspace"){return k+"<"+e+d+" />"}var j=[];var h=(this.isToken?"":k+(g?"":" "));for(var f=0,c=this.data.length;f<c;f++){if(this.data[f]){j.push(this.data[f].toMathML(h))}else{if(!this.isToken){j.push(h+"<mrow />")}}}if(this.isToken){return k+"<"+e+d+">"+j.join("")+"</"+e+">"}if(g){return j.join("\n")}if(j.length===0||(j.length===1&&j[0]==="")){return k+"<"+e+d+" />"}return k+"<"+e+d+">\n"+j.join("\n")+"\n"+k+"</"+e+">"},MathMLattributes:function(){var j=[],g=this.defaults;var c=this.copyAttributes,l=this.skipAttributes;if(this.type==="math"){j.push('xmlns="http://www.w3.org/1998/Math/MathML"')}if(this.type==="mstyle"){g=a.math.prototype.defaults}for(var d in g){if(!l[d]&&g.hasOwnProperty(d)){var e=(d==="open"||d==="close");if(this[d]!=null&&(e||this[d]!==g[d])){var k=this[d];delete this[d];if(e||this.Get(d)!==k){j.push(d+'="'+this.quoteHTML(k)+'"')}this[d]=k}}}for(var h=0,f=c.length;h<f;h++){if(this[c[h]]!=null){j.push(c[h]+'="'+this.quoteHTML(this[c[h]])+'"')}}if(j.length){return" "+j.join(" ")}else{return""}},copyAttributes:["fontfamily","fontsize","fontweight","fontstyle","color","background","id","class","href","style"],skipAttributes:{texClass:1,useHeight:1,texprimestyle:1},quoteHTML:function(e){e=String(e).split("");for(var f=0,d=e.length;f<d;f++){var h=e[f].charCodeAt(0);if(h<32||h>126){e[f]="&#x"+h.toString(16).toUpperCase()+";"}else{var g={"&":"&","<":"<",">":">",'"':"""}[e[f]];if(g){e[f]=g}}}return e.join("")}});a.msubsup.Augment({toMathML:function(h){var e=this.type;if(this.data[this.sup]==null){e="msub"}if(this.data[this.sub]==null){e="msup"}var d=this.MathMLattributes();delete this.data[0].inferred;var g=[];for(var f=0,c=this.data.length;f<c;f++){if(this.data[f]){g.push(this.data[f].toMathML(h+" "))}}return h+"<"+e+d+">\n"+g.join("\n")+"\n"+h+"</"+e+">"}});a.munderover.Augment({toMathML:function(h){var e=this.type;if(this.data[this.under]==null){e="mover"}if(this.data[this.over]==null){e="munder"}var d=this.MathMLattributes();delete this.data[0].inferred;var g=[];for(var f=0,c=this.data.length;f<c;f++){if(this.data[f]){g.push(this.data[f].toMathML(h+" "))}}return h+"<"+e+d+">\n"+g.join("\n")+"\n"+h+"</"+e+">"}});a.TeXAtom.Augment({toMathML:function(c){return c+"<mrow>\n"+this.data[0].toMathML(c+" ")+"\n"+c+"</mrow>"}});a.chars.Augment({toMathML:function(c){return(c||"")+this.quoteHTML(this.toString())}});a.entity.Augment({toMathML:function(c){return(c||"")+"&"+this.data[0]+";<!-- "+this.toString()+" -->"}});MathJax.Hub.Register.StartupHook("TeX mathchoice Ready",function(){a.TeXmathchoice.Augment({toMathML:function(c){return this.Core().toMathML(c)}})});MathJax.Hub.Startup.signal.Post("toMathML Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/toMathML.js");
|
MathJax.Hub.Register.LoadHook("[MathJax]/jax/element/mml/jax.js",function(){var b="1.1";var a=MathJax.ElementJax.mml;a.mbase.Augment({toMathML:function(k){var g=(this.inferred&&this.parent.inferRow);if(k==null){k=""}var e=this.type,d=this.MathMLattributes();if(e==="mspace"){return k+"<"+e+d+" />"}var j=[];var h=(this.isToken?"":k+(g?"":" "));for(var f=0,c=this.data.length;f<c;f++){if(this.data[f]){j.push(this.data[f].toMathML(h))}else{if(!this.isToken){j.push(h+"<mrow />")}}}if(this.isToken){return k+"<"+e+d+">"+j.join("")+"</"+e+">"}if(g){return j.join("\n")}if(j.length===0||(j.length===1&&j[0]==="")){return k+"<"+e+d+" />"}return k+"<"+e+d+">\n"+j.join("\n")+"\n"+k+"</"+e+">"},MathMLattributes:function(){var j=[],g=this.defaults;var c=this.copyAttributes,l=this.skipAttributes;if(this.type==="math"){j.push('xmlns="http://www.w3.org/1998/Math/MathML"')}if(this.type==="mstyle"){g=a.math.prototype.defaults}for(var d in g){if(!l[d]&&g.hasOwnProperty(d)){var e=(d==="open"||d==="close");if(this[d]!=null&&(e||this[d]!==g[d])){var k=this[d];delete this[d];if(e||this.Get(d)!==k){j.push(d+'="'+this.quoteHTML(k)+'"')}this[d]=k}}}for(var h=0,f=c.length;h<f;h++){if(this[c[h]]!=null){j.push(c[h]+'="'+this.quoteHTML(this[c[h]])+'"')}}if(j.length){return" "+j.join(" ")}else{return""}},copyAttributes:["fontfamily","fontsize","fontweight","fontstyle","color","background","id","class","href","style"],skipAttributes:{texClass:1,useHeight:1,texprimestyle:1},quoteHTML:function(e){e=String(e).split("");for(var f=0,d=e.length;f<d;f++){var h=e[f].charCodeAt(0);if(h<32||h>126){e[f]="&#x"+h.toString(16).toUpperCase()+";"}else{var g={"&":"&","<":"<",">":">",'"':"""}[e[f]];if(g){e[f]=g}}}return e.join("")}});a.msubsup.Augment({toMathML:function(h){var e=this.type;if(this.data[this.sup]==null){e="msub"}if(this.data[this.sub]==null){e="msup"}var d=this.MathMLattributes();delete this.data[0].inferred;var g=[];for(var f=0,c=this.data.length;f<c;f++){if(this.data[f]){g.push(this.data[f].toMathML(h+" "))}}return h+"<"+e+d+">\n"+g.join("\n")+"\n"+h+"</"+e+">"}});a.munderover.Augment({toMathML:function(h){var e=this.type;if(this.data[this.under]==null){e="mover"}if(this.data[this.over]==null){e="munder"}var d=this.MathMLattributes();delete this.data[0].inferred;var g=[];for(var f=0,c=this.data.length;f<c;f++){if(this.data[f]){g.push(this.data[f].toMathML(h+" "))}}return h+"<"+e+d+">\n"+g.join("\n")+"\n"+h+"</"+e+">"}});a.TeXAtom.Augment({toMathML:function(c){return c+"<mrow>\n"+this.data[0].toMathML(c+" ")+"\n"+c+"</mrow>"}});a.chars.Augment({toMathML:function(c){return(c||"")+this.quoteHTML(this.toString())}});a.entity.Augment({toMathML:function(c){return(c||"")+"&"+this.data[0]+";<!-- "+this.toString()+" -->"}});a.xml.Augment({toMathML:function(c){return(c||"")+this.toString()}});MathJax.Hub.Register.StartupHook("TeX mathchoice Ready",function(){a.TeXmathchoice.Augment({toMathML:function(c){return this.Core().toMathML(c)}})});MathJax.Hub.Startup.signal.Post("toMathML Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/toMathML.js");
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -132,6 +132,10 @@ MathJax.Hub.Register.LoadHook("[MathJax]/jax/element/mml/jax.js",function () {
|
||||||
toMathML: function (space) {return (space||"") + "&"+this.data[0]+";<!-- "+this.toString()+" -->"}
|
toMathML: function (space) {return (space||"") + "&"+this.data[0]+";<!-- "+this.toString()+" -->"}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
MML.xml.Augment({
|
||||||
|
toMathML: function (space) {return (space||"") + this.toString()}
|
||||||
|
});
|
||||||
|
|
||||||
MathJax.Hub.Register.StartupHook("TeX mathchoice Ready",function () {
|
MathJax.Hub.Register.StartupHook("TeX mathchoice Ready",function () {
|
||||||
MML.TeXmathchoice.Augment({
|
MML.TeXmathchoice.Augment({
|
||||||
toMathML: function (space) {return this.Core().toMathML(space)}
|
toMathML: function (space) {return this.Core().toMathML(space)}
|
||||||
|
|
|
@ -1175,6 +1175,22 @@ MathJax.ElementJax.mml.Augment({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
MML.xml = MML.mbase.Subclass({
|
||||||
|
type: "xml",
|
||||||
|
Init: function () {
|
||||||
|
this.div = document.createElement("div");
|
||||||
|
return this.SUPER(arguments).Init.apply(this,arguments);
|
||||||
|
},
|
||||||
|
Append: function () {
|
||||||
|
for (var i = 0, m = arguments.length; i < m; i++) {
|
||||||
|
this.data.push(arguments[i]);
|
||||||
|
this.div.appendChild(document.importNode(arguments[i],true));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
value: function () {return this.div},
|
||||||
|
toString: function () {return this.div.innerHTML}
|
||||||
|
});
|
||||||
|
|
||||||
MML.TeXAtom = MML.mbase.Subclass({
|
MML.TeXAtom = MML.mbase.Subclass({
|
||||||
type: "texatom",
|
type: "texatom",
|
||||||
inferRow: TRUE,
|
inferRow: TRUE,
|
||||||
|
|
|
@ -82,6 +82,8 @@
|
||||||
} else if (child.nodeValue.match(/\S/)) {
|
} else if (child.nodeValue.match(/\S/)) {
|
||||||
MATHML.Error("Unexpected text node: '"+child.nodeValue+"'");
|
MATHML.Error("Unexpected text node: '"+child.nodeValue+"'");
|
||||||
}
|
}
|
||||||
|
} else if (mml.type === "annotation-xml") {
|
||||||
|
mml.Append(MML.xml(child));
|
||||||
} else {
|
} else {
|
||||||
var cmml = this.MakeMML(child); mml.Append(cmml);
|
var cmml = this.MakeMML(child); mml.Append(cmml);
|
||||||
if (cmml.mmlSelfClosing && cmml.data.length)
|
if (cmml.mmlSelfClosing && cmml.data.length)
|
||||||
|
|
|
@ -1459,6 +1459,15 @@
|
||||||
this.HTMLhandleVariant(span,variant,this.toString().replace(/[\u2061-\u2064]/g,"")); // remove invisibles
|
this.HTMLhandleVariant(span,variant,this.toString().replace(/[\u2061-\u2064]/g,"")); // remove invisibles
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
MML.xml.Augment({
|
||||||
|
toHTML: function (span,variant) {
|
||||||
|
for (var i = 0, m = this.data.length; i < m; i++)
|
||||||
|
{span.appendChild(this.data[i].cloneNode(true))}
|
||||||
|
span.bbox.w = HTMLCSS.getW(span); span.bbox.rw = span.bbox.w;
|
||||||
|
var HD = HTMLCSS.getHD(span);
|
||||||
|
span.bbox.h = HD.h; span.bbox.d = HD.d;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
MML.mi.Augment({
|
MML.mi.Augment({
|
||||||
toHTML: function (span) {
|
toHTML: function (span) {
|
||||||
|
|
|
@ -443,6 +443,16 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
MML.xml.Augment({
|
||||||
|
//
|
||||||
|
// Insert the XML verbatim
|
||||||
|
//
|
||||||
|
toNativeMML: function (parent) {
|
||||||
|
for (var i = 0, m = this.data.length; i < m; i++)
|
||||||
|
{parent.appendChild(this.data[i].cloneNode(true))}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
HUB.Register.StartupHook("TeX mathchoice Ready",function () {
|
HUB.Register.StartupHook("TeX mathchoice Ready",function () {
|
||||||
MML.TeXmathchoice.Augment({
|
MML.TeXmathchoice.Augment({
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue
Block a user