Merge branch 'develop' into issue214

Conflicts:
	jax/output/NativeMML/jax.js
This commit is contained in:
Frédéric Wang 2012-08-16 14:48:07 +02:00
commit 1120b713a4
38 changed files with 203 additions and 148 deletions

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

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

File diff suppressed because one or more lines are too long

View File

@ -12,5 +12,5 @@
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*/ */
MathJax.InputJax.TeX=MathJax.InputJax({id:"TeX",version:"2.0.1",directory:MathJax.InputJax.directory+"/TeX",extensionDir:MathJax.InputJax.extensionDir+"/TeX",config:{TagSide:"right",TagIndent:"0.8em",MultLineWidth:"85%",equationNumbers:{autoNumber:"none",formatNumber:function(a){return a},formatTag:function(a){return"("+a+")"},formatID:function(a){return"mjx-eqn-"+String(a).replace(/[:"'<>&]/g,"")},formatURL:function(a){return"#"+escape(a)},useLabelIds:true}}});MathJax.InputJax.TeX.Register("math/tex");MathJax.InputJax.TeX.loadComplete("config.js"); MathJax.InputJax.TeX=MathJax.InputJax({id:"TeX",version:"2.0.3",directory:MathJax.InputJax.directory+"/TeX",extensionDir:MathJax.InputJax.extensionDir+"/TeX",config:{TagSide:"right",TagIndent:"0.8em",MultLineWidth:"85%",equationNumbers:{autoNumber:"none",formatNumber:function(a){return a},formatTag:function(a){return"("+a+")"},formatID:function(a){return"mjx-eqn-"+String(a).replace(/[:"'<>&]/g,"")},formatURL:function(a){return"#"+escape(a)},useLabelIds:true}}});MathJax.InputJax.TeX.Register("math/tex");MathJax.InputJax.TeX.loadComplete("config.js");

File diff suppressed because one or more lines are too long

View File

@ -12,5 +12,5 @@
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*/ */
MathJax.OutputJax["HTML-CSS"]=MathJax.OutputJax({id:"HTML-CSS",version:"2.0.3",directory:MathJax.OutputJax.directory+"/HTML-CSS",extensionDir:MathJax.OutputJax.extensionDir+"/HTML-CSS",autoloadDir:MathJax.OutputJax.directory+"/HTML-CSS/autoload",fontDir:MathJax.OutputJax.directory+"/HTML-CSS/fonts",webfontDir:MathJax.OutputJax.fontDir+"/HTML-CSS",config:{scale:100,minScaleAdjust:50,availableFonts:["STIX","TeX"],preferredFont:"TeX",webFont:"TeX",imageFont:"TeX",undefinedFamily:"STIXGeneral,'Arial Unicode MS',serif",mtextFontInherit:false,EqnChunk:(MathJax.Hub.Browser.isMobile?10:50),EqnChunkFactor:1.5,EqnChunkDelay:100,linebreaks:{automatic:false,width:"container"},styles:{".MathJax_Display":{"text-align":"center",margin:"1em 0em"},".MathJax .merror":{"background-color":"#FFFF88",color:"#CC0000",border:"1px solid #CC0000",padding:"1px 3px","font-style":"normal","font-size":"90%"},"#MathJax_Tooltip":{"background-color":"InfoBackground",color:"InfoText",border:"1px solid black","box-shadow":"2px 2px 5px #AAAAAA","-webkit-box-shadow":"2px 2px 5px #AAAAAA","-moz-box-shadow":"2px 2px 5px #AAAAAA","-khtml-box-shadow":"2px 2px 5px #AAAAAA",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')",padding:"3px 4px"}}}});if(MathJax.Hub.Browser.isMSIE&&document.documentMode>=9){delete MathJax.OutputJax["HTML-CSS"].config.styles["#MathJax_Tooltip"].filter}if(!MathJax.Hub.config.delayJaxRegistration){MathJax.OutputJax["HTML-CSS"].Register("jax/mml")}MathJax.Hub.Register.StartupHook("End Config",[function(b,c){var a=b.Insert({minBrowserVersion:{Firefox:3,Opera:9.52,MSIE:6,Chrome:0.3,Safari:2,Konqueror:4},inlineMathDelimiters:["$","$"],displayMathDelimiters:["$$","$$"],multilineDisplay:true,minBrowserTranslate:function(f){var e=b.getJaxFor(f),k=["[Math]"],j;var h=document.createElement("span",{className:"MathJax_Preview"});if(e.inputJax==="TeX"){if(e.root.Get("displaystyle")){j=a.displayMathDelimiters;k=[j[0]+e.originalText+j[1]];if(a.multilineDisplay){k=k[0].split(/\n/)}}else{j=a.inlineMathDelimiters;k=[j[0]+e.originalText.replace(/^\s+/,"").replace(/\s+$/,"")+j[1]]}}for(var g=0,d=k.length;g<d;g++){h.appendChild(document.createTextNode(k[g]));if(g<d-1){h.appendChild(document.createElement("br"))}}f.parentNode.insertBefore(h,f)}},(b.config["HTML-CSS"]||{}));if(b.Browser.version!=="0.0"&&!b.Browser.versionAtLeast(a.minBrowserVersion[b.Browser]||0)){c.Translate=a.minBrowserTranslate;b.Config({showProcessingMessages:false});MathJax.Message.Set("Your browser does not support MathJax",null,4000);b.Startup.signal.Post("MathJax not supported")}},MathJax.Hub,MathJax.OutputJax["HTML-CSS"]]);MathJax.OutputJax["HTML-CSS"].loadComplete("config.js"); MathJax.OutputJax["HTML-CSS"]=MathJax.OutputJax({id:"HTML-CSS",version:"2.0.5",directory:MathJax.OutputJax.directory+"/HTML-CSS",extensionDir:MathJax.OutputJax.extensionDir+"/HTML-CSS",autoloadDir:MathJax.OutputJax.directory+"/HTML-CSS/autoload",fontDir:MathJax.OutputJax.directory+"/HTML-CSS/fonts",webfontDir:MathJax.OutputJax.fontDir+"/HTML-CSS",config:{scale:100,minScaleAdjust:50,availableFonts:["STIX","TeX"],preferredFont:"TeX",webFont:"TeX",imageFont:"TeX",undefinedFamily:"STIXGeneral,'Arial Unicode MS',serif",mtextFontInherit:false,EqnChunk:(MathJax.Hub.Browser.isMobile?10:50),EqnChunkFactor:1.5,EqnChunkDelay:100,linebreaks:{automatic:false,width:"container"},styles:{".MathJax_Display":{"text-align":"center",margin:"1em 0em"},".MathJax .merror":{"background-color":"#FFFF88",color:"#CC0000",border:"1px solid #CC0000",padding:"1px 3px","font-style":"normal","font-size":"90%"},"#MathJax_Tooltip":{"background-color":"InfoBackground",color:"InfoText",border:"1px solid black","box-shadow":"2px 2px 5px #AAAAAA","-webkit-box-shadow":"2px 2px 5px #AAAAAA","-moz-box-shadow":"2px 2px 5px #AAAAAA","-khtml-box-shadow":"2px 2px 5px #AAAAAA",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')",padding:"3px 4px"}}}});if(MathJax.Hub.Browser.isMSIE&&document.documentMode>=9){delete MathJax.OutputJax["HTML-CSS"].config.styles["#MathJax_Tooltip"].filter}if(!MathJax.Hub.config.delayJaxRegistration){MathJax.OutputJax["HTML-CSS"].Register("jax/mml")}MathJax.Hub.Register.StartupHook("End Config",[function(b,c){var a=b.Insert({minBrowserVersion:{Firefox:3,Opera:9.52,MSIE:6,Chrome:0.3,Safari:2,Konqueror:4},inlineMathDelimiters:["$","$"],displayMathDelimiters:["$$","$$"],multilineDisplay:true,minBrowserTranslate:function(f){var e=b.getJaxFor(f),k=["[Math]"],j;var h=document.createElement("span",{className:"MathJax_Preview"});if(e.inputJax==="TeX"){if(e.root.Get("displaystyle")){j=a.displayMathDelimiters;k=[j[0]+e.originalText+j[1]];if(a.multilineDisplay){k=k[0].split(/\n/)}}else{j=a.inlineMathDelimiters;k=[j[0]+e.originalText.replace(/^\s+/,"").replace(/\s+$/,"")+j[1]]}}for(var g=0,d=k.length;g<d;g++){h.appendChild(document.createTextNode(k[g]));if(g<d-1){h.appendChild(document.createElement("br"))}}f.parentNode.insertBefore(h,f)}},(b.config["HTML-CSS"]||{}));if(b.Browser.version!=="0.0"&&!b.Browser.versionAtLeast(a.minBrowserVersion[b.Browser]||0)){c.Translate=a.minBrowserTranslate;b.Config({showProcessingMessages:false});MathJax.Message.Set("Your browser does not support MathJax",null,4000);b.Startup.signal.Post("MathJax not supported")}},MathJax.Hub,MathJax.OutputJax["HTML-CSS"]]);MathJax.OutputJax["HTML-CSS"].loadComplete("config.js");

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -12,5 +12,5 @@
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*/ */
MathJax.OutputJax.NativeMML=MathJax.OutputJax({id:"NativeMML",version:"2.0.2",directory:MathJax.OutputJax.directory+"/NativeMML",extensionDir:MathJax.OutputJax.extensionDir+"/NativeMML",config:{scale:100,minScaleAdjust:50,styles:{"DIV.MathJax_MathML":{"text-align":"center",margin:".75em 0px"}}}});if(!MathJax.Hub.config.delayJaxRegistration){MathJax.OutputJax.NativeMML.Register("jax/mml")}MathJax.OutputJax.NativeMML.loadComplete("config.js"); MathJax.OutputJax.NativeMML=MathJax.OutputJax({id:"NativeMML",version:"2.0.4",directory:MathJax.OutputJax.directory+"/NativeMML",extensionDir:MathJax.OutputJax.extensionDir+"/NativeMML",config:{scale:100,minScaleAdjust:50,styles:{"DIV.MathJax_MathML":{"text-align":"center",margin:".75em 0px"}}}});if(!MathJax.Hub.config.delayJaxRegistration){MathJax.OutputJax.NativeMML.Register("jax/mml")}MathJax.OutputJax.NativeMML.loadComplete("config.js");

File diff suppressed because one or more lines are too long

View File

@ -12,5 +12,5 @@
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*/ */
MathJax.OutputJax.SVG=MathJax.OutputJax({id:"SVG",version:"2.0.2",directory:MathJax.OutputJax.directory+"/SVG",extensionDir:MathJax.OutputJax.extensionDir+"/SVG",autoloadDir:MathJax.OutputJax.directory+"/SVG/autoload",fontDir:MathJax.OutputJax.directory+"/SVG/fonts",config:{scale:100,minScaleAdjust:50,font:"TeX",blacker:10,mtextFontInherit:false,undefinedFamily:"STIXGeneral,'Arial Unicode MS',serif",addMMLclasses:false,EqnChunk:(MathJax.Hub.Browser.isMobile?10:50),EqnChunkFactor:1.5,EqnChunkDelay:100,linebreaks:{automatic:false,width:"container"},styles:{".MathJax_SVG_Display":{"text-align":"center",margin:"1em 0em"},"#MathJax_SVG_Tooltip":{"background-color":"InfoBackground",color:"InfoText",border:"1px solid black","box-shadow":"2px 2px 5px #AAAAAA","-webkit-box-shadow":"2px 2px 5px #AAAAAA","-moz-box-shadow":"2px 2px 5px #AAAAAA","-khtml-box-shadow":"2px 2px 5px #AAAAAA",padding:"3px 4px"}}}});if(!MathJax.Hub.config.delayJaxRegistration){MathJax.OutputJax.SVG.Register("jax/mml")}MathJax.OutputJax.SVG.loadComplete("config.js"); MathJax.OutputJax.SVG=MathJax.OutputJax({id:"SVG",version:"2.0.3",directory:MathJax.OutputJax.directory+"/SVG",extensionDir:MathJax.OutputJax.extensionDir+"/SVG",autoloadDir:MathJax.OutputJax.directory+"/SVG/autoload",fontDir:MathJax.OutputJax.directory+"/SVG/fonts",config:{scale:100,minScaleAdjust:50,font:"TeX",blacker:10,mtextFontInherit:false,undefinedFamily:"STIXGeneral,'Arial Unicode MS',serif",addMMLclasses:false,EqnChunk:(MathJax.Hub.Browser.isMobile?10:50),EqnChunkFactor:1.5,EqnChunkDelay:100,linebreaks:{automatic:false,width:"container"},styles:{".MathJax_SVG_Display":{"text-align":"center",margin:"1em 0em"},"#MathJax_SVG_Tooltip":{"background-color":"InfoBackground",color:"InfoText",border:"1px solid black","box-shadow":"2px 2px 5px #AAAAAA","-webkit-box-shadow":"2px 2px 5px #AAAAAA","-moz-box-shadow":"2px 2px 5px #AAAAAA","-khtml-box-shadow":"2px 2px 5px #AAAAAA",padding:"3px 4px"}}}});if(!MathJax.Hub.config.delayJaxRegistration){MathJax.OutputJax.SVG.Register("jax/mml")}MathJax.OutputJax.SVG.loadComplete("config.js");

File diff suppressed because one or more lines are too long

View File

@ -24,7 +24,7 @@
*/ */
(function (HUB,HTML,AJAX,CALLBACK,OUTPUT) { (function (HUB,HTML,AJAX,CALLBACK,OUTPUT) {
var VERSION = "2.0.2"; var VERSION = "2.0.4";
var SIGNAL = MathJax.Callback.Signal("menu") // signal for menu events var SIGNAL = MathJax.Callback.Signal("menu") // signal for menu events
@ -609,7 +609,7 @@
]]); ]]);
MENU.About.div = MENU.Background(MENU.About); MENU.About.div = MENU.Background(MENU.About);
var about = HTML.addElement(MENU.About.div,"div",{ var about = HTML.addElement(MENU.About.div,"div",{
id: "MathJax_About", onclick: MENU.About.Remove id: "MathJax_About"
},[ },[
["b",{style:{fontSize:"120%"}},["MathJax"]]," v"+MathJax.version,["br"], ["b",{style:{fontSize:"120%"}},["MathJax"]]," v"+MathJax.version,["br"],
"using "+font,["br"],["br"], "using "+font,["br"],["br"],
@ -618,7 +618,12 @@
"max-height":"20em", overflow:"auto", "max-height":"20em", overflow:"auto",
"background-color":"#E4E4E4", padding:".4em .6em", border:"1px inset" "background-color":"#E4E4E4", padding:".4em .6em", border:"1px inset"
}},jax],["br"],["br"], }},jax],["br"],["br"],
["a",{href:"http://www.mathjax.org/"},["www.mathjax.org"]] ["a",{href:"http://www.mathjax.org/"},["www.mathjax.org"]],
["img", {
src: CONFIG.closeImg,
style: {width:"21px", height:"21px", position:"absolute", top:".2em", right:".2em"},
onclick: MENU.About.Remove
}]
]); ]);
var doc = (document.documentElement||{}); var doc = (document.documentElement||{});
var H = window.innerHeight || doc.clientHeight || doc.scrollHeight || 0; var H = window.innerHeight || doc.clientHeight || doc.scrollHeight || 0;

View File

@ -23,7 +23,7 @@
*/ */
MathJax.Extension["TeX/mhchem"] = { MathJax.Extension["TeX/mhchem"] = {
version: "2.0" version: "2.0.1"
}; };
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
@ -136,7 +136,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
}, },
// //
// Make a number of fraction preceeding an atom, // Make a number or fraction preceeding an atom,
// or a subscript for an atom. // or a subscript for an atom.
// //
ParseNumber: function () { ParseNumber: function () {
@ -215,7 +215,8 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
c = this.string.charAt(++this.i); c = this.string.charAt(++this.i);
if (c === "{") { if (c === "{") {
this.i++; var m = this.Find("}"); this.i++; var m = this.Find("}");
if (m === "-.") {this.sup += "{-}{\\cdot}"} else if (m) {this.sup += CE(m).Parse()} if (m === "-.") {this.sup += "{-}{\\cdot}"}
else if (m) {this.sup += CE(m).Parse().replace(/^\{-\}/,"-")}
} else if (c === " " || c === "") { } else if (c === " " || c === "") {
this.tex += "{\\"+this.Arrows["^"]+"}"; this.i++; this.tex += "{\\"+this.Arrows["^"]+"}"; this.i++;
} else { } else {
@ -228,7 +229,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
// //
ParseSubscript: function (c) { ParseSubscript: function (c) {
if (this.string.charAt(++this.i) == "{") { if (this.string.charAt(++this.i) == "{") {
this.i++; this.sub += CE(this.Find("}")).Parse(); this.i++; this.sub += CE(this.Find("}")).Parse().replace(/^\{-\}/,"-");
} else { } else {
var n = this.Match(/^\d+/); var n = this.Match(/^\d+/);
if (n) {this.sub += n} if (n) {this.sub += n}
@ -300,15 +301,15 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
// //
// right-justify super- and subscripts when they are before the atom // right-justify super- and subscripts when they are before the atom
// //
var n = Math.abs(this.sup.length-this.sub.length); var sup = this.sup, sub = this.sub;
if (n) { if (!sup.match(/\d/)) {sup += "\\vphantom{0}"} // force common heights
var zeros = "0000000000".substr(0,n); if (!sub.match(/\d/)) {sub += "\\vphantom{0}"}
var script = (this.sup.length > this.sub.length ? "sub" : "sup"); this.tex += "\\raise 1pt{\\scriptstyle\\begin{CEscriptstack}"+sup+"\\\\"+
this[script] = "\\phantom{"+zeros+"}" + this[script]; sub+"\\end{CEscriptstack}}\\kern-.125em ";
} } else {
}
if (!this.sup) {this.sup = "\\Space{0pt}{0pt}{.2em}"} // forces subscripts to align properly if (!this.sup) {this.sup = "\\Space{0pt}{0pt}{.2em}"} // forces subscripts to align properly
this.tex += "^{"+this.sup+"}_{"+this.sub+"}"; this.tex += "^{"+this.sup+"}_{"+this.sub+"}";
}
this.sup = this.sub = ""; this.sup = this.sub = "";
} }
this.atom = false; this.atom = false;
@ -358,6 +359,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
}); });
MathJax.Extension["TeX/mhchem"].CE = CE;
/***************************************************************************/ /***************************************************************************/
@ -383,7 +385,8 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
// Needed for \bond for the ~ forms // Needed for \bond for the ~ forms
// //
MACROS.tripledash = ["Macro","\\raise3mu{\\tiny\\text{-}\\kern2mu\\text{-}\\kern2mu\\text{-}}"]; MACROS.tripledash = ["Macro","\\raise3mu{\\tiny\\text{-}\\kern2mu\\text{-}\\kern2mu\\text{-}}"];
TEX.Definitions.environment.CEstack = ['Array',null,null,null,'r',null,"0.001em",'T',1] TEX.Definitions.environment.CEstack = ['Array',null,null,null,'r',null,"0.001em",'T',1];
TEX.Definitions.environment.CEscriptstack = ['Array',null,null,null,'r',null,"0.2em",'S',1];
// //
// Add \hyphen used in some mhchem examples // Add \hyphen used in some mhchem examples

View File

@ -27,7 +27,7 @@ MathJax.ElementJax.mml = MathJax.ElementJax({
mimeType: "jax/mml" mimeType: "jax/mml"
},{ },{
id: "mml", id: "mml",
version: "2.0", version: "2.0.3",
directory: MathJax.ElementJax.directory + "/mml", directory: MathJax.ElementJax.directory + "/mml",
extensionDir: MathJax.ElementJax.extensionDir + "/mml", extensionDir: MathJax.ElementJax.extensionDir + "/mml",
optableDir: MathJax.ElementJax.directory + "/mml/optable" optableDir: MathJax.ElementJax.directory + "/mml/optable"
@ -395,7 +395,7 @@ MathJax.ElementJax.mml.Augment({
}, },
setBaseTeXclasses: function (prev) { setBaseTeXclasses: function (prev) {
this.getPrevClass(prev); this.texClass = null; this.getPrevClass(prev); this.texClass = null;
if (this.isEmbellished()) { if (this.isEmbellished() || this.data[0].isa(MML.mi)) {
prev = this.data[0].setTeXclass(prev); prev = this.data[0].setTeXclass(prev);
this.updateTeXclass(this.Core()); this.updateTeXclass(this.Core());
} else {if (this.data[0]) {this.data[0].setTeXclass()}; prev = this} } else {if (this.data[0]) {this.data[0].setTeXclass()}; prev = this}
@ -567,7 +567,11 @@ MathJax.ElementJax.mml.Augment({
setTeXclass: function (prev) { setTeXclass: function (prev) {
this.getValues("lspace","rspace"); // sets useMMLspacing this.getValues("lspace","rspace"); // sets useMMLspacing
if (this.useMMLspacing) {this.texClass = MML.TEXCLASS.NONE; return this} if (this.useMMLspacing) {this.texClass = MML.TEXCLASS.NONE; return this}
this.texClass = this.Get("texClass"); if (this.texClass === MML.TEXCLASS.NONE) {return prev} this.texClass = this.Get("texClass");
return this.adjustTeXclass(prev);
},
adjustTeXclass: function (prev) {
if (this.texClass === MML.TEXCLASS.NONE) {return prev}
if (prev) {this.prevClass = prev.texClass || MML.TEXCLASS.ORD; this.prevLevel = prev.Get("scriptlevel")} if (prev) {this.prevClass = prev.texClass || MML.TEXCLASS.ORD; this.prevLevel = prev.Get("scriptlevel")}
else {this.prevClass = MML.TEXCLASS.NONE} else {this.prevClass = MML.TEXCLASS.NONE}
if (this.texClass === MML.TEXCLASS.BIN && if (this.texClass === MML.TEXCLASS.BIN &&
@ -1234,7 +1238,6 @@ MathJax.ElementJax.mml.Augment({
var nNode, i, m; var nNode, i, m;
if (node.nodeType === 1) { // ELEMENT_NODE if (node.nodeType === 1) { // ELEMENT_NODE
nNode = document.createElement(node.nodeName); nNode = document.createElement(node.nodeName);
if (node.className) {nNode.className=iNode.className}
for (i = 0, m = node.attributes.length; i < m; i++) { for (i = 0, m = node.attributes.length; i < m; i++) {
var attribute = node.attributes[i]; var attribute = node.attributes[i];
if (attribute.specified && attribute.nodeValue != null && attribute.nodeValue != '') if (attribute.specified && attribute.nodeValue != null && attribute.nodeValue != '')
@ -1262,10 +1265,10 @@ MathJax.ElementJax.mml.Augment({
inferRow: true, inferRow: true,
texClass: MML.TEXCLASS.ORD, texClass: MML.TEXCLASS.ORD,
setTeXclass: function (prev) { setTeXclass: function (prev) {
this.getPrevClass(prev);
this.data[0].setTeXclass(); this.data[0].setTeXclass();
return this; return this.adjustTeXclass(prev);
} },
adjustTeXclass: MML.mo.prototype.adjustTeXclass
}); });
MML.NULL = MML.mbase().With({type:"null"}); MML.NULL = MML.mbase().With({type:"null"});

View File

@ -24,7 +24,7 @@
MathJax.InputJax.TeX = MathJax.InputJax({ MathJax.InputJax.TeX = MathJax.InputJax({
id: "TeX", id: "TeX",
version: "2.0.1", version: "2.0.3",
directory: MathJax.InputJax.directory + "/TeX", directory: MathJax.InputJax.directory + "/TeX",
extensionDir: MathJax.InputJax.extensionDir + "/TeX", extensionDir: MathJax.InputJax.extensionDir + "/TeX",

View File

@ -135,6 +135,16 @@
type: "close", isClose: true type: "close", isClose: true
}); });
STACKITEM.prime = STACKITEM.Subclass({
type: "prime",
checkItem: function (item) {
if (this.data[0].type !== "msubsup")
{return [MML.msup(this.data[0],this.data[1]),item]}
this.data[0].SetData(this.data[0].sup,this.data[1]);
return [this.data[0],item];
}
});
STACKITEM.subsup = STACKITEM.Subclass({ STACKITEM.subsup = STACKITEM.Subclass({
type: "subsup", type: "subsup",
stopError: "Missing superscript or subscript argument", stopError: "Missing superscript or subscript argument",
@ -142,6 +152,10 @@
var script = ["","subscript","superscript"][this.position]; var script = ["","subscript","superscript"][this.position];
if (item.type === "open" || item.type === "left") {return true} if (item.type === "open" || item.type === "left") {return true}
if (item.type === "mml") { if (item.type === "mml") {
if (this.primes) {
if (this.position === 2) {item.data[0] = MML.mrow(this.primes,item.data[0])}
else {this.data[0].SetData(2,this.primes)}
}
this.data[0].SetData(this.position,item.data[0]); this.data[0].SetData(this.position,item.data[0]);
return STACKITEM.mml(this.data[0]); return STACKITEM.mml(this.data[0]);
} }
@ -335,9 +349,11 @@
} }
}); });
STACKITEM.not.remap = { STACKITEM.not.remap = {
0x2190:0x219A, 0x2192:0x219B, 0x2194:0x21AE,
0x21D0:0x21CD, 0x21D2:0x21CF, 0x21D4:0x21CE,
0x2208:0x2209, 0x220B:0x220C, 0x2223:0x2224, 0x2225:0x2226, 0x2208:0x2209, 0x220B:0x220C, 0x2223:0x2224, 0x2225:0x2226,
0x223C:0x2241, 0x007E:0x2241, 0x2243:0x2244, 0x2245:0x2247, 0x223C:0x2241, 0x007E:0x2241, 0x2243:0x2244, 0x2245:0x2247,
0x2248:0x2249, 0x003D:0x2260, 0x2261:0x2262, 0x2248:0x2249, 0x224D:0x226D, 0x003D:0x2260, 0x2261:0x2262,
0x003C:0x226E, 0x003E:0x226F, 0x2264:0x2270, 0x2265:0x2271, 0x003C:0x226E, 0x003E:0x226F, 0x2264:0x2270, 0x2265:0x2271,
0x2272:0x2274, 0x2273:0x2275, 0x2276:0x2278, 0x2277:0x2279, 0x2272:0x2274, 0x2273:0x2275, 0x2276:0x2278, 0x2277:0x2279,
0x227A:0x2280, 0x227B:0x2281, 0x2282:0x2284, 0x2283:0x2285, 0x227A:0x2280, 0x227B:0x2281, 0x2282:0x2284, 0x2283:0x2285,
@ -453,7 +469,7 @@
Im: ['2111',{mathvariant: MML.VARIANT.NORMAL}], Im: ['2111',{mathvariant: MML.VARIANT.NORMAL}],
partial: ['2202',{mathvariant: MML.VARIANT.NORMAL}], partial: ['2202',{mathvariant: MML.VARIANT.NORMAL}],
infty: ['221E',{mathvariant: MML.VARIANT.NORMAL}], infty: ['221E',{mathvariant: MML.VARIANT.NORMAL}],
prime: ['2032',{mathvariant: MML.VARIANT.NORMAL}], prime: ['2032',{mathvariant: MML.VARIANT.NORMAL, variantForm: true}],
emptyset: ['2205',{mathvariant: MML.VARIANT.NORMAL}], emptyset: ['2205',{mathvariant: MML.VARIANT.NORMAL}],
nabla: ['2207',{mathvariant: MML.VARIANT.NORMAL}], nabla: ['2207',{mathvariant: MML.VARIANT.NORMAL}],
top: ['22A4',{mathvariant: MML.VARIANT.NORMAL}], top: ['22A4',{mathvariant: MML.VARIANT.NORMAL}],
@ -1139,13 +1155,12 @@
Superscript: function (c) { Superscript: function (c) {
if (this.GetNext().match(/\d/)) // don't treat numbers as a unit if (this.GetNext().match(/\d/)) // don't treat numbers as a unit
{this.string = this.string.substr(0,this.i+1)+" "+this.string.substr(this.i+1)} {this.string = this.string.substr(0,this.i+1)+" "+this.string.substr(this.i+1)}
var position, base = this.stack.Prev(); if (!base) {base = MML.mi("")} var position, primes, base, top = this.stack.Top();
if (top.type === "prime") {base = top.data[0]; primes = top.data[1]; this.stack.Pop()}
else {base = this.stack.Prev(); if (!base) {base = MML.mi("")}}
if (base.isEmbellishedWrapper) {base = base.data[0].data[0]} if (base.isEmbellishedWrapper) {base = base.data[0].data[0]}
if (base.type === "msubsup") { if (base.type === "msubsup") {
if (base.data[base.sup]) { if (base.data[base.sup]) {TEX.Error("Double exponent: use braces to clarify")}
if (!base.data[base.sup].isPrime) {TEX.Error("Double exponent: use braces to clarify")}
base = MML.msubsup(base,null,null);
}
position = base.sup; position = base.sup;
} else if (base.movesupsub) { } else if (base.movesupsub) {
if (base.type !== "munderover" || base.data[base.over]) { if (base.type !== "munderover" || base.data[base.over]) {
@ -1157,12 +1172,14 @@
base = MML.msubsup(base,null,null); base = MML.msubsup(base,null,null);
position = base.sup; position = base.sup;
} }
this.Push(STACKITEM.subsup(base).With({position: position})); this.Push(STACKITEM.subsup(base).With({position: position, primes: primes}));
}, },
Subscript: function (c) { Subscript: function (c) {
if (this.GetNext().match(/\d/)) // don't treat numbers as a unit if (this.GetNext().match(/\d/)) // don't treat numbers as a unit
{this.string = this.string.substr(0,this.i+1)+" "+this.string.substr(this.i+1)} {this.string = this.string.substr(0,this.i+1)+" "+this.string.substr(this.i+1)}
var position, base = this.stack.Prev(); if (!base) {base = MML.mi("")} var position, primes, base, top = this.stack.Top();
if (top.type === "prime") {base = top.data[0]; primes = top.data[1]; this.stack.Pop()}
else {base = this.stack.Prev(); if (!base) {base = MML.mi("")}}
if (base.isEmbellishedWrapper) {base = base.data[0].data[0]} if (base.isEmbellishedWrapper) {base = base.data[0].data[0]}
if (base.type === "msubsup") { if (base.type === "msubsup") {
if (base.data[base.sub]) {TEX.Error("Double subscripts: use braces to clarify")} if (base.data[base.sub]) {TEX.Error("Double subscripts: use braces to clarify")}
@ -1177,7 +1194,7 @@
base = MML.msubsup(base,null,null); base = MML.msubsup(base,null,null);
position = base.sub; position = base.sub;
} }
this.Push(STACKITEM.subsup(base).With({position: position})); this.Push(STACKITEM.subsup(base).With({position: position, primes: primes}));
}, },
PRIME: "\u2032", SMARTQUOTE: "\u2019", PRIME: "\u2032", SMARTQUOTE: "\u2019",
Prime: function (c) { Prime: function (c) {
@ -1187,8 +1204,7 @@
var sup = ""; this.i--; var sup = ""; this.i--;
do {sup += this.PRIME; this.i++, c = this.GetNext()} do {sup += this.PRIME; this.i++, c = this.GetNext()}
while (c === "'" || c === this.SMARTQUOTE); while (c === "'" || c === this.SMARTQUOTE);
sup = this.mmlToken(MML.mo(MML.chars(sup)).With({isPrime: true})); this.Push(STACKITEM.prime(base,this.mmlToken(MML.mo(sup))));
this.Push(MML.msup(base,sup));
}, },
mi2mo: function (mi) { mi2mo: function (mi) {
var mo = MML.mo(); mo.Append.apply(mo,mi.data); var id; var mo = MML.mo(); mo.Append.apply(mo,mi.data); var id;
@ -1592,9 +1608,12 @@
}, },
CrLaTeX: function (name) { CrLaTeX: function (name) {
var n = this.GetBrackets(name,"").replace(/ /g,""); var n;
if (this.string.charAt(this.i) === "[") {
n = this.GetBrackets(name,"").replace(/ /g,"");
if (n && !n.match(/^(((\.\d+|\d+(\.\d*)?))(pt|em|ex|mu|mm|cm|in|pc))$/)) if (n && !n.match(/^(((\.\d+|\d+(\.\d*)?))(pt|em|ex|mu|mm|cm|in|pc))$/))
{TEX.Error("Bracket argument to "+name+" must be a dimension")} {TEX.Error("Bracket argument to "+name+" must be a dimension")}
}
this.Push(STACKITEM.cell().With({isCR: true, name: name, linebreak: true})); this.Push(STACKITEM.cell().With({isCR: true, name: name, linebreak: true}));
var top = this.stack.Top(); var top = this.stack.Top();
if (top.isa(STACKITEM.array)) { if (top.isa(STACKITEM.array)) {
@ -1986,7 +2005,7 @@
this.prefilterHooks.Execute(data); math = data.math; this.prefilterHooks.Execute(data); math = data.math;
try { try {
mml = TEX.Parse(math).mml(); mml = TEX.Parse(math).mml();
// mml = MML.semantics(mml,MML.annotation(math).With({encoding:"application:x-tex"})); // mml = MML.semantics(mml,MML.annotation(math).With({encoding:"application/x-tex"}));
} catch(err) { } catch(err) {
if (!err.texError) {throw err} if (!err.texError) {throw err}
mml = this.formatError(err,math,display,script); mml = this.formatError(err,math,display,script);

View File

@ -24,7 +24,7 @@
MathJax.OutputJax["HTML-CSS"] = MathJax.OutputJax({ MathJax.OutputJax["HTML-CSS"] = MathJax.OutputJax({
id: "HTML-CSS", id: "HTML-CSS",
version: "2.0.3", version: "2.0.5",
directory: MathJax.OutputJax.directory + "/HTML-CSS", directory: MathJax.OutputJax.directory + "/HTML-CSS",
extensionDir: MathJax.OutputJax.extensionDir + "/HTML-CSS", extensionDir: MathJax.OutputJax.extensionDir + "/HTML-CSS",
autoloadDir: MathJax.OutputJax.directory + "/HTML-CSS/autoload", autoloadDir: MathJax.OutputJax.directory + "/HTML-CSS/autoload",

View File

@ -23,7 +23,7 @@
*/ */
(function (HTMLCSS,MML,AJAX) { (function (HTMLCSS,MML,AJAX) {
var VERSION = "2.0"; var VERSION = "2.0.2";
var MAIN = "MathJax_Main", var MAIN = "MathJax_Main",
BOLD = "MathJax_Main-bold", BOLD = "MathJax_Main-bold",
@ -71,12 +71,16 @@
offsetG: 0x03B1, variantG: "italic", offsetG: 0x03B1, variantG: "italic",
remap: {0x391:0x41, 0x392:0x42, 0x395:0x45, 0x396:0x5A, 0x397:0x48, remap: {0x391:0x41, 0x392:0x42, 0x395:0x45, 0x396:0x5A, 0x397:0x48,
0x399:0x49, 0x39A:0x4B, 0x39C:0x4D, 0x39D:0x4E, 0x39F:0x4F, 0x399:0x49, 0x39A:0x4B, 0x39C:0x4D, 0x39D:0x4E, 0x39F:0x4F,
0x3A1:0x50, 0x3A4:0x54, 0x3A7:0x58, 0x29F8:[0x002F,"italic"]}}, 0x3A1:0x50, 0x3A4:0x54, 0x3A7:0x58,
0x2032:[0x27,"sans-serif-italic"], // HACK: a smaller prime
0x29F8:[0x002F,"italic"]}},
"bold": {fonts:[BOLD,SIZE1,AMS], bold:true, "bold": {fonts:[BOLD,SIZE1,AMS], bold:true,
offsetG: 0x03B1, variantG: "bold-italic", offsetG: 0x03B1, variantG: "bold-italic",
remap: {0x391:0x41, 0x392:0x42, 0x395:0x45, 0x396:0x5A, 0x397:0x48, remap: {0x391:0x41, 0x392:0x42, 0x395:0x45, 0x396:0x5A, 0x397:0x48,
0x399:0x49, 0x39A:0x4B, 0x39C:0x4D, 0x39D:0x4E, 0x39F:0x4F, 0x399:0x49, 0x39A:0x4B, 0x39C:0x4D, 0x39D:0x4E, 0x39F:0x4F,
0x3A1:0x50, 0x3A4:0x54, 0x3A7:0x58, 0x29F8:[0x002F,"bold-italic"], 0x3A1:0x50, 0x3A4:0x54, 0x3A7:0x58, 0x29F8:[0x002F,"bold-italic"],
0x219A:"\u2190\u0338", 0x219B:"\u2192\u0338", 0x21AE:"\u2194\u0338",
0x21CD:"\u21D0\u0338", 0x21CE:"\u21D4\u0338", 0x21CF:"\u21D2\u0338",
0x2204:"\u2203\u0338", 0x2224:"\u2223\u0338", 0x2226:"\u2225\u0338", 0x2204:"\u2203\u0338", 0x2224:"\u2223\u0338", 0x2226:"\u2225\u0338",
0x2241:"\u223C\u0338", 0x2247:"\u2245\u0338", 0x2241:"\u223C\u0338", 0x2247:"\u2245\u0338",
0x226E:"<\u0338", 0x226F:">\u0338", 0x226E:"<\u0338", 0x226F:">\u0338",
@ -113,6 +117,7 @@
remap: {0x391:0x41, 0x392:0x42, 0x395:0x45, 0x396:0x5A, 0x397:0x48, remap: {0x391:0x41, 0x392:0x42, 0x395:0x45, 0x396:0x5A, 0x397:0x48,
0x399:0x49, 0x39A:0x4B, 0x39C:0x4D, 0x39D:0x4E, 0x39F:0x4F, 0x399:0x49, 0x39A:0x4B, 0x39C:0x4D, 0x39D:0x4E, 0x39F:0x4F,
0x3A1:0x50, 0x3A4:0x54, 0x3A7:0x58}}, 0x3A1:0x50, 0x3A4:0x54, 0x3A7:0x58}},
"-TeX-variant": {fonts:[MAIN]}, // HACK: to get larger prime for \prime
"-largeOp": {fonts:[SIZE2,SIZE1,MAIN]}, "-largeOp": {fonts:[SIZE2,SIZE1,MAIN]},
"-smallOp": {fonts:[SIZE1,MAIN]} "-smallOp": {fonts:[SIZE1,MAIN]}
}, },
@ -186,9 +191,10 @@
// //
0x2204: "\u2203\u0338", // \not\exists 0x2204: "\u2203\u0338", // \not\exists
0x220C: "\u220B\u0338", // \not\ni 0x220C: "\u220B\u0338", // \not\ni
0x2244: "\u2243\u0338", // \not\cong 0x2244: "\u2243\u0338", // \not\simeq
0x2249: "\u2248\u0338", // \not\approx 0x2249: "\u2248\u0338", // \not\approx
0x2262: "\u2261\u0338", // \not\equiv 0x2262: "\u2261\u0338", // \not\equiv
0x226D: "\u224D\u0338", // \not\asymp
0x2274: "\u2272\u0338", // \not\lesssim 0x2274: "\u2272\u0338", // \not\lesssim
0x2275: "\u2273\u0338", // \not\gtrsim 0x2275: "\u2273\u0338", // \not\gtrsim
0x2278: "\u2276\u0338", // \not\lessgtr 0x2278: "\u2276\u0338", // \not\lessgtr

View File

@ -1924,10 +1924,10 @@
else if (under && this === under.CoreMO() && parent.Get("accentunder")) {mapchars = HTMLCSS.FONTDATA.REMAPACCENTUNDER} else if (under && this === under.CoreMO() && parent.Get("accentunder")) {mapchars = HTMLCSS.FONTDATA.REMAPACCENTUNDER}
} }
// //
// STIX fonts need quotes from variant font // STIX and TeX fonts need quotes from variant font
// //
if (isScript && HTMLCSS.fontInUse === "STIX" && text.match(/['`"\u00B4\u2032-\u2037]/)) if (isScript && text.match(/['`"\u00B4\u2032-\u2037]/))
{variant = HTMLCSS.FONTDATA.VARIANT["-STIX-variant"]} {variant = HTMLCSS.FONTDATA.VARIANT["-"+HTMLCSS.fontInUse+"-variant"]}
// //
// Typeset contents // Typeset contents
// //

View File

@ -24,7 +24,7 @@
MathJax.OutputJax.NativeMML = MathJax.OutputJax({ MathJax.OutputJax.NativeMML = MathJax.OutputJax({
id: "NativeMML", id: "NativeMML",
version: "2.0.2", version: "2.0.4",
directory: MathJax.OutputJax.directory + "/NativeMML", directory: MathJax.OutputJax.directory + "/NativeMML",
extensionDir: MathJax.OutputJax.extensionDir + "/NativeMML", extensionDir: MathJax.OutputJax.extensionDir + "/NativeMML",

View File

@ -35,6 +35,25 @@
// //
config: { config: {
styles: { styles: {
".MathJax_MathML": {
"display": "inline",
"font-style": "normal",
"font-weight": "normal",
"line-height": "normal",
"font-size": "100%",
"font-size-adjust":"none",
"text-indent": 0,
"text-align": "left",
"text-transform": "none",
"letter-spacing": "normal",
"word-spacing": "normal",
"word-wrap": "normal",
"white-space": "nowrap",
"float": "none",
"direction": "ltr",
border: 0, padding: 0, margin: 0
},
".MathJax_mmlExBox": { ".MathJax_mmlExBox": {
display:"block", overflow:"hidden", display:"block", overflow:"hidden",
height:"1px", width:"60ex", height:"1px", width:"60ex",

View File

@ -24,7 +24,7 @@
MathJax.OutputJax.SVG = MathJax.OutputJax({ MathJax.OutputJax.SVG = MathJax.OutputJax({
id: "SVG", id: "SVG",
version: "2.0.2", version: "2.0.3",
directory: MathJax.OutputJax.directory + "/SVG", directory: MathJax.OutputJax.directory + "/SVG",
extensionDir: MathJax.OutputJax.extensionDir + "/SVG", extensionDir: MathJax.OutputJax.extensionDir + "/SVG",
autoloadDir: MathJax.OutputJax.directory + "/SVG/autoload", autoloadDir: MathJax.OutputJax.directory + "/SVG/autoload",

View File

@ -541,13 +541,13 @@
c = String.fromCharCode((N>>10)+0xD800) c = String.fromCharCode((N>>10)+0xD800)
+ String.fromCharCode((N&0x3FF)+0xDC00); + String.fromCharCode((N&0x3FF)+0xDC00);
} }
text = BBOX.TEXT(scale,c,{ var box = BBOX.TEXT(scale,c,{
"font-family":variant.defaultFamily||SVG.config.undefinedFamily, "font-family":variant.defaultFamily||SVG.config.undefinedFamily,
"font-style":(variant.italic?"italic":""), "font-style":(variant.italic?"italic":""),
"font-weight":(variant.bold?"bold":"") "font-weight":(variant.bold?"bold":"")
}) })
if (variant.h != null) {text.h = variant.h}; if (variant.d != null) {text.d = variant.d} if (variant.h != null) {box.h = variant.h}; if (variant.d != null) {box.d = variant.d}
c = BBOX.G(); c.Add(text); svg.Add(c,svg.w,0); text = ""; c = BBOX.G(); c.Add(box); svg.Add(c,svg.w,0);
HUB.signal.Post(["SVG Jax - unknown char",n,variant]); HUB.signal.Post(["SVG Jax - unknown char",n,variant]);
} }
} }