diff --git a/extensions/TeX/mhchem.js b/extensions/TeX/mhchem.js index ee611e019..312e5cf19 100644 --- a/extensions/TeX/mhchem.js +++ b/extensions/TeX/mhchem.js @@ -12,5 +12,5 @@ * http://www.apache.org/licenses/LICENSE-2.0 */ -MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b="1.0";var d=MathJax.InputJax.TeX,a=d.Definitions.macros;var c=MathJax.Object.Subclass({string:"",i:0,tex:"",atom:false,sup:"",sub:"",Init:function(e){this.string=e},ParseTable:{"-":"Minus","+":"Plus","(":"Open",")":"Close","[":"Open","]":"Close","<":"Less","^":"Superscript",_:"Subscript","*":"Dot",".":"Dot","=":"Equal","#":"Pound","$":"Math","\\":"Macro"," ":"Space",},Arrows:{"->":"rightarrow","<-":"leftarrow","<->":"leftrightarrow","<=>":"rightleftharpoons","<=>>":"Rightleftharpoons","^":"uparrow",v:"downarrow"},Bonds:{"-":"-","=":"=","#":"\\equiv","~":"\\tripledash","~-":"\\begin{CEstack}{}\\tripledash\\\\-\\end{CEstack}","~=":"\\raise2mu{\\begin{CEstack}{}\\tripledash\\\\-\\\\-\\end{CEstack}}","~--":"\\raise2mu{\\begin{CEstack}{}\\tripledash\\\\-\\\\-\\end{CEstack}}","-~-":"\\raise2mu{\\begin{CEstack}{}-\\\\\\tripledash\\\\-\\end{CEstack}}","...":"{\\cdot}{\\cdot}{\\cdot}","....":"{\\cdot}{\\cdot}{\\cdot}{\\cdot}","->":"\\rightarrow","<-":"\\leftarrow","??":"\\text{??}"},Parse:function(){this.tex="";this.atom=false;while(this.i"){this.i+=2;this.AddArrow("->");return}else{this.tex+="{-}"}}this.i++},ParsePlus:function(e){if(this.atom){this.sup+=e}else{this.FinishAtom();this.tex+=e}this.i++},ParseDot:function(e){this.FinishAtom();this.tex+="\\cdot ";this.i++},ParseEqual:function(e){this.FinishAtom();this.tex+="{=}";this.i++},ParsePound:function(e){this.FinishAtom();this.tex+="{\\equiv}";this.i++},ParseOpen:function(f){this.FinishAtom();var e=this.Match(/^\([v^]\)/);if(e){this.tex+="{\\"+this.Arrows[e.charAt(1)]+"}"}else{this.tex+="{"+f;this.i++}},ParseClose:function(e){this.FinishAtom();this.atom=true;this.tex+=e+"}";this.i++},ParseLess:function(f){this.FinishAtom();var e=this.Match(/^(<->?|<=>>?)/);if(!e){this.tex+=f;this.i++}else{this.AddArrow(e)}},ParseSuperscript:function(g){g=this.string.charAt(++this.i);if(g==="{"){this.i++;var e=this.Find("}");if(e==="-."){this.sup+="{-}{\\cdot}"}else{if(e){this.sup+=c(e).Parse()}}}else{if(g===" "||g===""){this.tex+="{\\"+this.Arrows["^"]+"}";this.i++}else{var f=this.Match(/^(\d+|-\.)/);if(f){this.sup+=f}}}},ParseSubscript:function(f){if(this.string.charAt(++this.i)=="{"){this.i++;this.sub+=c(this.Find("}")).Parse()}else{var e=this.Match(/^\d+/);if(e){this.sub+=e}}},ParseMath:function(e){this.FinishAtom();this.i++;this.tex+=this.Find(e)},ParseMacro:function(g){this.FinishAtom();this.i++;var e=this.Match(/^([a-z]+|.)/i)||" ";if(e==="sbond"){this.tex+="{-}"}else{if(e==="dbond"){this.tex+="{=}"}else{if(e==="tbond"){this.tex+="{\\equiv}"}else{if(e==="bond"){var f=(this.Match(/^\{.*?\}/)||"");f=f.substr(1,f.length-2);this.tex+="{"+(this.Bonds[f]||"\\text{??}")+"}"}else{if(e==="{"){this.tex+="{\\{"}else{if(e==="}"){this.tex+="\\}}";this.atom=true}else{this.tex+=g+e}}}}}}},ParseSpace:function(e){this.FinishAtom();this.i++},ParseOther:function(e){this.FinishAtom();this.tex+=e;this.i++},AddArrow:function(f){var h=this.Match(/^[CT]\[/);if(h){this.i--;h=h.charAt(0)}var e=this.GetBracket(h),g=this.GetBracket(h);f=this.Arrows[f];if(e||g){if(g){f+="["+g+"]"}f+="{"+e+"}";f="\\mathrel{\\x"+f+"}"}else{f="\\long"+f+" "}this.tex+=f},FinishAtom:function(){if(this.sup||this.sub){if(this.sup&&this.sub&&!this.atom){var g=Math.abs(this.sup.length-this.sub.length);if(g){var f="0000000000".substr(0,g);var e=(this.sup.length>this.sub.length?"sub":"sup");this[e]="\\phantom{"+f+"}"+this[e]}}if(!this.sup){this.sup="\\Space{0pt}{0pt}{.2em}"}this.tex+="^{"+this.sup+"}_{"+this.sub+"}";this.sup=this.sub=""}this.atom=false},GetBracket:function(f){if(this.string.charAt(this.i)!=="["){return""}this.i++;var e=this.Find("]");if(f==="C"){e="\\ce{"+e+"}"}else{if(f==="T"){if(!e.match(/^\{.*\}$/)){e="{"+e+"}"}e="\\text"+e}}return e},Match:function(f){var e=f.exec(this.string.substr(this.i));if(e){e=e[0];this.i+=e.length}return e},Find:function(j){var e=this.string.length,f=this.i,h=0;while(this.i":"rightarrow","<-":"leftarrow","<->":"leftrightarrow","<=>":"rightleftharpoons","<=>>":"Rightleftharpoons","^":"uparrow",v:"downarrow"},Bonds:{"-":"-","=":"=","#":"\\equiv","~":"\\tripledash","~-":"\\begin{CEstack}{}\\tripledash\\\\-\\end{CEstack}","~=":"\\raise2mu{\\begin{CEstack}{}\\tripledash\\\\-\\\\-\\end{CEstack}}","~--":"\\raise2mu{\\begin{CEstack}{}\\tripledash\\\\-\\\\-\\end{CEstack}}","-~-":"\\raise2mu{\\begin{CEstack}{}-\\\\\\tripledash\\\\-\\end{CEstack}}","...":"{\\cdot}{\\cdot}{\\cdot}","....":"{\\cdot}{\\cdot}{\\cdot}{\\cdot}","->":"\\rightarrow","<-":"\\leftarrow","??":"\\text{??}"},Parse:function(){this.tex="";this.atom=false;while(this.i"){this.i+=2;this.AddArrow("->");return}else{this.tex+="{-}"}}this.i++},ParsePlus:function(e){if(this.atom){this.sup+=e}else{this.FinishAtom();this.tex+=e}this.i++},ParseDot:function(e){this.FinishAtom();this.tex+="\\cdot ";this.i++},ParseEqual:function(e){this.FinishAtom();this.tex+="{=}";this.i++},ParsePound:function(e){this.FinishAtom();this.tex+="{\\equiv}";this.i++},ParseOpen:function(f){this.FinishAtom();var e=this.Match(/^\([v^]\)/);if(e){this.tex+="{\\"+this.Arrows[e.charAt(1)]+"}"}else{this.tex+="{"+f;this.i++}},ParseClose:function(e){this.FinishAtom();this.atom=true;this.tex+=e+"}";this.i++},ParseLess:function(f){this.FinishAtom();var e=this.Match(/^(<->?|<=>>?)/);if(!e){this.tex+=f;this.i++}else{this.AddArrow(e)}},ParseSuperscript:function(g){g=this.string.charAt(++this.i);if(g==="{"){this.i++;var e=this.Find("}");if(e==="-."){this.sup+="{-}{\\cdot}"}else{if(e){this.sup+=c(e).Parse()}}}else{if(g===" "||g===""){this.tex+="{\\"+this.Arrows["^"]+"}";this.i++}else{var f=this.Match(/^(\d+|-\.)/);if(f){this.sup+=f}}}},ParseSubscript:function(f){if(this.string.charAt(++this.i)=="{"){this.i++;this.sub+=c(this.Find("}")).Parse()}else{var e=this.Match(/^\d+/);if(e){this.sub+=e}}},ParseMath:function(e){this.FinishAtom();this.i++;this.tex+=this.Find(e)},ParseMacro:function(g){this.FinishAtom();this.i++;var e=this.Match(/^([a-z]+|.)/i)||" ";if(e==="sbond"){this.tex+="{-}"}else{if(e==="dbond"){this.tex+="{=}"}else{if(e==="tbond"){this.tex+="{\\equiv}"}else{if(e==="bond"){var f=(this.Match(/^\{.*?\}/)||"");f=f.substr(1,f.length-2);this.tex+="{"+(this.Bonds[f]||"\\text{??}")+"}"}else{if(e==="{"){this.tex+="{\\{"}else{if(e==="}"){this.tex+="\\}}";this.atom=true}else{this.tex+=g+e}}}}}}},ParseSpace:function(e){this.FinishAtom();this.i++},ParseOther:function(e){this.FinishAtom();this.tex+=e;this.i++},AddArrow:function(f){var h=this.Match(/^[CT]\[/);if(h){this.i--;h=h.charAt(0)}var e=this.GetBracket(h),g=this.GetBracket(h);f=this.Arrows[f];if(e||g){if(g){f+="["+g+"]"}f+="{"+e+"}";f="\\mathrel{\\x"+f+"}"}else{f="\\long"+f+" "}this.tex+=f},FinishAtom:function(){if(this.sup||this.sub){if(this.sup&&this.sub&&!this.atom){var g=Math.abs(this.sup.length-this.sub.length);if(g){var f="0000000000".substr(0,g);var e=(this.sup.length>this.sub.length?"sub":"sup");this[e]="\\phantom{"+f+"}"+this[e]}}if(!this.sup){this.sup="\\Space{0pt}{0pt}{.2em}"}this.tex+="^{"+this.sup+"}_{"+this.sub+"}";this.sup=this.sub=""}this.atom=false},GetBracket:function(f){if(this.string.charAt(this.i)!=="["){return""}this.i++;var e=this.Find("]");if(f==="C"){e="\\ce{"+e+"}"}else{if(f==="T"){if(!e.match(/^\{.*\}$/)){e="{"+e+"}"}e="\\text"+e}}return e},Match:function(f){var e=f.exec(this.string.substr(this.i));if(e){e=e[0];this.i+=e.length}return e},Find:function(j){var e=this.string.length,f=this.i,h=0;while(this.i") {this.i += 2; this.AddArrow("->"); return} else {this.tex += "{-}"} @@ -380,6 +382,11 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { MACROS.tripledash = ["Macro","\\raise3mu{\\tiny\\text{-}\\kern2mu\\text{-}\\kern2mu\\text{-}}"]; TEX.Definitions.environment.CEstack = ['Array',null,null,null,'r',null,"0.001em",'T',1] + // + // Add \hyphen used in some mhchem examples + // + MACROS.hyphen = ["Macro","\\text{-}"]; + TEX.Parse.Augment({ //