From 935585bec73ce6edfe1b59c3132ed54a1c6d4532 Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Tue, 17 Jan 2012 10:36:13 -0500 Subject: [PATCH 1/5] New ASCIIMath input jax based on David Lippman's contributed versions --- extensions/asciimath2jax.js | 16 + jax/input/AsciiMath/config.js | 16 + jax/input/AsciiMath/jax.js | 16 + unpacked/extensions/asciimath2jax.js | 228 +++++ unpacked/jax/input/AsciiMath/config.js | 41 + unpacked/jax/input/AsciiMath/jax.js | 1287 ++++++++++++++++++++++++ 6 files changed, 1604 insertions(+) create mode 100644 extensions/asciimath2jax.js create mode 100644 jax/input/AsciiMath/config.js create mode 100644 jax/input/AsciiMath/jax.js create mode 100644 unpacked/extensions/asciimath2jax.js create mode 100644 unpacked/jax/input/AsciiMath/config.js create mode 100644 unpacked/jax/input/AsciiMath/jax.js diff --git a/extensions/asciimath2jax.js b/extensions/asciimath2jax.js new file mode 100644 index 000000000..88b604498 --- /dev/null +++ b/extensions/asciimath2jax.js @@ -0,0 +1,16 @@ +/* + * /MathJax/extensions/asciimath2jax.js + * + * Copyright (c) 2010 Design Science, Inc. + * + * Part of the MathJax library. + * See http://www.mathjax.org for details. + * + * Licensed under the Apache License, Version 2.0; + * you may not use this file except in compliance with the License. + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + +MathJax.Extension.asciimath2jax={version:"1.0",config:{delimiters:["`"],skipTags:["script","noscript","style","textarea","pre","code"],ignoreClass:"asciimath2jax_ignore",processClass:"asciimath2jax_process",preview:"AsciiMath"},PreProcess:function(a){if(!this.configured){this.config=MathJax.Hub.CombineConfig("asciimath2jax",this.config);if(this.config.Augment){MathJax.Hub.Insert(this,this.config.Augment)}this.configured=true}if(typeof(a)==="string"){a=document.getElementById(a)}if(!a){a=document.body}if(this.createPatterns()){this.scanElement(a,a.nextSibling)}},createPatterns:function(){var d=[],c,a,b=this.config;this.match={};if(b.delimiters.length===0){return false}for(c=0,a=b.delimiters.length;c=ag-1){this.lastChild=aj}this.childNodes[ai]=aj;aj.nextSibling=ah.nextSibling;ah.nextSibling=ah.parent=null;return ah}});var D=function(){j=MathJax.ElementJax.mml;var ag=j.mbase.prototype.Init;j.mbase.Augment({firstChild:null,lastChild:null,nodeValue:"",nextSibling:null,Init:function(){var ah=ag.apply(this,arguments)||this;ah.childNodes=ah.data;ah.nodeName=ah.type;return ah},appendChild:function(ak){if(ak.parent){ak.parent.removeChild(ak)}var ai=arguments;if(ak.isa(Z)){ai=ak.childNodes}for(var aj=0,ah=ai.length;aj=ah-1){this.lastChild=ak}this.SetData(aj,ak);ak.nextSibling=ai.nextSibling;this.nodeValue="";for(aj=0,ah=this.childNodes.length;aj=",tag:"mo",output:"\u2265",tex:"ge",ttype:d},{input:"geq",tag:"mo",output:"\u2265",tex:null,ttype:d},{input:"-<",tag:"mo",output:"\u227A",tex:"prec",ttype:d},{input:"-lt",tag:"mo",output:"\u227A",tex:null,ttype:d},{input:">-",tag:"mo",output:"\u227B",tex:"succ",ttype:d},{input:"in",tag:"mo",output:"\u2208",tex:null,ttype:d},{input:"!in",tag:"mo",output:"\u2209",tex:"notin",ttype:d},{input:"sub",tag:"mo",output:"\u2282",tex:"subset",ttype:d},{input:"sup",tag:"mo",output:"\u2283",tex:"supset",ttype:d},{input:"sube",tag:"mo",output:"\u2286",tex:"subseteq",ttype:d},{input:"supe",tag:"mo",output:"\u2287",tex:"supseteq",ttype:d},{input:"-=",tag:"mo",output:"\u2261",tex:"equiv",ttype:d},{input:"~=",tag:"mo",output:"\u2245",tex:"cong",ttype:d},{input:"~~",tag:"mo",output:"\u2248",tex:"approx",ttype:d},{input:"prop",tag:"mo",output:"\u221D",tex:"propto",ttype:d},{input:"and",tag:"mtext",output:"and",tex:null,ttype:a},{input:"or",tag:"mtext",output:"or",tex:null,ttype:a},{input:"not",tag:"mo",output:"\u00AC",tex:"neg",ttype:d},{input:"=>",tag:"mo",output:"\u21D2",tex:"implies",ttype:d},{input:"if",tag:"mo",output:"if",tex:null,ttype:a},{input:"<=>",tag:"mo",output:"\u21D4",tex:"iff",ttype:d},{input:"AA",tag:"mo",output:"\u2200",tex:"forall",ttype:d},{input:"EE",tag:"mo",output:"\u2203",tex:"exists",ttype:d},{input:"_|_",tag:"mo",output:"\u22A5",tex:"bot",ttype:d},{input:"TT",tag:"mo",output:"\u22A4",tex:"top",ttype:d},{input:"|--",tag:"mo",output:"\u22A2",tex:"vdash",ttype:d},{input:"|==",tag:"mo",output:"\u22A8",tex:"models",ttype:d},{input:"(",tag:"mo",output:"(",tex:null,ttype:b},{input:")",tag:"mo",output:")",tex:null,ttype:k},{input:"[",tag:"mo",output:"[",tex:null,ttype:b},{input:"]",tag:"mo",output:"]",tex:null,ttype:k},{input:"{",tag:"mo",output:"{",tex:null,ttype:b},{input:"}",tag:"mo",output:"}",tex:null,ttype:k},{input:"|",tag:"mo",output:"|",tex:null,ttype:q},{input:"(:",tag:"mo",output:"\u2329",tex:"langle",ttype:b},{input:":)",tag:"mo",output:"\u232A",tex:"rangle",ttype:k},{input:"<<",tag:"mo",output:"\u2329",tex:null,ttype:b},{input:">>",tag:"mo",output:"\u232A",tex:null,ttype:k},{input:"{:",tag:"mo",output:"{:",tex:null,ttype:b,invisible:true},{input:":}",tag:"mo",output:":}",tex:null,ttype:k,invisible:true},{input:"int",tag:"mo",output:"\u222B",tex:null,ttype:d},{input:"dx",tag:"mi",output:"{:d x:}",tex:null,ttype:Y},{input:"dy",tag:"mi",output:"{:d y:}",tex:null,ttype:Y},{input:"dz",tag:"mi",output:"{:d z:}",tex:null,ttype:Y},{input:"dt",tag:"mi",output:"{:d t:}",tex:null,ttype:Y},{input:"oint",tag:"mo",output:"\u222E",tex:null,ttype:d},{input:"del",tag:"mo",output:"\u2202",tex:"partial",ttype:d},{input:"grad",tag:"mo",output:"\u2207",tex:"nabla",ttype:d},{input:"+-",tag:"mo",output:"\u00B1",tex:"pm",ttype:d},{input:"O/",tag:"mo",output:"\u2205",tex:"emptyset",ttype:d},{input:"oo",tag:"mo",output:"\u221E",tex:"infty",ttype:d},{input:"aleph",tag:"mo",output:"\u2135",tex:null,ttype:d},{input:"...",tag:"mo",output:"...",tex:"ldots",ttype:d},{input:":.",tag:"mo",output:"\u2234",tex:"therefore",ttype:d},{input:"/_",tag:"mo",output:"\u2220",tex:"angle",ttype:d},{input:"\\ ",tag:"mo",output:"\u00A0",tex:null,ttype:d},{input:"quad",tag:"mo",output:"\u00A0\u00A0",tex:null,ttype:d},{input:"qquad",tag:"mo",output:"\u00A0\u00A0\u00A0\u00A0",tex:null,ttype:d},{input:"cdots",tag:"mo",output:"\u22EF",tex:null,ttype:d},{input:"vdots",tag:"mo",output:"\u22EE",tex:null,ttype:d},{input:"ddots",tag:"mo",output:"\u22F1",tex:null,ttype:d},{input:"diamond",tag:"mo",output:"\u22C4",tex:null,ttype:d},{input:"square",tag:"mo",output:"\u25A1",tex:null,ttype:d},{input:"|__",tag:"mo",output:"\u230A",tex:"lfloor",ttype:d},{input:"__|",tag:"mo",output:"\u230B",tex:"rfloor",ttype:d},{input:"|~",tag:"mo",output:"\u2308",tex:"lceiling",ttype:d},{input:"~|",tag:"mo",output:"\u2309",tex:"rceiling",ttype:d},{input:"CC",tag:"mo",output:"\u2102",tex:null,ttype:d},{input:"NN",tag:"mo",output:"\u2115",tex:null,ttype:d},{input:"QQ",tag:"mo",output:"\u211A",tex:null,ttype:d},{input:"RR",tag:"mo",output:"\u211D",tex:null,ttype:d},{input:"ZZ",tag:"mo",output:"\u2124",tex:null,ttype:d},{input:"f",tag:"mi",output:"f",tex:null,ttype:G,func:true},{input:"g",tag:"mi",output:"g",tex:null,ttype:G,func:true},{input:"lim",tag:"mo",output:"lim",tex:null,ttype:O},{input:"Lim",tag:"mo",output:"Lim",tex:null,ttype:O},{input:"sin",tag:"mo",output:"sin",tex:null,ttype:G,func:true},{input:"cos",tag:"mo",output:"cos",tex:null,ttype:G,func:true},{input:"tan",tag:"mo",output:"tan",tex:null,ttype:G,func:true},{input:"sinh",tag:"mo",output:"sinh",tex:null,ttype:G,func:true},{input:"cosh",tag:"mo",output:"cosh",tex:null,ttype:G,func:true},{input:"tanh",tag:"mo",output:"tanh",tex:null,ttype:G,func:true},{input:"cot",tag:"mo",output:"cot",tex:null,ttype:G,func:true},{input:"sec",tag:"mo",output:"sec",tex:null,ttype:G,func:true},{input:"csc",tag:"mo",output:"csc",tex:null,ttype:G,func:true},{input:"log",tag:"mo",output:"log",tex:null,ttype:G,func:true},{input:"ln",tag:"mo",output:"ln",tex:null,ttype:G,func:true},{input:"det",tag:"mo",output:"det",tex:null,ttype:G,func:true},{input:"dim",tag:"mo",output:"dim",tex:null,ttype:d},{input:"mod",tag:"mo",output:"mod",tex:null,ttype:d},{input:"gcd",tag:"mo",output:"gcd",tex:null,ttype:G,func:true},{input:"lcm",tag:"mo",output:"lcm",tex:null,ttype:G,func:true},{input:"lub",tag:"mo",output:"lub",tex:null,ttype:d},{input:"glb",tag:"mo",output:"glb",tex:null,ttype:d},{input:"min",tag:"mo",output:"min",tex:null,ttype:O},{input:"max",tag:"mo",output:"max",tex:null,ttype:O},{input:"uarr",tag:"mo",output:"\u2191",tex:"uparrow",ttype:d},{input:"darr",tag:"mo",output:"\u2193",tex:"downarrow",ttype:d},{input:"rarr",tag:"mo",output:"\u2192",tex:"rightarrow",ttype:d},{input:"->",tag:"mo",output:"\u2192",tex:"to",ttype:d},{input:"|->",tag:"mo",output:"\u21A6",tex:"mapsto",ttype:d},{input:"larr",tag:"mo",output:"\u2190",tex:"leftarrow",ttype:d},{input:"harr",tag:"mo",output:"\u2194",tex:"leftrightarrow",ttype:d},{input:"rArr",tag:"mo",output:"\u21D2",tex:"Rightarrow",ttype:d},{input:"lArr",tag:"mo",output:"\u21D0",tex:"Leftarrow",ttype:d},{input:"hArr",tag:"mo",output:"\u21D4",tex:"Leftrightarrow",ttype:d},i,ad,z,P,n,r,h,{input:"hat",tag:"mover",output:"\u005E",tex:null,ttype:G,acc:true},{input:"bar",tag:"mover",output:"\u00AF",tex:"overline",ttype:G,acc:true},{input:"vec",tag:"mover",output:"\u2192",tex:null,ttype:G,acc:true},{input:"dot",tag:"mover",output:".",tex:null,ttype:G,acc:true},{input:"ddot",tag:"mover",output:"..",tex:null,ttype:G,acc:true},{input:"ul",tag:"munder",output:"\u0332",tex:"underline",ttype:G,acc:true},af,w,o,{input:"bb",tag:"mstyle",atname:"fontweight",atval:"bold",output:"bb",tex:null,ttype:G},{input:"mathbf",tag:"mstyle",atname:"fontweight",atval:"bold",output:"mathbf",tex:null,ttype:G},{input:"sf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"sf",tex:null,ttype:G},{input:"mathsf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"mathsf",tex:null,ttype:G},{input:"bbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"bbb",tex:null,ttype:G,codes:C},{input:"mathbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"mathbb",tex:null,ttype:G,codes:C},{input:"cc",tag:"mstyle",atname:"mathvariant",atval:"script",output:"cc",tex:null,ttype:G,codes:I},{input:"mathcal",tag:"mstyle",atname:"mathvariant",atval:"script",output:"mathcal",tex:null,ttype:G,codes:I},{input:"tt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"tt",tex:null,ttype:G},{input:"mathtt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"mathtt",tex:null,ttype:G},{input:"fr",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"fr",tex:null,ttype:G,codes:M},{input:"mathfrak",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"mathfrak",tex:null,ttype:G,codes:M}];function V(ah,ag){if(ah.input>ag.input){return 1}else{return -1}}var T=[];function u(){var ah=[],ag;for(ag=0;ag>1;if(ah[ag]=T[ag]}x=E;if(ak!=""){E=F[aj].ttype;return F[aj]}E=d;ag=1;ap=am.slice(0,1);var an=true;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}if(ap==f){ap=am.slice(ag,ag+1);if("0"<=ap&&ap<="9"){an=false;ag++;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}}}if((an&&ag>1)||ag>2){ap=am.slice(0,ag-1);ao="mn"}else{ag=2;ap=am.slice(0,1);ao=(("A">ap||ap>"Z")&&("a">ap||ap>"z")?"mo":"mi")}if(ap=="-"&&x==l){return{input:ap,tag:ao,output:ap,ttype:G,func:true}}return{input:ap,tag:ao,output:ap,ttype:d}}function S(ah){var ag;if(ah.nodeName=="mrow"){ag=ah.firstChild.firstChild.nodeValue;if(ag=="("||ag=="["||ag=="{"){ah.removeChild(ah.firstChild)}}if(ah.nodeName=="mrow"){ag=ah.lastChild.firstChild.nodeValue;if(ag==")"||ag=="]"||ag=="}"){ah.removeChild(ah.lastChild)}}}var J,x,E;function K(am){var ai,ah,ap,ak,ao,al=g.createDocumentFragment();am=t(am,0);ai=m(am);if(ai==null||ai.ttype==k&&J>0){return[null,am]}if(ai.ttype==Y){am=ai.output+t(am,ai.input.length);ai=m(am)}switch(ai.ttype){case O:case d:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am];case b:J++;am=t(am,ai.input.length);ap=v(am,true);J--;if(typeof ai.invisible=="boolean"&&ai.invisible){ah=L("mrow",ap[0])}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0])}return[ah,ap[1]];case aa:if(ai!=o){am=t(am,ai.input.length)}if(am.charAt(0)=="{"){ak=am.indexOf("}")}else{if(am.charAt(0)=="("){ak=am.indexOf(")")}else{if(am.charAt(0)=="["){ak=am.indexOf("]")}else{if(ai==o){ak=am.slice(1).indexOf('"')+1}else{ak=0}}}}if(ak==-1){ak=am.length}ao=am.slice(1,ak);if(ao.charAt(0)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}al.appendChild(L(ai.tag,g.createTextNode(ao)));if(ao.charAt(ao.length-1)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}am=t(am,ak+1);return[L("mrow",al),am];case G:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L(ai.tag,g.createTextNode(ai.output)),am]}if(typeof ai.func=="boolean"&&ai.func){ao=am.charAt(0);if(ao=="^"||ao=="_"||ao=="/"||ao=="|"||ao==","){return[L(ai.tag,g.createTextNode(ai.output)),am]}else{ah=L("mrow",L(ai.tag,g.createTextNode(ai.output)));ah.appendChild(ap[0]);return[ah,ap[1]]}}S(ap[0]);if(ai.input=="sqrt"){return[L(ai.tag,ap[0]),ap[1]]}else{if(typeof ai.acc=="boolean"&&ai.acc){ah=L(ai.tag,ap[0]);ah.appendChild(L("mo",g.createTextNode(ai.output)));return[ah,ap[1]]}else{if(!p&&typeof ai.codes!="undefined"){for(ak=0;ak64&&ao.charCodeAt(aj)<91){an=an+String.fromCharCode(ai.codes[ao.charCodeAt(aj)-65])}else{an=an+ao.charAt(aj)}}if(ap[0].nodeName=="mi"){ap[0]=Q("mo").appendChild(g.createTextNode(an))}else{ap[0].replaceChild(Q("mo").appendChild(g.createTextNode(an)),ap[0].childNodes[ak])}}}}ah=L(ai.tag,ap[0]);ah.setAttribute(ai.atname,ai.atval);return[ah,ap[1]]}}case W:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ap[0]);var ag=K(ap[1]);if(ag[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ag[0]);if(ai.input=="root"||ai.input=="stackrel"){al.appendChild(ag[0])}al.appendChild(ap[0]);if(ai.input=="frac"){al.appendChild(ag[0])}return[L(ai.tag,al),ag[1]];case l:am=t(am,ai.input.length);return[L("mo",g.createTextNode(ai.output)),am];case a:am=t(am,ai.input.length);ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);al.appendChild(L(ai.tag,g.createTextNode(ai.output)));ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);return[L("mrow",al),am];case q:J++;am=t(am,ai.input.length);ap=v(am,false);J--;ao="";if(ap[0].lastChild!=null){ao=ap[0].lastChild.firstChild.nodeValue}if(ao=="|"){ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0]);return[ah,ap[1]]}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);return[ah,am]}default:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am]}}function y(am){var ak,an,al,aj,ag,ai;am=t(am,0);an=m(am);ag=K(am);aj=ag[0];am=ag[1];ak=m(am);if(ak.ttype==l&&ak.input!="/"){am=t(am,ak.input.length);ag=K(am);if(ag[0]==null){ag[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ag[0])}am=ag[1];if(ak.input=="_"){al=m(am);ai=(an.ttype==O);if(al.input=="^"){am=t(am,al.input.length);var ah=K(am);S(ah[0]);am=ah[1];aj=L((ai?"munderover":"msubsup"),aj);aj.appendChild(ag[0]);aj.appendChild(ah[0]);aj=L("mrow",aj)}else{aj=L((ai?"munder":"msub"),aj);aj.appendChild(ag[0])}}else{aj=L(ak.tag,aj);aj.appendChild(ag[0])}}return[aj,am]}function v(ao,an){var at,ap,ak,aw,al=g.createDocumentFragment();do{ao=t(ao,0);ak=y(ao);ap=ak[0];ao=ak[1];at=m(ao);if(at.ttype==l&&at.input=="/"){ao=t(ao,at.input.length);ak=y(ao);if(ak[0]==null){ak[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ak[0])}ao=ak[1];S(ap);ap=L(at.tag,ap);ap.appendChild(ak[0]);al.appendChild(ap);at=m(ao)}else{if(ap!=undefined){al.appendChild(ap)}}}while((at.ttype!=k&&(at.ttype!=q||an)||J==0)&&at!=null&&at.output!="");if(at.ttype==k||at.ttype==q){var ax=al.childNodes.length;if(ax>0&&al.childNodes[ax-1].nodeName=="mrow"&&ax>1&&al.childNodes[ax-2].nodeName=="mo"&&al.childNodes[ax-2].firstChild.nodeValue==","){var az=al.childNodes[ax-1].lastChild.firstChild.nodeValue;if(az==")"||az=="]"){var ah=al.childNodes[ax-1].firstChild.firstChild.nodeValue;if(ah=="("&&az==")"&&at.output!="}"||ah=="["&&az=="]"){var ai=[];var au=true;var aq=al.childNodes.length;for(aw=0;au&&aw1){au=ai[aw].length==ai[aw-2].length}}if(au){var aj,ag,am,ar,ay=g.createDocumentFragment();for(aw=0;aw2){al.removeChild(al.firstChild);al.removeChild(al.firstChild)}ay.appendChild(L("mtr",aj))}ap=L("mtable",ay);if(typeof at.invisible=="boolean"&&at.invisible){ap.setAttribute("columnalign","left")}al.replaceChild(ap,al.firstChild)}}}}ao=t(ao,at.input.length);if(typeof at.invisible!="boolean"||!at.invisible){ap=L("mo",g.createTextNode(at.output));al.appendChild(ap)}}return[al,ao]}function e(ai){var ah=Q("mstyle");if(H!=""){ah.setAttribute("mathcolor",H)}if(s){ah.setAttribute("displaystyle","true")}if(ab!=""){ah.setAttribute("fontfamily",ab)}J=0;ah.appendChild(v(ai.replace(/^\s+/g,""),false)[0]);ah=L("math",ah);if(B){ah.setAttribute("title",ai.replace(/\s+/g," "))}if(ab!=""&&(p||ab!="serif")){var ag=U("font");ag.setAttribute("face",ab);ag.appendChild(ah);return ag}return ah}B=false;ab="";H="";(function(){for(var ah=0,ag=F.length;ah",tex:null,ttype:d},{input:"gt=",tag:"mo",output:"\u2265",tex:"geq",ttype:d},{input:"-<=",tag:"mo",output:"\u2AAF",tex:"preceq",ttype:d},{input:">-=",tag:"mo",output:"\u2AB0",tex:"succeq",ttype:d},{input:"'",tag:"mo",output:"\u2032",tex:"prime",ttype:d},{input:"arcsin",tag:"mi",output:"arcsin",tex:null,ttype:G,func:true},{input:"arccos",tag:"mi",output:"arccos",tex:null,ttype:G,func:true},{input:"arctan",tag:"mi",output:"arctan",tex:null,ttype:G,func:true},{input:"coth",tag:"mi",output:"coth",tex:null,ttype:G,func:true},{input:"sech",tag:"mi",output:"sech",tex:null,ttype:G,func:true},{input:"csch",tag:"mi",output:"csch",tex:null,ttype:G,func:true},{input:"abs",tag:"mi",output:"abs",tex:null,ttype:G,func:true},{input:"exp",tag:"mi",output:"exp",tex:null,ttype:G,func:true},{input:"tilde",tag:"mover",output:"~",tex:null,ttype:G,acc:true});ae.Augment({AM:{Init:function(){s=ae.config.displaystyle;decimal=ae.config.decimal;D();u()},Augment:function(ag){for(var ah in ag){if(ag.hasOwnProperty(ah)){switch(ah){case"displaystyle":s=ag[ah];break;case"decimal":decimal=ag[ah];break;case"parseMath":e=ag[ah];break;case"parseExpr":v=ag[ah];break;case"parseIexpr":y=ag[ah];break;case"parseSexpr":K=ag[ah];break;case"removeBrackets":S=ag[ah];break;case"getSymbol":m=ag[ah];break;case"position":c=ag[ah];break;case"removeCharsAndBlanks":t=ag[ah];break;case"createMmlNode":L=ag[ah];break;case"createElementMathML":Q=ag[ah];break;case"createElementXHTML":U=ag[ah];break;case"initSymbols":u=ag[ah];break;case"compareNames":comareNames=ag[ah];break}this[ah]=ag[ah]}}},parseMath:e,parseExpr:v,parseIexpr:y,parseSexr:K,removeBrackets:S,getSymbol:m,position:c,removeCharsAndBlanks:t,createMmlNode:L,createElementMathML:Q,createElementXHTML:U,initSymbols:u,compareNames:V,createDocumentFragment:Z,document:g,define:A,symbols:F,names:T,TOKEN:{CONST:d,UNARY:G,BINARY:W,INFIX:l,LEFTBRACKET:b,RIGHTBRACKET:k,SPACE:a,UNDEROVER:O,DEFINITION:Y,LEFTRIGHT:q,TEXT:aa}}});var ac=[R,N];ac=null})(MathJax.InputJax.AsciiMath);(function(b){var a;b.Augment({sourceMenuTitle:"AsciiMath input",prefilterHooks:MathJax.Callback.Hooks(true),postfilterHooks:MathJax.Callback.Hooks(true),Translate:function(c){var d,f=c.innerHTML.replace(/^\s+/,"").replace(/\s+$/,"");var g={math:f,script:c};this.prefilterHooks.Execute(g);f=g.math;try{d=this.AM.parseMath(f)}catch(e){if(!e.asciimathError){throw e}d=this.formatError(e,f)}g.math=a(d);this.postfilterHooks.Execute(g);return g.math},formatError:function(f,e,c){var d=f.message.replace(/\n.*/,"");MathJax.Hub.signal.Post(["AsciiMath Jax - parse error",d,e,c]);return a.merror(d)},Error:function(c){throw MathJax.Hub.Insert(Error(c),{asciimathError:true})},Startup:function(){a=MathJax.ElementJax.mml;this.AM.Init()}});b.loadComplete("jax.js")})(MathJax.InputJax.AsciiMath); + diff --git a/unpacked/extensions/asciimath2jax.js b/unpacked/extensions/asciimath2jax.js new file mode 100644 index 000000000..597a5e021 --- /dev/null +++ b/unpacked/extensions/asciimath2jax.js @@ -0,0 +1,228 @@ +/************************************************************* + * + * MathJax/extensions/asciimath2jax.js + * + * Implements the AsciiMath to Jax preprocessor that locates AsciiMath + * code within the text of a document and replaces it with SCRIPT tags for + * processing by MathJax. + * + * Modified by David Lippman, based on tex2jax.js. + * Additional work by Davide P. Cervone. + * + * --------------------------------------------------------------------- + * + * Copyright (c) 2012 Design Science, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.Extension.asciimath2jax = { + version: "1.0", + config: { + delimiters: ['`'], // The delimiter(s) for asciimath code + + skipTags: ["script","noscript","style","textarea","pre","code"], + // The names of the tags whose contents will not be + // scanned for math delimiters + + ignoreClass: "asciimath2jax_ignore", // the class name of elements whose contents should + // NOT be processed by asciimath2jax. Note that this + // is a regular expression, so be sure to quote any + // regexp special characters + + processClass: "asciimath2jax_process", // the class name of elements whose contents SHOULD + // be processed when they appear inside ones that + // are ignored. Note that this is a regular expression, + // so be sure to quote any regexp special characters + + preview: "AsciiMath" // set to "none" to not insert MathJax_Preview spans + // or set to an array specifying an HTML snippet + // to use the same preview for every equation. + + }, + + PreProcess: function (element) { + if (!this.configured) { + this.config = MathJax.Hub.CombineConfig("asciimath2jax",this.config); + if (this.config.Augment) {MathJax.Hub.Insert(this,this.config.Augment)} + this.configured = true; + } + if (typeof(element) === "string") {element = document.getElementById(element)} + if (!element) {element = document.body} + if (this.createPatterns()) {this.scanElement(element,element.nextSibling)} + }, + + createPatterns: function () { + var starts = [], i, m, config = this.config; this.match = {}; + if (config.delimiters.length === 0) {return false} + for (i = 0, m = config.delimiters.length; i < m; i++) { + starts.push(this.patternQuote(config.delimiters[i])); + this.match[config.delimiters[i]] = { + mode: "", + end: config.delimiters[i], + pattern: this.endPattern(config.delimiters[i]) + }; + } + this.start = new RegExp(starts.sort(this.sortLength).join("|"),"g"); + this.skipTags = new RegExp("^("+config.skipTags.join("|")+")$","i"); + this.ignoreClass = new RegExp("(^| )("+config.ignoreClass+")( |$)"); + this.processClass = new RegExp("(^| )("+config.processClass+")( |$)"); + return true; + }, + + patternQuote: function (s) {return s.replace(/([\^$(){}+*?\-|\[\]\:\\])/g,'\\$1')}, + + endPattern: function (end) { + return new RegExp(this.patternQuote(end)+"|\\\\.","g"); + }, + + sortLength: function (a,b) { + if (a.length !== b.length) {return b.length - a.length} + return (a == b ? 0 : (a < b ? -1 : 1)); + }, + + scanElement: function (element,stop,ignore) { + var cname, tname, ignoreChild, process; + while (element && element != stop) { + if (element.nodeName.toLowerCase() === '#text') { + if (!ignore) {element = this.scanText(element)} + } else { + cname = (typeof(element.className) === "undefined" ? "" : element.className); + tname = (typeof(element.tagName) === "undefined" ? "" : element.tagName); + if (typeof(cname) !== "string") {cname = String(cname)} // jsxgraph uses non-string class names! + process = this.processClass.exec(cname); + if (element.firstChild && !cname.match(/(^| )MathJax/) && + (process || !this.skipTags.exec(tname))) { + ignoreChild = (ignore || this.ignoreClass.exec(cname)) && !process; + this.scanElement(element.firstChild,stop,ignoreChild); + } + } + if (element) {element = element.nextSibling} + } + }, + + scanText: function (element) { + if (element.nodeValue.replace(/\s+/,'') == '') {return element} + var match, prev; + this.search = {start: true}; + this.pattern = this.start; + while (element) { + this.pattern.lastIndex = 0; + while (element && element.nodeName.toLowerCase() === '#text' && + (match = this.pattern.exec(element.nodeValue))) { + if (this.search.start) {element = this.startMatch(match,element)} + else {element = this.endMatch(match,element)} + } + if (this.search.matched) {element = this.encloseMath(element)} + if (element) { + do {prev = element; element = element.nextSibling} + while (element && (element.nodeName.toLowerCase() === 'br' || + element.nodeName.toLowerCase() === '#comment')); + if (!element || element.nodeName !== '#text') {return prev} + } + } + return element; + }, + + startMatch: function (match,element) { + var delim = this.match[match[0]]; + if (delim != null) { + this.search = { + end: delim.end, mode: delim.mode, + open: element, olen: match[0].length, + opos: this.pattern.lastIndex - match[0].length + }; + this.switchPattern(delim.pattern); + } + return element; + }, + + endMatch: function (match,element) { + if (match[0] == this.search.end) { + this.search.close = element; + this.search.cpos = this.pattern.lastIndex; + this.search.clen = (this.search.isBeginEnd ? 0 : match[0].length); + this.search.matched = true; + element = this.encloseMath(element); + this.switchPattern(this.start); + } + return element; + }, + + switchPattern: function (pattern) { + pattern.lastIndex = this.pattern.lastIndex; + this.pattern = pattern; + this.search.start = (pattern === this.start); + }, + + encloseMath: function (element) { + var search = this.search, close = search.close, CLOSE, math; + if (search.cpos === close.length) {close = close.nextSibling} + else {close = close.splitText(search.cpos)} + if (!close) {CLOSE = close = MathJax.HTML.addText(search.close.parentNode,"")} + search.close = close; + math = (search.opos ? search.open.splitText(search.opos) : search.open); + while (math.nextSibling && math.nextSibling !== close) { + if (math.nextSibling.nodeValue !== null) { + if (math.nextSibling.nodeName === "#comment") { + math.nodeValue += math.nextSibling.nodeValue.replace(/^\[CDATA\[((.|\n|\r)*)\]\]$/,"$1"); + } else { + math.nodeValue += math.nextSibling.nodeValue; + } + } else if (this.msieNewlineBug) { + math.nodeValue += (math.nextSibling.nodeName.toLowerCase() === "br" ? "\n" : " "); + } else { + math.nodeValue += " "; + } + math.parentNode.removeChild(math.nextSibling); + } + var TeX = math.nodeValue.substr(search.olen,math.nodeValue.length-search.olen-search.clen); + math.parentNode.removeChild(math); + if (this.config.preview !== "none") {this.createPreview(search.mode,TeX)} + math = this.createMathTag(search.mode,TeX); + this.search = {}; this.pattern.lastIndex = 0; + if (CLOSE) {CLOSE.parentNode.removeChild(CLOSE)} + return math; + }, + + insertNode: function (node) { + var search = this.search; + search.close.parentNode.insertBefore(node,search.close); + }, + + createPreview: function (mode,asciimath) { + var preview; + if (this.config.preview === "AsciiMath") {preview = [this.filterAM(asciimath)]} + else if (this.config.preview instanceof Array) {preview = this.config.preview} + if (preview) { + preview = MathJax.HTML.Element("span",{className:MathJax.Hub.config.preRemoveClass},preview); + this.insertNode(preview); + } + }, + + createMathTag: function (mode,asciimath) { + var script = document.createElement("script"); + script.type = "math/asciimath" + mode; + MathJax.HTML.setScript(script,asciimath); + this.insertNode(script); + return script; + }, + + filterAM: function (asciimath) {return asciimath}, + + msieNewlineBug: (MathJax.Hub.Browser.isMSIE && (document.documentMode||0) < 9) + +}; + +MathJax.Hub.Register.PreProcessor(["PreProcess",MathJax.Extension.asciimath2jax]); +MathJax.Ajax.loadComplete("[MathJax]/extensions/asciimath2jax.js"); diff --git a/unpacked/jax/input/AsciiMath/config.js b/unpacked/jax/input/AsciiMath/config.js new file mode 100644 index 000000000..557fb686b --- /dev/null +++ b/unpacked/jax/input/AsciiMath/config.js @@ -0,0 +1,41 @@ +/************************************************************* + * + * MathJax/jax/input/AsciiMath/config.js + * + * Initializes the AsciiMath InputJax (the main definition is in + * MathJax/jax/input/AsciiMath/jax.js, which is loaded when needed). + * + * Originally adapted for MathJax by David Lippman. + * Additional work done by Davide P. Cervone. + * + * --------------------------------------------------------------------- + * + * Copyright (c) 2012 Design Science, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.InputJax.AsciiMath = MathJax.InputJax({ + id: "AsciiMath", + version: "1.0", + directory: MathJax.InputJax.directory + "/AsciiMath", + extensionDir: MathJax.InputJax.extensionDir + "/AsciiMath", + + config: { + displaystyle: true, // put limits above and below operators + decimal: "." // can change to "," but watch out for "(1,2)" + } +}); +MathJax.InputJax.AsciiMath.Register("math/asciimath"); + +MathJax.InputJax.AsciiMath.loadComplete("config.js"); diff --git a/unpacked/jax/input/AsciiMath/jax.js b/unpacked/jax/input/AsciiMath/jax.js new file mode 100644 index 000000000..15d7d16d1 --- /dev/null +++ b/unpacked/jax/input/AsciiMath/jax.js @@ -0,0 +1,1287 @@ +/************************************************************* + * + * MathJax/jax/input/AsciiMath/jax.js + * + * An Input Jax for AsciiMath notation + * (see http://www1.chapman.edu/~jipsen/mathml/asciimath.html). + * + * Originally adapted for MathJax by David Lippman. + * Additional work done by Davide P. Cervone. + * + * A portion of this file is taken from + * ASCIIMathML.js Version 1.4.7 Aug 30, 2005, (c) Peter Jipsen http://www.chapman.edu/~jipsen + * and is used by permission of Peter Jipsen, who has agreed to allow us to + * release it under the Apache2 license (see below). That portion is indicated + * via comments. + * + * The remainder falls under the copyright that follows. + * + * --------------------------------------------------------------------- + * + * Copyright (c) 2012 Design Science, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +(function (ASCIIMATH) { + + var MML; // Filled in later + + // + // Make a documentFragment work-alike that uses MML objects + // rather than DOM objects. + // + var DOCFRAG = MathJax.Object.Subclass({ + firstChild: null, + lastChild: null, + Init: function () { + this.childNodes = []; + }, + appendChild: function (node) { + if (node.parent) {node.parent.removeChild(node)} + if (this.lastChild) {this.lastChild.nextSibling = node} + if (!this.firstChild) {this.firstChild = node} + this.childNodes.push(node); node.parent = this; + this.lastChild = node; + return node; + }, + removeChild: function (node) { + for (var i = 0, m = this.childNodes.length; i < m; i++) + {if (this.childNodes[i] === node) break} + if (i === m) return; + this.childNodes.splice(i,1); + if (node === this.firstChild) {this.firstChild = node.nextSibling} + if (node === this.lastChild) { + if (!this.childNodes.length) {this.lastChild = null} + else {this.lastChild = this.childNodes[this.childNodes.length-1]} + } + if (i) {this.childNodes[i-1].nextSibling = node.nextSibling} + node.nextSibling = node.parent = null; + return node; + }, + replaceChild: function (node,old) { + for (var i = 0, m = this.childNodes.length; i < m; i++) + {if (this.childNodes[i] === old) break} + if (i) {this.childNodes[i-1].nextSibling = node} else {this.firstChild = node} + if (i >= m-1) {this.lastChild = node} + this.childNodes[i] = node; node.nextSibling = old.nextSibling; + old.nextSibling = old.parent = null; + return old; + } + }); + + var INITASCIIMATH = function () { + MML = MathJax.ElementJax.mml; + var MBASEINIT = MML.mbase.prototype.Init; + + // + // Make MML elements looks like DOM elements (add the + // methods that AsciiMath needs) + // + MML.mbase.Augment({ + firstChild: null, + lastChild: null, + nodeValue: "", + nextSibling: null, + Init: function () { + var obj = MBASEINIT.apply(this,arguments) || this; + obj.childNodes = obj.data; + obj.nodeName = obj.type; + return obj; + }, + appendChild: function (node) { + if (node.parent) {node.parent.removeChild(node)} + var nodes = arguments; if (node.isa(DOCFRAG)) {nodes = node.childNodes} + for (var i = 0, m = nodes.length; i < m; i++) { + node = nodes[i]; + if (this.lastChild) {this.lastChild.nextSibling = node} + if (!this.firstChild) {this.firstChild = node} + this.Append(node); + this.lastChild = node; + this.nodeValue += node.nodeValue; + } + return node; + }, + removeChild: function (node) { + for (var i = 0, m = this.childNodes.length; i < m; i++) + {if (this.childNodes[i] === node) break} + if (i === m) return; + this.childNodes.splice(i,1); + if (node === this.firstChild) {this.firstChild = node.nextSibling} + if (node === this.lastChild) { + if (!this.childNodes.length) {this.lastChild = null} + else {this.lastChild = this.childNodes[this.childNodes.length-1]} + } + if (i) {this.childNodes[i-1].nextSibling = node.nextSibling} + this.nodeValue = ""; + for (i = 0, m = this.childNodes.length; i < m; i++) + {this.nodeValue += this.childNodes[i].nodeValue} + node.nextSibling = node.parent = null; + return node; + }, + replaceChild: function (node,old) { + for (var i = 0, m = this.childNodes.length; i < m; i++) + {if (this.childNodes[i] === old) break} + // FIXME: make this work with DOCFRAG's? + if (i) {this.childNodes[i-1].nextSibling = node} else {this.firstChild = node} + if (i >= m-1) {this.lastChild = node} + this.SetData(i,node); node.nextSibling = old.nextSibling; + this.nodeValue = ""; + for (i = 0, m = this.childNodes.length; i < m; i++) + {this.nodeValue += this.childNodes[i].nodeValue} + old.nextSibling = old.parent = null; + return old; + }, + setAttribute: function (name,value) {this[name] = value} + }); + }; + + // + // Set up to isolate ASCIIMathML.js + // + + var window = {}; // hide the true window + + // + // Hide the true document, and add functions that + // use and produce MML objects instead of DOM objects + // + var document = { + getElementById: true, + createElementNS: function (ns,type) {return MML[type]()}, + createTextNode: function (text) {return MML.chars(text).With({nodeValue:text})}, + createDocumentFragment: function () {return DOCFRAG()} + }; + + var navigator = {appName: "MathJax"}; // hide the true navigator object + + +/****************************************************************** + * + * The following section is ASCIIMathML.js Version 1.4.7 + * (c) Peter Jipsen, used with permission. + * + * Some sections are commented out to save space in the + * minified version (but that is not strictly necessary). + * A few items are commented out and marked with DPVC comments + * in order to keep the minifier from complaining about the + * coding practices in ASCIIMathML.js + * + ******************************************************************/ + +/* +ASCIIMathML.js +============== +This file contains JavaScript functions to convert ASCII math notation +to Presentation MathML. The conversion is done while the (X)HTML page +loads, and should work with Firefox/Mozilla/Netscape 7+ and Internet +Explorer 6+MathPlayer (http://www.dessci.com/en/products/mathplayer/). +Just add the next line to your (X)HTML page with this file in the same folder: + +This is a convenient and inexpensive solution for authoring MathML. + +Version 1.4.7 Aug 30, 2005, (c) Peter Jipsen http://www.chapman.edu/~jipsen +Latest version at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML.js +For changes see http://www.chapman.edu/~jipsen/mathml/asciimathchanges.txt +If you use it on a webpage, please send the URL to jipsen@chapman.edu + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License (at http://www.gnu.org/copyleft/gpl.html) +for more details. +*/ + +//var checkForMathML = true; // check if browser can display MathML +//var notifyIfNoMathML = true; // display note if no MathML capability +//var alertIfNoMathML = true; // show alert box if no MathML capability +var mathcolor = "red"; // change it to "" (to inherit) or any other color +var mathfontfamily = "serif"; // change to "" to inherit (works in IE) + // or another family (e.g. "arial") +var displaystyle = true; // puts limits above and below large operators +var showasciiformulaonhover = true; // helps students learn ASCIIMath +var decimalsign = "."; // change to "," if you like, beware of `(1,2)`! +//var AMdelimiter1 = "`", AMescape1 = "\\\\`"; // can use other characters +//var AMdelimiter2 = "$", AMescape2 = "\\\\\\$", AMdelimiter2regexp = "\\$"; +//var doubleblankmathdelimiter = false; // if true, x+1 is equal to `x+1` + // for IE this works only in +//var separatetokens;// has been removed (email me if this is a problem) +var isIE = document.createElementNS==null; + +/* + * if (document.getElementById==null) + * alert("This webpage requires a recent browser such as\ + * \nMozilla/Netscape 7+ or Internet Explorer 6+MathPlayer") + */ + +// all further global variables start with "AM" + +function AMcreateElementXHTML(t) { + if (isIE) return document.createElement(t); + else return document.createElementNS("http://www.w3.org/1999/xhtml",t); +} + +/* + * function AMnoMathMLNote() { + * var nd = AMcreateElementXHTML("h3"); + * nd.setAttribute("align","center") + * nd.appendChild(AMcreateElementXHTML("p")); + * nd.appendChild(document.createTextNode("To view the ")); + * var an = AMcreateElementXHTML("a"); + * an.appendChild(document.createTextNode("ASCIIMathML")); + * an.setAttribute("href","http://www.chapman.edu/~jipsen/asciimath.html"); + * nd.appendChild(an); + * nd.appendChild(document.createTextNode(" notation use Internet Explorer 6+")); + * an = AMcreateElementXHTML("a"); + * an.appendChild(document.createTextNode("MathPlayer")); + * an.setAttribute("href","http://www.dessci.com/en/products/mathplayer/download.htm"); + * nd.appendChild(an); + * nd.appendChild(document.createTextNode(" or Netscape/Mozilla/Firefox")); + * nd.appendChild(AMcreateElementXHTML("p")); + * return nd; + * } + * + * function AMisMathMLavailable() { + * if (navigator.appName.slice(0,8)=="Netscape") + * if (navigator.appVersion.slice(0,1)>="5") return null; + * else return AMnoMathMLNote(); + * else if (navigator.appName.slice(0,9)=="Microsoft") + * try { + * var ActiveX = new ActiveXObject("MathPlayer.Factory.1"); + * return null; + * } catch (e) { + * return AMnoMathMLNote(); + * } + * else return AMnoMathMLNote(); + * } + */ + +// character lists for Mozilla/Netscape fonts +var AMcal = [0xEF35,0x212C,0xEF36,0xEF37,0x2130,0x2131,0xEF38,0x210B,0x2110,0xEF39,0xEF3A,0x2112,0x2133,0xEF3B,0xEF3C,0xEF3D,0xEF3E,0x211B,0xEF3F,0xEF40,0xEF41,0xEF42,0xEF43,0xEF44,0xEF45,0xEF46]; +var AMfrk = [0xEF5D,0xEF5E,0x212D,0xEF5F,0xEF60,0xEF61,0xEF62,0x210C,0x2111,0xEF63,0xEF64,0xEF65,0xEF66,0xEF67,0xEF68,0xEF69,0xEF6A,0x211C,0xEF6B,0xEF6C,0xEF6D,0xEF6E,0xEF6F,0xEF70,0xEF71,0x2128]; +var AMbbb = [0xEF8C,0xEF8D,0x2102,0xEF8E,0xEF8F,0xEF90,0xEF91,0x210D,0xEF92,0xEF93,0xEF94,0xEF95,0xEF96,0x2115,0xEF97,0x2119,0x211A,0x211D,0xEF98,0xEF99,0xEF9A,0xEF9B,0xEF9C,0xEF9D,0xEF9E,0x2124]; + +var CONST = 0, UNARY = 1, BINARY = 2, INFIX = 3, LEFTBRACKET = 4, + RIGHTBRACKET = 5, SPACE = 6, UNDEROVER = 7, DEFINITION = 8, + LEFTRIGHT = 9, TEXT = 10; // token types + +var AMsqrt = {input:"sqrt", tag:"msqrt", output:"sqrt", tex:null, ttype:UNARY}, + AMroot = {input:"root", tag:"mroot", output:"root", tex:null, ttype:BINARY}, + AMfrac = {input:"frac", tag:"mfrac", output:"/", tex:null, ttype:BINARY}, + AMdiv = {input:"/", tag:"mfrac", output:"/", tex:null, ttype:INFIX}, + AMover = {input:"stackrel", tag:"mover", output:"stackrel", tex:null, ttype:BINARY}, + AMsub = {input:"_", tag:"msub", output:"_", tex:null, ttype:INFIX}, + AMsup = {input:"^", tag:"msup", output:"^", tex:null, ttype:INFIX}, + AMtext = {input:"text", tag:"mtext", output:"text", tex:null, ttype:TEXT}, + AMmbox = {input:"mbox", tag:"mtext", output:"mbox", tex:null, ttype:TEXT}, + AMquote = {input:"\"", tag:"mtext", output:"mbox", tex:null, ttype:TEXT}; + +var AMsymbols = [ +//some greek symbols +{input:"alpha", tag:"mi", output:"\u03B1", tex:null, ttype:CONST}, +{input:"beta", tag:"mi", output:"\u03B2", tex:null, ttype:CONST}, +{input:"chi", tag:"mi", output:"\u03C7", tex:null, ttype:CONST}, +{input:"delta", tag:"mi", output:"\u03B4", tex:null, ttype:CONST}, +{input:"Delta", tag:"mo", output:"\u0394", tex:null, ttype:CONST}, +{input:"epsi", tag:"mi", output:"\u03B5", tex:"epsilon", ttype:CONST}, +{input:"varepsilon", tag:"mi", output:"\u025B", tex:null, ttype:CONST}, +{input:"eta", tag:"mi", output:"\u03B7", tex:null, ttype:CONST}, +{input:"gamma", tag:"mi", output:"\u03B3", tex:null, ttype:CONST}, +{input:"Gamma", tag:"mo", output:"\u0393", tex:null, ttype:CONST}, +{input:"iota", tag:"mi", output:"\u03B9", tex:null, ttype:CONST}, +{input:"kappa", tag:"mi", output:"\u03BA", tex:null, ttype:CONST}, +{input:"lambda", tag:"mi", output:"\u03BB", tex:null, ttype:CONST}, +{input:"Lambda", tag:"mo", output:"\u039B", tex:null, ttype:CONST}, +{input:"mu", tag:"mi", output:"\u03BC", tex:null, ttype:CONST}, +{input:"nu", tag:"mi", output:"\u03BD", tex:null, ttype:CONST}, +{input:"omega", tag:"mi", output:"\u03C9", tex:null, ttype:CONST}, +{input:"Omega", tag:"mo", output:"\u03A9", tex:null, ttype:CONST}, +{input:"phi", tag:"mi", output:"\u03C6", tex:null, ttype:CONST}, +{input:"varphi", tag:"mi", output:"\u03D5", tex:null, ttype:CONST}, +{input:"Phi", tag:"mo", output:"\u03A6", tex:null, ttype:CONST}, +{input:"pi", tag:"mi", output:"\u03C0", tex:null, ttype:CONST}, +{input:"Pi", tag:"mo", output:"\u03A0", tex:null, ttype:CONST}, +{input:"psi", tag:"mi", output:"\u03C8", tex:null, ttype:CONST}, +{input:"Psi", tag:"mi", output:"\u03A8", tex:null, ttype:CONST}, +{input:"rho", tag:"mi", output:"\u03C1", tex:null, ttype:CONST}, +{input:"sigma", tag:"mi", output:"\u03C3", tex:null, ttype:CONST}, +{input:"Sigma", tag:"mo", output:"\u03A3", tex:null, ttype:CONST}, +{input:"tau", tag:"mi", output:"\u03C4", tex:null, ttype:CONST}, +{input:"theta", tag:"mi", output:"\u03B8", tex:null, ttype:CONST}, +{input:"vartheta", tag:"mi", output:"\u03D1", tex:null, ttype:CONST}, +{input:"Theta", tag:"mo", output:"\u0398", tex:null, ttype:CONST}, +{input:"upsilon", tag:"mi", output:"\u03C5", tex:null, ttype:CONST}, +{input:"xi", tag:"mi", output:"\u03BE", tex:null, ttype:CONST}, +{input:"Xi", tag:"mo", output:"\u039E", tex:null, ttype:CONST}, +{input:"zeta", tag:"mi", output:"\u03B6", tex:null, ttype:CONST}, + +//binary operation symbols +{input:"*", tag:"mo", output:"\u22C5", tex:"cdot", ttype:CONST}, +{input:"**", tag:"mo", output:"\u22C6", tex:"star", ttype:CONST}, +{input:"//", tag:"mo", output:"/", tex:null, ttype:CONST}, +{input:"\\\\", tag:"mo", output:"\\", tex:"backslash", ttype:CONST}, +{input:"setminus", tag:"mo", output:"\\", tex:null, ttype:CONST}, +{input:"xx", tag:"mo", output:"\u00D7", tex:"times", ttype:CONST}, +{input:"-:", tag:"mo", output:"\u00F7", tex:"divide", ttype:CONST}, +{input:"@", tag:"mo", output:"\u2218", tex:"circ", ttype:CONST}, +{input:"o+", tag:"mo", output:"\u2295", tex:"oplus", ttype:CONST}, +{input:"ox", tag:"mo", output:"\u2297", tex:"otimes", ttype:CONST}, +{input:"o.", tag:"mo", output:"\u2299", tex:"odot", ttype:CONST}, +{input:"sum", tag:"mo", output:"\u2211", tex:null, ttype:UNDEROVER}, +{input:"prod", tag:"mo", output:"\u220F", tex:null, ttype:UNDEROVER}, +{input:"^^", tag:"mo", output:"\u2227", tex:"wedge", ttype:CONST}, +{input:"^^^", tag:"mo", output:"\u22C0", tex:"bigwedge", ttype:UNDEROVER}, +{input:"vv", tag:"mo", output:"\u2228", tex:"vee", ttype:CONST}, +{input:"vvv", tag:"mo", output:"\u22C1", tex:"bigvee", ttype:UNDEROVER}, +{input:"nn", tag:"mo", output:"\u2229", tex:"cap", ttype:CONST}, +{input:"nnn", tag:"mo", output:"\u22C2", tex:"bigcap", ttype:UNDEROVER}, +{input:"uu", tag:"mo", output:"\u222A", tex:"cup", ttype:CONST}, +{input:"uuu", tag:"mo", output:"\u22C3", tex:"bigcup", ttype:UNDEROVER}, + +//binary relation symbols +{input:"!=", tag:"mo", output:"\u2260", tex:"ne", ttype:CONST}, +{input:":=", tag:"mo", output:":=", tex:null, ttype:CONST}, +{input:"lt", tag:"mo", output:"<", tex:null, ttype:CONST}, +{input:"<=", tag:"mo", output:"\u2264", tex:"le", ttype:CONST}, +{input:"lt=", tag:"mo", output:"\u2264", tex:"leq", ttype:CONST}, +{input:">=", tag:"mo", output:"\u2265", tex:"ge", ttype:CONST}, +{input:"geq", tag:"mo", output:"\u2265", tex:null, ttype:CONST}, +{input:"-<", tag:"mo", output:"\u227A", tex:"prec", ttype:CONST}, +{input:"-lt", tag:"mo", output:"\u227A", tex:null, ttype:CONST}, +{input:">-", tag:"mo", output:"\u227B", tex:"succ", ttype:CONST}, +{input:"in", tag:"mo", output:"\u2208", tex:null, ttype:CONST}, +{input:"!in", tag:"mo", output:"\u2209", tex:"notin", ttype:CONST}, +{input:"sub", tag:"mo", output:"\u2282", tex:"subset", ttype:CONST}, +{input:"sup", tag:"mo", output:"\u2283", tex:"supset", ttype:CONST}, +{input:"sube", tag:"mo", output:"\u2286", tex:"subseteq", ttype:CONST}, +{input:"supe", tag:"mo", output:"\u2287", tex:"supseteq", ttype:CONST}, +{input:"-=", tag:"mo", output:"\u2261", tex:"equiv", ttype:CONST}, +{input:"~=", tag:"mo", output:"\u2245", tex:"cong", ttype:CONST}, +{input:"~~", tag:"mo", output:"\u2248", tex:"approx", ttype:CONST}, +{input:"prop", tag:"mo", output:"\u221D", tex:"propto", ttype:CONST}, + +//logical symbols +{input:"and", tag:"mtext", output:"and", tex:null, ttype:SPACE}, +{input:"or", tag:"mtext", output:"or", tex:null, ttype:SPACE}, +{input:"not", tag:"mo", output:"\u00AC", tex:"neg", ttype:CONST}, +{input:"=>", tag:"mo", output:"\u21D2", tex:"implies", ttype:CONST}, +{input:"if", tag:"mo", output:"if", tex:null, ttype:SPACE}, +{input:"<=>", tag:"mo", output:"\u21D4", tex:"iff", ttype:CONST}, +{input:"AA", tag:"mo", output:"\u2200", tex:"forall", ttype:CONST}, +{input:"EE", tag:"mo", output:"\u2203", tex:"exists", ttype:CONST}, +{input:"_|_", tag:"mo", output:"\u22A5", tex:"bot", ttype:CONST}, +{input:"TT", tag:"mo", output:"\u22A4", tex:"top", ttype:CONST}, +{input:"|--", tag:"mo", output:"\u22A2", tex:"vdash", ttype:CONST}, +{input:"|==", tag:"mo", output:"\u22A8", tex:"models", ttype:CONST}, + +//grouping brackets +{input:"(", tag:"mo", output:"(", tex:null, ttype:LEFTBRACKET}, +{input:")", tag:"mo", output:")", tex:null, ttype:RIGHTBRACKET}, +{input:"[", tag:"mo", output:"[", tex:null, ttype:LEFTBRACKET}, +{input:"]", tag:"mo", output:"]", tex:null, ttype:RIGHTBRACKET}, +{input:"{", tag:"mo", output:"{", tex:null, ttype:LEFTBRACKET}, +{input:"}", tag:"mo", output:"}", tex:null, ttype:RIGHTBRACKET}, +{input:"|", tag:"mo", output:"|", tex:null, ttype:LEFTRIGHT}, +//{input:"||", tag:"mo", output:"||", tex:null, ttype:LEFTRIGHT}, +{input:"(:", tag:"mo", output:"\u2329", tex:"langle", ttype:LEFTBRACKET}, +{input:":)", tag:"mo", output:"\u232A", tex:"rangle", ttype:RIGHTBRACKET}, +{input:"<<", tag:"mo", output:"\u2329", tex:null, ttype:LEFTBRACKET}, +{input:">>", tag:"mo", output:"\u232A", tex:null, ttype:RIGHTBRACKET}, +{input:"{:", tag:"mo", output:"{:", tex:null, ttype:LEFTBRACKET, invisible:true}, +{input:":}", tag:"mo", output:":}", tex:null, ttype:RIGHTBRACKET, invisible:true}, + +//miscellaneous symbols +{input:"int", tag:"mo", output:"\u222B", tex:null, ttype:CONST}, +{input:"dx", tag:"mi", output:"{:d x:}", tex:null, ttype:DEFINITION}, +{input:"dy", tag:"mi", output:"{:d y:}", tex:null, ttype:DEFINITION}, +{input:"dz", tag:"mi", output:"{:d z:}", tex:null, ttype:DEFINITION}, +{input:"dt", tag:"mi", output:"{:d t:}", tex:null, ttype:DEFINITION}, +{input:"oint", tag:"mo", output:"\u222E", tex:null, ttype:CONST}, +{input:"del", tag:"mo", output:"\u2202", tex:"partial", ttype:CONST}, +{input:"grad", tag:"mo", output:"\u2207", tex:"nabla", ttype:CONST}, +{input:"+-", tag:"mo", output:"\u00B1", tex:"pm", ttype:CONST}, +{input:"O/", tag:"mo", output:"\u2205", tex:"emptyset", ttype:CONST}, +{input:"oo", tag:"mo", output:"\u221E", tex:"infty", ttype:CONST}, +{input:"aleph", tag:"mo", output:"\u2135", tex:null, ttype:CONST}, +{input:"...", tag:"mo", output:"...", tex:"ldots", ttype:CONST}, +{input:":.", tag:"mo", output:"\u2234", tex:"therefore", ttype:CONST}, +{input:"/_", tag:"mo", output:"\u2220", tex:"angle", ttype:CONST}, +{input:"\\ ", tag:"mo", output:"\u00A0", tex:null, ttype:CONST}, +{input:"quad", tag:"mo", output:"\u00A0\u00A0", tex:null, ttype:CONST}, +{input:"qquad", tag:"mo", output:"\u00A0\u00A0\u00A0\u00A0", tex:null, ttype:CONST}, +{input:"cdots", tag:"mo", output:"\u22EF", tex:null, ttype:CONST}, +{input:"vdots", tag:"mo", output:"\u22EE", tex:null, ttype:CONST}, +{input:"ddots", tag:"mo", output:"\u22F1", tex:null, ttype:CONST}, +{input:"diamond", tag:"mo", output:"\u22C4", tex:null, ttype:CONST}, +{input:"square", tag:"mo", output:"\u25A1", tex:null, ttype:CONST}, +{input:"|__", tag:"mo", output:"\u230A", tex:"lfloor", ttype:CONST}, +{input:"__|", tag:"mo", output:"\u230B", tex:"rfloor", ttype:CONST}, +{input:"|~", tag:"mo", output:"\u2308", tex:"lceiling", ttype:CONST}, +{input:"~|", tag:"mo", output:"\u2309", tex:"rceiling", ttype:CONST}, +{input:"CC", tag:"mo", output:"\u2102", tex:null, ttype:CONST}, +{input:"NN", tag:"mo", output:"\u2115", tex:null, ttype:CONST}, +{input:"QQ", tag:"mo", output:"\u211A", tex:null, ttype:CONST}, +{input:"RR", tag:"mo", output:"\u211D", tex:null, ttype:CONST}, +{input:"ZZ", tag:"mo", output:"\u2124", tex:null, ttype:CONST}, +{input:"f", tag:"mi", output:"f", tex:null, ttype:UNARY, func:true}, +{input:"g", tag:"mi", output:"g", tex:null, ttype:UNARY, func:true}, + +//standard functions +{input:"lim", tag:"mo", output:"lim", tex:null, ttype:UNDEROVER}, +{input:"Lim", tag:"mo", output:"Lim", tex:null, ttype:UNDEROVER}, +{input:"sin", tag:"mo", output:"sin", tex:null, ttype:UNARY, func:true}, +{input:"cos", tag:"mo", output:"cos", tex:null, ttype:UNARY, func:true}, +{input:"tan", tag:"mo", output:"tan", tex:null, ttype:UNARY, func:true}, +{input:"sinh", tag:"mo", output:"sinh", tex:null, ttype:UNARY, func:true}, +{input:"cosh", tag:"mo", output:"cosh", tex:null, ttype:UNARY, func:true}, +{input:"tanh", tag:"mo", output:"tanh", tex:null, ttype:UNARY, func:true}, +{input:"cot", tag:"mo", output:"cot", tex:null, ttype:UNARY, func:true}, +{input:"sec", tag:"mo", output:"sec", tex:null, ttype:UNARY, func:true}, +{input:"csc", tag:"mo", output:"csc", tex:null, ttype:UNARY, func:true}, +{input:"log", tag:"mo", output:"log", tex:null, ttype:UNARY, func:true}, +{input:"ln", tag:"mo", output:"ln", tex:null, ttype:UNARY, func:true}, +{input:"det", tag:"mo", output:"det", tex:null, ttype:UNARY, func:true}, +{input:"dim", tag:"mo", output:"dim", tex:null, ttype:CONST}, +{input:"mod", tag:"mo", output:"mod", tex:null, ttype:CONST}, +{input:"gcd", tag:"mo", output:"gcd", tex:null, ttype:UNARY, func:true}, +{input:"lcm", tag:"mo", output:"lcm", tex:null, ttype:UNARY, func:true}, +{input:"lub", tag:"mo", output:"lub", tex:null, ttype:CONST}, +{input:"glb", tag:"mo", output:"glb", tex:null, ttype:CONST}, +{input:"min", tag:"mo", output:"min", tex:null, ttype:UNDEROVER}, +{input:"max", tag:"mo", output:"max", tex:null, ttype:UNDEROVER}, + +//arrows +{input:"uarr", tag:"mo", output:"\u2191", tex:"uparrow", ttype:CONST}, +{input:"darr", tag:"mo", output:"\u2193", tex:"downarrow", ttype:CONST}, +{input:"rarr", tag:"mo", output:"\u2192", tex:"rightarrow", ttype:CONST}, +{input:"->", tag:"mo", output:"\u2192", tex:"to", ttype:CONST}, +{input:"|->", tag:"mo", output:"\u21A6", tex:"mapsto", ttype:CONST}, +{input:"larr", tag:"mo", output:"\u2190", tex:"leftarrow", ttype:CONST}, +{input:"harr", tag:"mo", output:"\u2194", tex:"leftrightarrow", ttype:CONST}, +{input:"rArr", tag:"mo", output:"\u21D2", tex:"Rightarrow", ttype:CONST}, +{input:"lArr", tag:"mo", output:"\u21D0", tex:"Leftarrow", ttype:CONST}, +{input:"hArr", tag:"mo", output:"\u21D4", tex:"Leftrightarrow", ttype:CONST}, + +//commands with argument +AMsqrt, AMroot, AMfrac, AMdiv, AMover, AMsub, AMsup, +{input:"hat", tag:"mover", output:"\u005E", tex:null, ttype:UNARY, acc:true}, +{input:"bar", tag:"mover", output:"\u00AF", tex:"overline", ttype:UNARY, acc:true}, +{input:"vec", tag:"mover", output:"\u2192", tex:null, ttype:UNARY, acc:true}, +{input:"dot", tag:"mover", output:".", tex:null, ttype:UNARY, acc:true}, +{input:"ddot", tag:"mover", output:"..", tex:null, ttype:UNARY, acc:true}, +{input:"ul", tag:"munder", output:"\u0332", tex:"underline", ttype:UNARY, acc:true}, +AMtext, AMmbox, AMquote, +{input:"bb", tag:"mstyle", atname:"fontweight", atval:"bold", output:"bb", tex:null, ttype:UNARY}, +{input:"mathbf", tag:"mstyle", atname:"fontweight", atval:"bold", output:"mathbf", tex:null, ttype:UNARY}, +{input:"sf", tag:"mstyle", atname:"fontfamily", atval:"sans-serif", output:"sf", tex:null, ttype:UNARY}, +{input:"mathsf", tag:"mstyle", atname:"fontfamily", atval:"sans-serif", output:"mathsf", tex:null, ttype:UNARY}, +{input:"bbb", tag:"mstyle", atname:"mathvariant", atval:"double-struck", output:"bbb", tex:null, ttype:UNARY, codes:AMbbb}, +{input:"mathbb", tag:"mstyle", atname:"mathvariant", atval:"double-struck", output:"mathbb", tex:null, ttype:UNARY, codes:AMbbb}, +{input:"cc", tag:"mstyle", atname:"mathvariant", atval:"script", output:"cc", tex:null, ttype:UNARY, codes:AMcal}, +{input:"mathcal", tag:"mstyle", atname:"mathvariant", atval:"script", output:"mathcal", tex:null, ttype:UNARY, codes:AMcal}, +{input:"tt", tag:"mstyle", atname:"fontfamily", atval:"monospace", output:"tt", tex:null, ttype:UNARY}, +{input:"mathtt", tag:"mstyle", atname:"fontfamily", atval:"monospace", output:"mathtt", tex:null, ttype:UNARY}, +{input:"fr", tag:"mstyle", atname:"mathvariant", atval:"fraktur", output:"fr", tex:null, ttype:UNARY, codes:AMfrk}, +{input:"mathfrak", tag:"mstyle", atname:"mathvariant", atval:"fraktur", output:"mathfrak", tex:null, ttype:UNARY, codes:AMfrk} +]; + +function compareNames(s1,s2) { + if (s1.input > s2.input) return 1 + else return -1; +} + +var AMnames = []; //list of input symbols + +function AMinitSymbols() { + var texsymbols = [], i; + for (i=0; i=n where str appears or would be inserted +// assumes arr is sorted + if (n==0) { + var h,m; + n = -1; + h = arr.length; + while (n+1> 1; + if (arr[m]=str +} + +function AMgetSymbol(str) { +//return maximal initial substring of str that appears in names +//return null if there is none + var k = 0; //new pos + var j = 0; //old pos + var mk; //match pos + var st; + var tagst; + var match = ""; + var more = true; + for (var i=1; i<=str.length && more; i++) { + st = str.slice(0,i); //initial substring of length i + j = k; + k = AMposition(AMnames, st, j); + if (k=AMnames[k]; + } + AMpreviousSymbol=AMcurrentSymbol; + if (match!=""){ + AMcurrentSymbol=AMsymbols[mk].ttype; + return AMsymbols[mk]; + } +// if str[0] is a digit or - return maxsubstring of digits.digits + AMcurrentSymbol=CONST; + k = 1; + st = str.slice(0,1); + var integ = true; + while ("0"<=st && st<="9" && k<=str.length) { + st = str.slice(k,k+1); + k++; + } + if (st == decimalsign) { + st = str.slice(k,k+1); + if ("0"<=st && st<="9") { + integ = false; + k++; + while ("0"<=st && st<="9" && k<=str.length) { + st = str.slice(k,k+1); + k++; + } + } + } + if ((integ && k>1) || k>2) { + st = str.slice(0,k-1); + tagst = "mn"; + } else { + k = 2; + st = str.slice(0,1); //take 1 character + tagst = (("A">st || st>"Z") && ("a">st || st>"z")?"mo":"mi"); + } + if (st=="-" && AMpreviousSymbol==INFIX) + return {input:st, tag:tagst, output:st, ttype:UNARY, func:true}; + return {input:st, tag:tagst, output:st, ttype:CONST}; +} + +function AMremoveBrackets(node) { + var st; + if (node.nodeName=="mrow") { + st = node.firstChild.firstChild.nodeValue; + if (st=="(" || st=="[" || st=="{") node.removeChild(node.firstChild); + } + if (node.nodeName=="mrow") { + st = node.lastChild.firstChild.nodeValue; + if (st==")" || st=="]" || st=="}") node.removeChild(node.lastChild); + } +} + +/*Parsing ASCII math expressions with the following grammar +v ::= [A-Za-z] | greek letters | numbers | other constant symbols +u ::= sqrt | text | bb | other unary symbols for font commands +b ::= frac | root | stackrel binary symbols +l ::= ( | [ | { | (: | {: left brackets +r ::= ) | ] | } | :) | :} right brackets +S ::= v | lEr | uS | bSS Simple expression +I ::= S_S | S^S | S_S^S | S Intermediate expression +E ::= IE | I/I Expression +Each terminal symbol is translated into a corresponding mathml node.*/ + +var AMnestingDepth,AMpreviousSymbol,AMcurrentSymbol; + +function AMparseSexpr(str) { //parses str and returns [node,tailstr] + var symbol, node, result, i, st,// rightvert = false, + newFrag = document.createDocumentFragment(); + str = AMremoveCharsAndBlanks(str,0); + symbol = AMgetSymbol(str); //either a token or a bracket or empty + if (symbol == null || symbol.ttype == RIGHTBRACKET && AMnestingDepth > 0) { + return [null,str]; + } + if (symbol.ttype == DEFINITION) { + str = symbol.output+AMremoveCharsAndBlanks(str,symbol.input.length); + symbol = AMgetSymbol(str); + } + switch (symbol.ttype) { + case UNDEROVER: + case CONST: + str = AMremoveCharsAndBlanks(str,symbol.input.length); + return [AMcreateMmlNode(symbol.tag, //its a constant + document.createTextNode(symbol.output)),str]; + case LEFTBRACKET: //read (expr+) + AMnestingDepth++; + str = AMremoveCharsAndBlanks(str,symbol.input.length); + result = AMparseExpr(str,true); + AMnestingDepth--; + if (typeof symbol.invisible == "boolean" && symbol.invisible) + node = AMcreateMmlNode("mrow",result[0]); + else { + node = AMcreateMmlNode("mo",document.createTextNode(symbol.output)); + node = AMcreateMmlNode("mrow",node); + node.appendChild(result[0]); + } + return [node,result[1]]; + case TEXT: + if (symbol!=AMquote) str = AMremoveCharsAndBlanks(str,symbol.input.length); + if (str.charAt(0)=="{") i=str.indexOf("}"); + else if (str.charAt(0)=="(") i=str.indexOf(")"); + else if (str.charAt(0)=="[") i=str.indexOf("]"); + else if (symbol==AMquote) i=str.slice(1).indexOf("\"")+1; + else i = 0; + if (i==-1) i = str.length; + st = str.slice(1,i); + if (st.charAt(0) == " ") { + node = AMcreateElementMathML("mspace"); + node.setAttribute("width","1ex"); + newFrag.appendChild(node); + } + newFrag.appendChild( + AMcreateMmlNode(symbol.tag,document.createTextNode(st))); + if (st.charAt(st.length-1) == " ") { + node = AMcreateElementMathML("mspace"); + node.setAttribute("width","1ex"); + newFrag.appendChild(node); + } + str = AMremoveCharsAndBlanks(str,i+1); + return [AMcreateMmlNode("mrow",newFrag),str]; + case UNARY: + str = AMremoveCharsAndBlanks(str,symbol.input.length); + result = AMparseSexpr(str); + if (result[0]==null) return [AMcreateMmlNode(symbol.tag, + document.createTextNode(symbol.output)),str]; + if (typeof symbol.func == "boolean" && symbol.func) { // functions hack + st = str.charAt(0); + if (st=="^" || st=="_" || st=="/" || st=="|" || st==",") { + return [AMcreateMmlNode(symbol.tag, + document.createTextNode(symbol.output)),str]; + } else { + node = AMcreateMmlNode("mrow", + AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output))); + node.appendChild(result[0]); + return [node,result[1]]; + } + } + AMremoveBrackets(result[0]); + if (symbol.input == "sqrt") { // sqrt + return [AMcreateMmlNode(symbol.tag,result[0]),result[1]]; + } else if (typeof symbol.acc == "boolean" && symbol.acc) { // accent + node = AMcreateMmlNode(symbol.tag,result[0]); + node.appendChild(AMcreateMmlNode("mo",document.createTextNode(symbol.output))); + return [node,result[1]]; + } else { // font change command + if (!isIE && typeof symbol.codes != "undefined") { + for (i=0; i64 && st.charCodeAt(j)<91) newst = newst + + String.fromCharCode(symbol.codes[st.charCodeAt(j)-65]); + else newst = newst + st.charAt(j); + if (result[0].nodeName=="mi") + result[0]=AMcreateElementMathML("mo"). + appendChild(document.createTextNode(newst)); + else result[0].replaceChild(AMcreateElementMathML("mo"). + appendChild(document.createTextNode(newst)),result[0].childNodes[i]); + } + } + node = AMcreateMmlNode(symbol.tag,result[0]); + node.setAttribute(symbol.atname,symbol.atval); + return [node,result[1]]; + } + case BINARY: + str = AMremoveCharsAndBlanks(str,symbol.input.length); + result = AMparseSexpr(str); + if (result[0]==null) return [AMcreateMmlNode("mo", + document.createTextNode(symbol.input)),str]; + AMremoveBrackets(result[0]); + var result2 = AMparseSexpr(result[1]); + if (result2[0]==null) return [AMcreateMmlNode("mo", + document.createTextNode(symbol.input)),str]; + AMremoveBrackets(result2[0]); + if (symbol.input=="root" || symbol.input=="stackrel") + newFrag.appendChild(result2[0]); + newFrag.appendChild(result[0]); + if (symbol.input=="frac") newFrag.appendChild(result2[0]); + return [AMcreateMmlNode(symbol.tag,newFrag),result2[1]]; + case INFIX: + str = AMremoveCharsAndBlanks(str,symbol.input.length); + return [AMcreateMmlNode("mo",document.createTextNode(symbol.output)),str]; + case SPACE: + str = AMremoveCharsAndBlanks(str,symbol.input.length); + node = AMcreateElementMathML("mspace"); + node.setAttribute("width","1ex"); + newFrag.appendChild(node); + newFrag.appendChild( + AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output))); + node = AMcreateElementMathML("mspace"); + node.setAttribute("width","1ex"); + newFrag.appendChild(node); + return [AMcreateMmlNode("mrow",newFrag),str]; + case LEFTRIGHT: +// if (rightvert) return [null,str]; else rightvert = true; + AMnestingDepth++; + str = AMremoveCharsAndBlanks(str,symbol.input.length); + result = AMparseExpr(str,false); + AMnestingDepth--; + /*var*//*DPVC*/ st = ""; + if (result[0].lastChild!=null) + st = result[0].lastChild.firstChild.nodeValue; +//alert(result[0].lastChild+"***"+st); + if (st == "|") { // its an absolute value subterm + node = AMcreateMmlNode("mo",document.createTextNode(symbol.output)); + node = AMcreateMmlNode("mrow",node); + node.appendChild(result[0]); + return [node,result[1]]; + } else { // the "|" is a \mid + node = AMcreateMmlNode("mo",document.createTextNode(symbol.output)); + node = AMcreateMmlNode("mrow",node); + return [node,str]; + } + default: +//alert("default"); + str = AMremoveCharsAndBlanks(str,symbol.input.length); + return [AMcreateMmlNode(symbol.tag, //its a constant + document.createTextNode(symbol.output)),str]; + } +} + +function AMparseIexpr(str) { + var symbol, sym1, sym2, node, result, underover; + str = AMremoveCharsAndBlanks(str,0); + sym1 = AMgetSymbol(str); + result = AMparseSexpr(str); + node = result[0]; + str = result[1]; + symbol = AMgetSymbol(str); + if (symbol.ttype == INFIX && symbol.input != "/") { + str = AMremoveCharsAndBlanks(str,symbol.input.length); +// if (symbol.input == "/") result = AMparseIexpr(str); else ... + result = AMparseSexpr(str); + if (result[0] == null) // show box in place of missing argument + result[0] = AMcreateMmlNode("mo",document.createTextNode("\u25A1")); + else AMremoveBrackets(result[0]); + str = result[1]; +// if (symbol.input == "/") AMremoveBrackets(node); + if (symbol.input == "_") { + sym2 = AMgetSymbol(str); + underover = (sym1.ttype == UNDEROVER); + if (sym2.input == "^") { + str = AMremoveCharsAndBlanks(str,sym2.input.length); + var res2 = AMparseSexpr(str); + AMremoveBrackets(res2[0]); + str = res2[1]; + node = AMcreateMmlNode((underover?"munderover":"msubsup"),node); + node.appendChild(result[0]); + node.appendChild(res2[0]); + node = AMcreateMmlNode("mrow",node); // so sum does not stretch + } else { + node = AMcreateMmlNode((underover?"munder":"msub"),node); + node.appendChild(result[0]); + } + } else { + node = AMcreateMmlNode(symbol.tag,node); + node.appendChild(result[0]); + } + } + return [node,str]; +} + +function AMparseExpr(str,rightbracket) { + var symbol, node, result, i, /*nodeList = [],*//*DPVC*/ + newFrag = document.createDocumentFragment(); + do { + str = AMremoveCharsAndBlanks(str,0); + result = AMparseIexpr(str); + node = result[0]; + str = result[1]; + symbol = AMgetSymbol(str); + if (symbol.ttype == INFIX && symbol.input == "/") { + str = AMremoveCharsAndBlanks(str,symbol.input.length); + result = AMparseIexpr(str); + if (result[0] == null) // show box in place of missing argument + result[0] = AMcreateMmlNode("mo",document.createTextNode("\u25A1")); + else AMremoveBrackets(result[0]); + str = result[1]; + AMremoveBrackets(node); + node = AMcreateMmlNode(symbol.tag,node); + node.appendChild(result[0]); + newFrag.appendChild(node); + symbol = AMgetSymbol(str); + } + else if (node!=undefined) newFrag.appendChild(node); + } while ((symbol.ttype != RIGHTBRACKET && + (symbol.ttype != LEFTRIGHT || rightbracket) + || AMnestingDepth == 0) && symbol!=null && symbol.output!=""); + if (symbol.ttype == RIGHTBRACKET || symbol.ttype == LEFTRIGHT) { +// if (AMnestingDepth > 0) AMnestingDepth--; + var len = newFrag.childNodes.length; + if (len>0 && newFrag.childNodes[len-1].nodeName == "mrow" && len>1 && + newFrag.childNodes[len-2].nodeName == "mo" && + newFrag.childNodes[len-2].firstChild.nodeValue == ",") { //matrix + var right = newFrag.childNodes[len-1].lastChild.firstChild.nodeValue; + if (right==")" || right=="]") { + var left = newFrag.childNodes[len-1].firstChild.firstChild.nodeValue; + if (left=="(" && right==")" && symbol.output != "}" || + left=="[" && right=="]") { + var pos = []; // positions of commas + var matrix = true; + var m = newFrag.childNodes.length; + for (i=0; matrix && i1) matrix = pos[i].length == pos[i-2].length; + } + if (matrix) { + var row, frag, n, k, table = document.createDocumentFragment(); + for (i=0; i(-,-,...,-,-) + n = node.childNodes.length; + k = 0; + node.removeChild(node.firstChild); //remove ( + for (j=1; j2) { + newFrag.removeChild(newFrag.firstChild); //remove ) + newFrag.removeChild(newFrag.firstChild); //remove , + } + table.appendChild(AMcreateMmlNode("mtr",row)); + } + node = AMcreateMmlNode("mtable",table); + if (typeof symbol.invisible == "boolean" && symbol.invisible) node.setAttribute("columnalign","left"); + newFrag.replaceChild(node,newFrag.firstChild); + } + } + } + } + str = AMremoveCharsAndBlanks(str,symbol.input.length); + if (typeof symbol.invisible != "boolean" || !symbol.invisible) { + node = AMcreateMmlNode("mo",document.createTextNode(symbol.output)); + newFrag.appendChild(node); + } + } + return [newFrag,str]; +} + +function AMparseMath(str) { + var /*result,*//*DPVC*/ node = AMcreateElementMathML("mstyle"); + if (mathcolor != "") node.setAttribute("mathcolor",mathcolor); + if (displaystyle) node.setAttribute("displaystyle","true"); + if (mathfontfamily != "") node.setAttribute("fontfamily",mathfontfamily); + AMnestingDepth = 0; + node.appendChild(AMparseExpr(str.replace(/^\s+/g,""),false)[0]); + node = AMcreateMmlNode("math",node); + if (showasciiformulaonhover) //fixed by djhsu so newline + node.setAttribute("title",str.replace(/\s+/g," "));//does not show in Gecko + if (mathfontfamily != "" && (isIE || mathfontfamily != "serif")) { + var fnode = AMcreateElementXHTML("font"); + fnode.setAttribute("face",mathfontfamily); + fnode.appendChild(node); + return fnode; + } + return node; +} + +/* + * function AMstrarr2docFrag(arr, linebreaks) { + * var newFrag=document.createDocumentFragment(); + * var expr = false; + * for (var i=0; i1 || mtch) { + * if (checkForMathML) { + * checkForMathML = false; + * var nd = AMisMathMLavailable(); + * AMnoMathML = nd != null; + * if (AMnoMathML && notifyIfNoMathML) + * if (alertIfNoMathML) + * alert("To view the ASCIIMathML notation use Internet Explorer 6 +\nMathPlayer (free from www.dessci.com)\n\ + * or Firefox/Mozilla/Netscape"); + * else AMbody.insertBefore(nd,AMbody.childNodes[0]); + * } + * if (!AMnoMathML) { + * frg = AMstrarr2docFrag(arr,n.nodeType==8); + * var len = frg.childNodes.length; + * n.parentNode.replaceChild(frg,n); + * return len-1; + * } else return 0; + * } + * } + * } else return 0; + * } else if (n.nodeName!="math") { + * for (i=0; i"); + * document.write(""); + * } + * + * // GO1.1 Generic onload by Brothercake + * // http://www.brothercake.com/ + * //onload function (replaces the onload="translate()" in the tag) + * function generic() + * { + * translate(); + * }; + * //setup onload function + * if(typeof window.addEventListener != 'undefined') + * { + * //.. gecko, safari, konqueror and standard + * window.addEventListener('load', generic, false); + * } + * else if(typeof document.addEventListener != 'undefined') + * { + * //.. opera 7 + * document.addEventListener('load', generic, false); + * } + * else if(typeof window.attachEvent != 'undefined') + * { + * //.. win/ie + * window.attachEvent('onload', generic); + * } + * //** remove this condition to degrade older browsers + * else + * { + * //.. mac/ie5 and anything else that gets this far + * //if there's an existing onload function + * if(typeof window.onload == 'function') + * { + * //store it + * var existing = onload; + * //add new onload handler + * window.onload = function() + * { + * //call existing onload function + * existing(); + * //call generic onload function + * generic(); + * }; + * } + * else + * { + * //setup onload function + * window.onload = generic; + * } + * } + */ + +/****************************************************************** + * + * The previous section is ASCIIMathML.js Version 1.4.7 + * (c) Peter Jipsen, used with permission. + * + ******************************************************************/ + +showasciiformulaonhover = false; +mathfontfamily = ""; +mathcolor = ""; + +// +// Remove remapping of mathvariants to plane1 (MathJax handles that) +// Change functions to mi rather than mo (to get spacing right) +// +(function () { + for (var i = 0, m = AMsymbols.length; i < m; i++) { + if (AMsymbols[i].codes) {delete AMsymbols[i].codes} + if (AMsymbols[i].func) {AMsymbols[i].tag = "mi"} + } +})(); + +// +// Add some missing symbols +// +AMsymbols.push( + {input:"gt", tag:"mo", output:">", tex:null, ttype:CONST}, + {input:"gt=", tag:"mo", output:"\u2265", tex:"geq", ttype:CONST}, + {input:"-<=", tag:"mo", output:"\u2AAF", tex:"preceq", ttype:CONST}, + {input:">-=", tag:"mo", output:"\u2AB0", tex:"succeq", ttype:CONST}, + {input:"'", tag:"mo", output:"\u2032", tex:"prime", ttype:CONST}, + {input:"arcsin", tag:"mi", output:"arcsin", tex:null, ttype:UNARY, func:true}, + {input:"arccos", tag:"mi", output:"arccos", tex:null, ttype:UNARY, func:true}, + {input:"arctan", tag:"mi", output:"arctan", tex:null, ttype:UNARY, func:true}, + {input:"coth", tag:"mi", output:"coth", tex:null, ttype:UNARY, func:true}, + {input:"sech", tag:"mi", output:"sech", tex:null, ttype:UNARY, func:true}, + {input:"csch", tag:"mi", output:"csch", tex:null, ttype:UNARY, func:true}, + {input:"abs", tag:"mi", output:"abs", tex:null, ttype:UNARY, func:true}, + {input:"exp", tag:"mi", output:"exp", tex:null, ttype:UNARY, func:true}, + {input:"tilde", tag:"mover", output:"~", tex:null, ttype:UNARY, acc:true} +) + +// +// Access to AsciiMath functions and values +// +ASCIIMATH.Augment({ + AM: { + Init: function () { + displaystyle = ASCIIMATH.config.displaystyle; + decimal = ASCIIMATH.config.decimal; + INITASCIIMATH(); + AMinitSymbols(); + }, + Augment: function (def) { + for (var id in def) {if (def.hasOwnProperty(id)) { + switch (id) { + case "displaystyle": displaystyle = def[id]; break; + case "decimal": decimal = def[id]; break; + case "parseMath": AMparseMath = def[id]; break; + case "parseExpr": AMparseExpr = def[id]; break; + case "parseIexpr": AMparseIexpr = def[id]; break; + case "parseSexpr": AMparseSexpr = def[id]; break; + case "removeBrackets": AMremoveBrackets = def[id]; break; + case "getSymbol": AMgetSymbol = def[id]; break; + case "position": AMposition = def[id]; break; + case "removeCharsAndBlanks": AMremoveCharsAndBlanks = def[id]; break; + case "createMmlNode": AMcreateMmlNode = def[id]; break; + case "createElementMathML": AMcreateElementMathML = def[id]; break; + case "createElementXHTML": AMcreateElementXHTML = def[id]; break; + case "initSymbols": AMinitSymbols = def[id]; break; + case "compareNames": comareNames = def[id]; break; + }; + this[id] = def[id]; + }}; + }, + parseMath: AMparseMath, + parseExpr: AMparseExpr, + parseIexpr: AMparseIexpr, + parseSexr: AMparseSexpr, + removeBrackets: AMremoveBrackets, + getSymbol: AMgetSymbol, + position: AMposition, + removeCharsAndBlanks: AMremoveCharsAndBlanks, + createMmlNode: AMcreateMmlNode, + createElementMathML: AMcreateElementMathML, + createElementXHTML: AMcreateElementXHTML, + initSymbols: AMinitSymbols, + compareNames: compareNames, + + createDocumentFragment: DOCFRAG, + document: document, + + define: newcommand, + symbols: AMsymbols, + names: AMnames, + + TOKEN: { + CONST:CONST, UNARY:UNARY, BINARY:BINARY, INFIX:INFIX, + LEFTBRACKET:LEFTBRACKET, RIGHTBRACKET:RIGHTBRACKET, SPACE:SPACE, + UNDEROVER:UNDEROVER, DEFINITION:DEFINITION, LEFTRIGHT:LEFTRIGHT, TEXT:TEXT + } + } +}); + +// +// Make minimizer think these have been used +var junk = [ + window, navigator //, +// checkForMathML, notifyIfNoMathML, alertIfNoMathML, AMdelimiter1, AMescape1, +// AMdelimiter2, AMescape2, AMdelimiter2regexp, doubleblankmathdelimiter +]; +junk = null; + +})(MathJax.InputJax.AsciiMath); + + +/************************************************************************/ + +(function (ASCIIMATH) { + var MML; + + ASCIIMATH.Augment({ + sourceMenuTitle: "AsciiMath input", + + prefilterHooks: MathJax.Callback.Hooks(true), // hooks to run before processing AsciiMath + postfilterHooks: MathJax.Callback.Hooks(true), // hooks to run after processing AsciiMath + + Translate: function (script) { + var mml, math = script.innerHTML.replace(/^\s+/,"").replace(/\s+$/,""); + var data = {math:math, script:script}; + this.prefilterHooks.Execute(data); math = data.math; + try { + mml = this.AM.parseMath(math); + } catch(err) { + if (!err.asciimathError) {throw err} + mml = this.formatError(err,math); + } + data.math = MML(mml); this.postfilterHooks.Execute(data); + return data.math; + }, + formatError: function (err,math,script) { + var message = err.message.replace(/\n.*/,""); + MathJax.Hub.signal.Post(["AsciiMath Jax - parse error",message,math,script]); + return MML.merror(message); + }, + Error: function (message) { + throw MathJax.Hub.Insert(Error(message),{asciimathError: true}); + }, + // + // Initialize the MML variable and AsciiMath itself + // + Startup: function () { + MML = MathJax.ElementJax.mml; + this.AM.Init(); + } + }); + + ASCIIMATH.loadComplete("jax.js"); + +})(MathJax.InputJax.AsciiMath); + + + From 104cd54d665bdafd6f8f24e7f6a537a22300c758 Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Tue, 17 Jan 2012 10:37:52 -0500 Subject: [PATCH 2/5] Capitalize Show Source menu item for AsciiMath --- jax/input/AsciiMath/jax.js | 2 +- unpacked/jax/input/AsciiMath/jax.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jax/input/AsciiMath/jax.js b/jax/input/AsciiMath/jax.js index 9b23a15ad..c08a4e758 100644 --- a/jax/input/AsciiMath/jax.js +++ b/jax/input/AsciiMath/jax.js @@ -12,5 +12,5 @@ * http://www.apache.org/licenses/LICENSE-2.0 */ -(function(ae){var j;var Z=MathJax.Object.Subclass({firstChild:null,lastChild:null,Init:function(){this.childNodes=[]},appendChild:function(ag){if(ag.parent){ag.parent.removeChild(ag)}if(this.lastChild){this.lastChild.nextSibling=ag}if(!this.firstChild){this.firstChild=ag}this.childNodes.push(ag);ag.parent=this;this.lastChild=ag;return ag},removeChild:function(ai){for(var ah=0,ag=this.childNodes.length;ah=ag-1){this.lastChild=aj}this.childNodes[ai]=aj;aj.nextSibling=ah.nextSibling;ah.nextSibling=ah.parent=null;return ah}});var D=function(){j=MathJax.ElementJax.mml;var ag=j.mbase.prototype.Init;j.mbase.Augment({firstChild:null,lastChild:null,nodeValue:"",nextSibling:null,Init:function(){var ah=ag.apply(this,arguments)||this;ah.childNodes=ah.data;ah.nodeName=ah.type;return ah},appendChild:function(ak){if(ak.parent){ak.parent.removeChild(ak)}var ai=arguments;if(ak.isa(Z)){ai=ak.childNodes}for(var aj=0,ah=ai.length;aj=ah-1){this.lastChild=ak}this.SetData(aj,ak);ak.nextSibling=ai.nextSibling;this.nodeValue="";for(aj=0,ah=this.childNodes.length;aj=",tag:"mo",output:"\u2265",tex:"ge",ttype:d},{input:"geq",tag:"mo",output:"\u2265",tex:null,ttype:d},{input:"-<",tag:"mo",output:"\u227A",tex:"prec",ttype:d},{input:"-lt",tag:"mo",output:"\u227A",tex:null,ttype:d},{input:">-",tag:"mo",output:"\u227B",tex:"succ",ttype:d},{input:"in",tag:"mo",output:"\u2208",tex:null,ttype:d},{input:"!in",tag:"mo",output:"\u2209",tex:"notin",ttype:d},{input:"sub",tag:"mo",output:"\u2282",tex:"subset",ttype:d},{input:"sup",tag:"mo",output:"\u2283",tex:"supset",ttype:d},{input:"sube",tag:"mo",output:"\u2286",tex:"subseteq",ttype:d},{input:"supe",tag:"mo",output:"\u2287",tex:"supseteq",ttype:d},{input:"-=",tag:"mo",output:"\u2261",tex:"equiv",ttype:d},{input:"~=",tag:"mo",output:"\u2245",tex:"cong",ttype:d},{input:"~~",tag:"mo",output:"\u2248",tex:"approx",ttype:d},{input:"prop",tag:"mo",output:"\u221D",tex:"propto",ttype:d},{input:"and",tag:"mtext",output:"and",tex:null,ttype:a},{input:"or",tag:"mtext",output:"or",tex:null,ttype:a},{input:"not",tag:"mo",output:"\u00AC",tex:"neg",ttype:d},{input:"=>",tag:"mo",output:"\u21D2",tex:"implies",ttype:d},{input:"if",tag:"mo",output:"if",tex:null,ttype:a},{input:"<=>",tag:"mo",output:"\u21D4",tex:"iff",ttype:d},{input:"AA",tag:"mo",output:"\u2200",tex:"forall",ttype:d},{input:"EE",tag:"mo",output:"\u2203",tex:"exists",ttype:d},{input:"_|_",tag:"mo",output:"\u22A5",tex:"bot",ttype:d},{input:"TT",tag:"mo",output:"\u22A4",tex:"top",ttype:d},{input:"|--",tag:"mo",output:"\u22A2",tex:"vdash",ttype:d},{input:"|==",tag:"mo",output:"\u22A8",tex:"models",ttype:d},{input:"(",tag:"mo",output:"(",tex:null,ttype:b},{input:")",tag:"mo",output:")",tex:null,ttype:k},{input:"[",tag:"mo",output:"[",tex:null,ttype:b},{input:"]",tag:"mo",output:"]",tex:null,ttype:k},{input:"{",tag:"mo",output:"{",tex:null,ttype:b},{input:"}",tag:"mo",output:"}",tex:null,ttype:k},{input:"|",tag:"mo",output:"|",tex:null,ttype:q},{input:"(:",tag:"mo",output:"\u2329",tex:"langle",ttype:b},{input:":)",tag:"mo",output:"\u232A",tex:"rangle",ttype:k},{input:"<<",tag:"mo",output:"\u2329",tex:null,ttype:b},{input:">>",tag:"mo",output:"\u232A",tex:null,ttype:k},{input:"{:",tag:"mo",output:"{:",tex:null,ttype:b,invisible:true},{input:":}",tag:"mo",output:":}",tex:null,ttype:k,invisible:true},{input:"int",tag:"mo",output:"\u222B",tex:null,ttype:d},{input:"dx",tag:"mi",output:"{:d x:}",tex:null,ttype:Y},{input:"dy",tag:"mi",output:"{:d y:}",tex:null,ttype:Y},{input:"dz",tag:"mi",output:"{:d z:}",tex:null,ttype:Y},{input:"dt",tag:"mi",output:"{:d t:}",tex:null,ttype:Y},{input:"oint",tag:"mo",output:"\u222E",tex:null,ttype:d},{input:"del",tag:"mo",output:"\u2202",tex:"partial",ttype:d},{input:"grad",tag:"mo",output:"\u2207",tex:"nabla",ttype:d},{input:"+-",tag:"mo",output:"\u00B1",tex:"pm",ttype:d},{input:"O/",tag:"mo",output:"\u2205",tex:"emptyset",ttype:d},{input:"oo",tag:"mo",output:"\u221E",tex:"infty",ttype:d},{input:"aleph",tag:"mo",output:"\u2135",tex:null,ttype:d},{input:"...",tag:"mo",output:"...",tex:"ldots",ttype:d},{input:":.",tag:"mo",output:"\u2234",tex:"therefore",ttype:d},{input:"/_",tag:"mo",output:"\u2220",tex:"angle",ttype:d},{input:"\\ ",tag:"mo",output:"\u00A0",tex:null,ttype:d},{input:"quad",tag:"mo",output:"\u00A0\u00A0",tex:null,ttype:d},{input:"qquad",tag:"mo",output:"\u00A0\u00A0\u00A0\u00A0",tex:null,ttype:d},{input:"cdots",tag:"mo",output:"\u22EF",tex:null,ttype:d},{input:"vdots",tag:"mo",output:"\u22EE",tex:null,ttype:d},{input:"ddots",tag:"mo",output:"\u22F1",tex:null,ttype:d},{input:"diamond",tag:"mo",output:"\u22C4",tex:null,ttype:d},{input:"square",tag:"mo",output:"\u25A1",tex:null,ttype:d},{input:"|__",tag:"mo",output:"\u230A",tex:"lfloor",ttype:d},{input:"__|",tag:"mo",output:"\u230B",tex:"rfloor",ttype:d},{input:"|~",tag:"mo",output:"\u2308",tex:"lceiling",ttype:d},{input:"~|",tag:"mo",output:"\u2309",tex:"rceiling",ttype:d},{input:"CC",tag:"mo",output:"\u2102",tex:null,ttype:d},{input:"NN",tag:"mo",output:"\u2115",tex:null,ttype:d},{input:"QQ",tag:"mo",output:"\u211A",tex:null,ttype:d},{input:"RR",tag:"mo",output:"\u211D",tex:null,ttype:d},{input:"ZZ",tag:"mo",output:"\u2124",tex:null,ttype:d},{input:"f",tag:"mi",output:"f",tex:null,ttype:G,func:true},{input:"g",tag:"mi",output:"g",tex:null,ttype:G,func:true},{input:"lim",tag:"mo",output:"lim",tex:null,ttype:O},{input:"Lim",tag:"mo",output:"Lim",tex:null,ttype:O},{input:"sin",tag:"mo",output:"sin",tex:null,ttype:G,func:true},{input:"cos",tag:"mo",output:"cos",tex:null,ttype:G,func:true},{input:"tan",tag:"mo",output:"tan",tex:null,ttype:G,func:true},{input:"sinh",tag:"mo",output:"sinh",tex:null,ttype:G,func:true},{input:"cosh",tag:"mo",output:"cosh",tex:null,ttype:G,func:true},{input:"tanh",tag:"mo",output:"tanh",tex:null,ttype:G,func:true},{input:"cot",tag:"mo",output:"cot",tex:null,ttype:G,func:true},{input:"sec",tag:"mo",output:"sec",tex:null,ttype:G,func:true},{input:"csc",tag:"mo",output:"csc",tex:null,ttype:G,func:true},{input:"log",tag:"mo",output:"log",tex:null,ttype:G,func:true},{input:"ln",tag:"mo",output:"ln",tex:null,ttype:G,func:true},{input:"det",tag:"mo",output:"det",tex:null,ttype:G,func:true},{input:"dim",tag:"mo",output:"dim",tex:null,ttype:d},{input:"mod",tag:"mo",output:"mod",tex:null,ttype:d},{input:"gcd",tag:"mo",output:"gcd",tex:null,ttype:G,func:true},{input:"lcm",tag:"mo",output:"lcm",tex:null,ttype:G,func:true},{input:"lub",tag:"mo",output:"lub",tex:null,ttype:d},{input:"glb",tag:"mo",output:"glb",tex:null,ttype:d},{input:"min",tag:"mo",output:"min",tex:null,ttype:O},{input:"max",tag:"mo",output:"max",tex:null,ttype:O},{input:"uarr",tag:"mo",output:"\u2191",tex:"uparrow",ttype:d},{input:"darr",tag:"mo",output:"\u2193",tex:"downarrow",ttype:d},{input:"rarr",tag:"mo",output:"\u2192",tex:"rightarrow",ttype:d},{input:"->",tag:"mo",output:"\u2192",tex:"to",ttype:d},{input:"|->",tag:"mo",output:"\u21A6",tex:"mapsto",ttype:d},{input:"larr",tag:"mo",output:"\u2190",tex:"leftarrow",ttype:d},{input:"harr",tag:"mo",output:"\u2194",tex:"leftrightarrow",ttype:d},{input:"rArr",tag:"mo",output:"\u21D2",tex:"Rightarrow",ttype:d},{input:"lArr",tag:"mo",output:"\u21D0",tex:"Leftarrow",ttype:d},{input:"hArr",tag:"mo",output:"\u21D4",tex:"Leftrightarrow",ttype:d},i,ad,z,P,n,r,h,{input:"hat",tag:"mover",output:"\u005E",tex:null,ttype:G,acc:true},{input:"bar",tag:"mover",output:"\u00AF",tex:"overline",ttype:G,acc:true},{input:"vec",tag:"mover",output:"\u2192",tex:null,ttype:G,acc:true},{input:"dot",tag:"mover",output:".",tex:null,ttype:G,acc:true},{input:"ddot",tag:"mover",output:"..",tex:null,ttype:G,acc:true},{input:"ul",tag:"munder",output:"\u0332",tex:"underline",ttype:G,acc:true},af,w,o,{input:"bb",tag:"mstyle",atname:"fontweight",atval:"bold",output:"bb",tex:null,ttype:G},{input:"mathbf",tag:"mstyle",atname:"fontweight",atval:"bold",output:"mathbf",tex:null,ttype:G},{input:"sf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"sf",tex:null,ttype:G},{input:"mathsf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"mathsf",tex:null,ttype:G},{input:"bbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"bbb",tex:null,ttype:G,codes:C},{input:"mathbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"mathbb",tex:null,ttype:G,codes:C},{input:"cc",tag:"mstyle",atname:"mathvariant",atval:"script",output:"cc",tex:null,ttype:G,codes:I},{input:"mathcal",tag:"mstyle",atname:"mathvariant",atval:"script",output:"mathcal",tex:null,ttype:G,codes:I},{input:"tt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"tt",tex:null,ttype:G},{input:"mathtt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"mathtt",tex:null,ttype:G},{input:"fr",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"fr",tex:null,ttype:G,codes:M},{input:"mathfrak",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"mathfrak",tex:null,ttype:G,codes:M}];function V(ah,ag){if(ah.input>ag.input){return 1}else{return -1}}var T=[];function u(){var ah=[],ag;for(ag=0;ag>1;if(ah[ag]=T[ag]}x=E;if(ak!=""){E=F[aj].ttype;return F[aj]}E=d;ag=1;ap=am.slice(0,1);var an=true;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}if(ap==f){ap=am.slice(ag,ag+1);if("0"<=ap&&ap<="9"){an=false;ag++;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}}}if((an&&ag>1)||ag>2){ap=am.slice(0,ag-1);ao="mn"}else{ag=2;ap=am.slice(0,1);ao=(("A">ap||ap>"Z")&&("a">ap||ap>"z")?"mo":"mi")}if(ap=="-"&&x==l){return{input:ap,tag:ao,output:ap,ttype:G,func:true}}return{input:ap,tag:ao,output:ap,ttype:d}}function S(ah){var ag;if(ah.nodeName=="mrow"){ag=ah.firstChild.firstChild.nodeValue;if(ag=="("||ag=="["||ag=="{"){ah.removeChild(ah.firstChild)}}if(ah.nodeName=="mrow"){ag=ah.lastChild.firstChild.nodeValue;if(ag==")"||ag=="]"||ag=="}"){ah.removeChild(ah.lastChild)}}}var J,x,E;function K(am){var ai,ah,ap,ak,ao,al=g.createDocumentFragment();am=t(am,0);ai=m(am);if(ai==null||ai.ttype==k&&J>0){return[null,am]}if(ai.ttype==Y){am=ai.output+t(am,ai.input.length);ai=m(am)}switch(ai.ttype){case O:case d:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am];case b:J++;am=t(am,ai.input.length);ap=v(am,true);J--;if(typeof ai.invisible=="boolean"&&ai.invisible){ah=L("mrow",ap[0])}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0])}return[ah,ap[1]];case aa:if(ai!=o){am=t(am,ai.input.length)}if(am.charAt(0)=="{"){ak=am.indexOf("}")}else{if(am.charAt(0)=="("){ak=am.indexOf(")")}else{if(am.charAt(0)=="["){ak=am.indexOf("]")}else{if(ai==o){ak=am.slice(1).indexOf('"')+1}else{ak=0}}}}if(ak==-1){ak=am.length}ao=am.slice(1,ak);if(ao.charAt(0)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}al.appendChild(L(ai.tag,g.createTextNode(ao)));if(ao.charAt(ao.length-1)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}am=t(am,ak+1);return[L("mrow",al),am];case G:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L(ai.tag,g.createTextNode(ai.output)),am]}if(typeof ai.func=="boolean"&&ai.func){ao=am.charAt(0);if(ao=="^"||ao=="_"||ao=="/"||ao=="|"||ao==","){return[L(ai.tag,g.createTextNode(ai.output)),am]}else{ah=L("mrow",L(ai.tag,g.createTextNode(ai.output)));ah.appendChild(ap[0]);return[ah,ap[1]]}}S(ap[0]);if(ai.input=="sqrt"){return[L(ai.tag,ap[0]),ap[1]]}else{if(typeof ai.acc=="boolean"&&ai.acc){ah=L(ai.tag,ap[0]);ah.appendChild(L("mo",g.createTextNode(ai.output)));return[ah,ap[1]]}else{if(!p&&typeof ai.codes!="undefined"){for(ak=0;ak64&&ao.charCodeAt(aj)<91){an=an+String.fromCharCode(ai.codes[ao.charCodeAt(aj)-65])}else{an=an+ao.charAt(aj)}}if(ap[0].nodeName=="mi"){ap[0]=Q("mo").appendChild(g.createTextNode(an))}else{ap[0].replaceChild(Q("mo").appendChild(g.createTextNode(an)),ap[0].childNodes[ak])}}}}ah=L(ai.tag,ap[0]);ah.setAttribute(ai.atname,ai.atval);return[ah,ap[1]]}}case W:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ap[0]);var ag=K(ap[1]);if(ag[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ag[0]);if(ai.input=="root"||ai.input=="stackrel"){al.appendChild(ag[0])}al.appendChild(ap[0]);if(ai.input=="frac"){al.appendChild(ag[0])}return[L(ai.tag,al),ag[1]];case l:am=t(am,ai.input.length);return[L("mo",g.createTextNode(ai.output)),am];case a:am=t(am,ai.input.length);ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);al.appendChild(L(ai.tag,g.createTextNode(ai.output)));ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);return[L("mrow",al),am];case q:J++;am=t(am,ai.input.length);ap=v(am,false);J--;ao="";if(ap[0].lastChild!=null){ao=ap[0].lastChild.firstChild.nodeValue}if(ao=="|"){ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0]);return[ah,ap[1]]}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);return[ah,am]}default:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am]}}function y(am){var ak,an,al,aj,ag,ai;am=t(am,0);an=m(am);ag=K(am);aj=ag[0];am=ag[1];ak=m(am);if(ak.ttype==l&&ak.input!="/"){am=t(am,ak.input.length);ag=K(am);if(ag[0]==null){ag[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ag[0])}am=ag[1];if(ak.input=="_"){al=m(am);ai=(an.ttype==O);if(al.input=="^"){am=t(am,al.input.length);var ah=K(am);S(ah[0]);am=ah[1];aj=L((ai?"munderover":"msubsup"),aj);aj.appendChild(ag[0]);aj.appendChild(ah[0]);aj=L("mrow",aj)}else{aj=L((ai?"munder":"msub"),aj);aj.appendChild(ag[0])}}else{aj=L(ak.tag,aj);aj.appendChild(ag[0])}}return[aj,am]}function v(ao,an){var at,ap,ak,aw,al=g.createDocumentFragment();do{ao=t(ao,0);ak=y(ao);ap=ak[0];ao=ak[1];at=m(ao);if(at.ttype==l&&at.input=="/"){ao=t(ao,at.input.length);ak=y(ao);if(ak[0]==null){ak[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ak[0])}ao=ak[1];S(ap);ap=L(at.tag,ap);ap.appendChild(ak[0]);al.appendChild(ap);at=m(ao)}else{if(ap!=undefined){al.appendChild(ap)}}}while((at.ttype!=k&&(at.ttype!=q||an)||J==0)&&at!=null&&at.output!="");if(at.ttype==k||at.ttype==q){var ax=al.childNodes.length;if(ax>0&&al.childNodes[ax-1].nodeName=="mrow"&&ax>1&&al.childNodes[ax-2].nodeName=="mo"&&al.childNodes[ax-2].firstChild.nodeValue==","){var az=al.childNodes[ax-1].lastChild.firstChild.nodeValue;if(az==")"||az=="]"){var ah=al.childNodes[ax-1].firstChild.firstChild.nodeValue;if(ah=="("&&az==")"&&at.output!="}"||ah=="["&&az=="]"){var ai=[];var au=true;var aq=al.childNodes.length;for(aw=0;au&&aw1){au=ai[aw].length==ai[aw-2].length}}if(au){var aj,ag,am,ar,ay=g.createDocumentFragment();for(aw=0;aw2){al.removeChild(al.firstChild);al.removeChild(al.firstChild)}ay.appendChild(L("mtr",aj))}ap=L("mtable",ay);if(typeof at.invisible=="boolean"&&at.invisible){ap.setAttribute("columnalign","left")}al.replaceChild(ap,al.firstChild)}}}}ao=t(ao,at.input.length);if(typeof at.invisible!="boolean"||!at.invisible){ap=L("mo",g.createTextNode(at.output));al.appendChild(ap)}}return[al,ao]}function e(ai){var ah=Q("mstyle");if(H!=""){ah.setAttribute("mathcolor",H)}if(s){ah.setAttribute("displaystyle","true")}if(ab!=""){ah.setAttribute("fontfamily",ab)}J=0;ah.appendChild(v(ai.replace(/^\s+/g,""),false)[0]);ah=L("math",ah);if(B){ah.setAttribute("title",ai.replace(/\s+/g," "))}if(ab!=""&&(p||ab!="serif")){var ag=U("font");ag.setAttribute("face",ab);ag.appendChild(ah);return ag}return ah}B=false;ab="";H="";(function(){for(var ah=0,ag=F.length;ah",tex:null,ttype:d},{input:"gt=",tag:"mo",output:"\u2265",tex:"geq",ttype:d},{input:"-<=",tag:"mo",output:"\u2AAF",tex:"preceq",ttype:d},{input:">-=",tag:"mo",output:"\u2AB0",tex:"succeq",ttype:d},{input:"'",tag:"mo",output:"\u2032",tex:"prime",ttype:d},{input:"arcsin",tag:"mi",output:"arcsin",tex:null,ttype:G,func:true},{input:"arccos",tag:"mi",output:"arccos",tex:null,ttype:G,func:true},{input:"arctan",tag:"mi",output:"arctan",tex:null,ttype:G,func:true},{input:"coth",tag:"mi",output:"coth",tex:null,ttype:G,func:true},{input:"sech",tag:"mi",output:"sech",tex:null,ttype:G,func:true},{input:"csch",tag:"mi",output:"csch",tex:null,ttype:G,func:true},{input:"abs",tag:"mi",output:"abs",tex:null,ttype:G,func:true},{input:"exp",tag:"mi",output:"exp",tex:null,ttype:G,func:true},{input:"tilde",tag:"mover",output:"~",tex:null,ttype:G,acc:true});ae.Augment({AM:{Init:function(){s=ae.config.displaystyle;decimal=ae.config.decimal;D();u()},Augment:function(ag){for(var ah in ag){if(ag.hasOwnProperty(ah)){switch(ah){case"displaystyle":s=ag[ah];break;case"decimal":decimal=ag[ah];break;case"parseMath":e=ag[ah];break;case"parseExpr":v=ag[ah];break;case"parseIexpr":y=ag[ah];break;case"parseSexpr":K=ag[ah];break;case"removeBrackets":S=ag[ah];break;case"getSymbol":m=ag[ah];break;case"position":c=ag[ah];break;case"removeCharsAndBlanks":t=ag[ah];break;case"createMmlNode":L=ag[ah];break;case"createElementMathML":Q=ag[ah];break;case"createElementXHTML":U=ag[ah];break;case"initSymbols":u=ag[ah];break;case"compareNames":comareNames=ag[ah];break}this[ah]=ag[ah]}}},parseMath:e,parseExpr:v,parseIexpr:y,parseSexr:K,removeBrackets:S,getSymbol:m,position:c,removeCharsAndBlanks:t,createMmlNode:L,createElementMathML:Q,createElementXHTML:U,initSymbols:u,compareNames:V,createDocumentFragment:Z,document:g,define:A,symbols:F,names:T,TOKEN:{CONST:d,UNARY:G,BINARY:W,INFIX:l,LEFTBRACKET:b,RIGHTBRACKET:k,SPACE:a,UNDEROVER:O,DEFINITION:Y,LEFTRIGHT:q,TEXT:aa}}});var ac=[R,N];ac=null})(MathJax.InputJax.AsciiMath);(function(b){var a;b.Augment({sourceMenuTitle:"AsciiMath input",prefilterHooks:MathJax.Callback.Hooks(true),postfilterHooks:MathJax.Callback.Hooks(true),Translate:function(c){var d,f=c.innerHTML.replace(/^\s+/,"").replace(/\s+$/,"");var g={math:f,script:c};this.prefilterHooks.Execute(g);f=g.math;try{d=this.AM.parseMath(f)}catch(e){if(!e.asciimathError){throw e}d=this.formatError(e,f)}g.math=a(d);this.postfilterHooks.Execute(g);return g.math},formatError:function(f,e,c){var d=f.message.replace(/\n.*/,"");MathJax.Hub.signal.Post(["AsciiMath Jax - parse error",d,e,c]);return a.merror(d)},Error:function(c){throw MathJax.Hub.Insert(Error(c),{asciimathError:true})},Startup:function(){a=MathJax.ElementJax.mml;this.AM.Init()}});b.loadComplete("jax.js")})(MathJax.InputJax.AsciiMath); +(function(ae){var j;var Z=MathJax.Object.Subclass({firstChild:null,lastChild:null,Init:function(){this.childNodes=[]},appendChild:function(ag){if(ag.parent){ag.parent.removeChild(ag)}if(this.lastChild){this.lastChild.nextSibling=ag}if(!this.firstChild){this.firstChild=ag}this.childNodes.push(ag);ag.parent=this;this.lastChild=ag;return ag},removeChild:function(ai){for(var ah=0,ag=this.childNodes.length;ah=ag-1){this.lastChild=aj}this.childNodes[ai]=aj;aj.nextSibling=ah.nextSibling;ah.nextSibling=ah.parent=null;return ah}});var D=function(){j=MathJax.ElementJax.mml;var ag=j.mbase.prototype.Init;j.mbase.Augment({firstChild:null,lastChild:null,nodeValue:"",nextSibling:null,Init:function(){var ah=ag.apply(this,arguments)||this;ah.childNodes=ah.data;ah.nodeName=ah.type;return ah},appendChild:function(ak){if(ak.parent){ak.parent.removeChild(ak)}var ai=arguments;if(ak.isa(Z)){ai=ak.childNodes}for(var aj=0,ah=ai.length;aj=ah-1){this.lastChild=ak}this.SetData(aj,ak);ak.nextSibling=ai.nextSibling;this.nodeValue="";for(aj=0,ah=this.childNodes.length;aj=",tag:"mo",output:"\u2265",tex:"ge",ttype:d},{input:"geq",tag:"mo",output:"\u2265",tex:null,ttype:d},{input:"-<",tag:"mo",output:"\u227A",tex:"prec",ttype:d},{input:"-lt",tag:"mo",output:"\u227A",tex:null,ttype:d},{input:">-",tag:"mo",output:"\u227B",tex:"succ",ttype:d},{input:"in",tag:"mo",output:"\u2208",tex:null,ttype:d},{input:"!in",tag:"mo",output:"\u2209",tex:"notin",ttype:d},{input:"sub",tag:"mo",output:"\u2282",tex:"subset",ttype:d},{input:"sup",tag:"mo",output:"\u2283",tex:"supset",ttype:d},{input:"sube",tag:"mo",output:"\u2286",tex:"subseteq",ttype:d},{input:"supe",tag:"mo",output:"\u2287",tex:"supseteq",ttype:d},{input:"-=",tag:"mo",output:"\u2261",tex:"equiv",ttype:d},{input:"~=",tag:"mo",output:"\u2245",tex:"cong",ttype:d},{input:"~~",tag:"mo",output:"\u2248",tex:"approx",ttype:d},{input:"prop",tag:"mo",output:"\u221D",tex:"propto",ttype:d},{input:"and",tag:"mtext",output:"and",tex:null,ttype:a},{input:"or",tag:"mtext",output:"or",tex:null,ttype:a},{input:"not",tag:"mo",output:"\u00AC",tex:"neg",ttype:d},{input:"=>",tag:"mo",output:"\u21D2",tex:"implies",ttype:d},{input:"if",tag:"mo",output:"if",tex:null,ttype:a},{input:"<=>",tag:"mo",output:"\u21D4",tex:"iff",ttype:d},{input:"AA",tag:"mo",output:"\u2200",tex:"forall",ttype:d},{input:"EE",tag:"mo",output:"\u2203",tex:"exists",ttype:d},{input:"_|_",tag:"mo",output:"\u22A5",tex:"bot",ttype:d},{input:"TT",tag:"mo",output:"\u22A4",tex:"top",ttype:d},{input:"|--",tag:"mo",output:"\u22A2",tex:"vdash",ttype:d},{input:"|==",tag:"mo",output:"\u22A8",tex:"models",ttype:d},{input:"(",tag:"mo",output:"(",tex:null,ttype:b},{input:")",tag:"mo",output:")",tex:null,ttype:k},{input:"[",tag:"mo",output:"[",tex:null,ttype:b},{input:"]",tag:"mo",output:"]",tex:null,ttype:k},{input:"{",tag:"mo",output:"{",tex:null,ttype:b},{input:"}",tag:"mo",output:"}",tex:null,ttype:k},{input:"|",tag:"mo",output:"|",tex:null,ttype:q},{input:"(:",tag:"mo",output:"\u2329",tex:"langle",ttype:b},{input:":)",tag:"mo",output:"\u232A",tex:"rangle",ttype:k},{input:"<<",tag:"mo",output:"\u2329",tex:null,ttype:b},{input:">>",tag:"mo",output:"\u232A",tex:null,ttype:k},{input:"{:",tag:"mo",output:"{:",tex:null,ttype:b,invisible:true},{input:":}",tag:"mo",output:":}",tex:null,ttype:k,invisible:true},{input:"int",tag:"mo",output:"\u222B",tex:null,ttype:d},{input:"dx",tag:"mi",output:"{:d x:}",tex:null,ttype:Y},{input:"dy",tag:"mi",output:"{:d y:}",tex:null,ttype:Y},{input:"dz",tag:"mi",output:"{:d z:}",tex:null,ttype:Y},{input:"dt",tag:"mi",output:"{:d t:}",tex:null,ttype:Y},{input:"oint",tag:"mo",output:"\u222E",tex:null,ttype:d},{input:"del",tag:"mo",output:"\u2202",tex:"partial",ttype:d},{input:"grad",tag:"mo",output:"\u2207",tex:"nabla",ttype:d},{input:"+-",tag:"mo",output:"\u00B1",tex:"pm",ttype:d},{input:"O/",tag:"mo",output:"\u2205",tex:"emptyset",ttype:d},{input:"oo",tag:"mo",output:"\u221E",tex:"infty",ttype:d},{input:"aleph",tag:"mo",output:"\u2135",tex:null,ttype:d},{input:"...",tag:"mo",output:"...",tex:"ldots",ttype:d},{input:":.",tag:"mo",output:"\u2234",tex:"therefore",ttype:d},{input:"/_",tag:"mo",output:"\u2220",tex:"angle",ttype:d},{input:"\\ ",tag:"mo",output:"\u00A0",tex:null,ttype:d},{input:"quad",tag:"mo",output:"\u00A0\u00A0",tex:null,ttype:d},{input:"qquad",tag:"mo",output:"\u00A0\u00A0\u00A0\u00A0",tex:null,ttype:d},{input:"cdots",tag:"mo",output:"\u22EF",tex:null,ttype:d},{input:"vdots",tag:"mo",output:"\u22EE",tex:null,ttype:d},{input:"ddots",tag:"mo",output:"\u22F1",tex:null,ttype:d},{input:"diamond",tag:"mo",output:"\u22C4",tex:null,ttype:d},{input:"square",tag:"mo",output:"\u25A1",tex:null,ttype:d},{input:"|__",tag:"mo",output:"\u230A",tex:"lfloor",ttype:d},{input:"__|",tag:"mo",output:"\u230B",tex:"rfloor",ttype:d},{input:"|~",tag:"mo",output:"\u2308",tex:"lceiling",ttype:d},{input:"~|",tag:"mo",output:"\u2309",tex:"rceiling",ttype:d},{input:"CC",tag:"mo",output:"\u2102",tex:null,ttype:d},{input:"NN",tag:"mo",output:"\u2115",tex:null,ttype:d},{input:"QQ",tag:"mo",output:"\u211A",tex:null,ttype:d},{input:"RR",tag:"mo",output:"\u211D",tex:null,ttype:d},{input:"ZZ",tag:"mo",output:"\u2124",tex:null,ttype:d},{input:"f",tag:"mi",output:"f",tex:null,ttype:G,func:true},{input:"g",tag:"mi",output:"g",tex:null,ttype:G,func:true},{input:"lim",tag:"mo",output:"lim",tex:null,ttype:O},{input:"Lim",tag:"mo",output:"Lim",tex:null,ttype:O},{input:"sin",tag:"mo",output:"sin",tex:null,ttype:G,func:true},{input:"cos",tag:"mo",output:"cos",tex:null,ttype:G,func:true},{input:"tan",tag:"mo",output:"tan",tex:null,ttype:G,func:true},{input:"sinh",tag:"mo",output:"sinh",tex:null,ttype:G,func:true},{input:"cosh",tag:"mo",output:"cosh",tex:null,ttype:G,func:true},{input:"tanh",tag:"mo",output:"tanh",tex:null,ttype:G,func:true},{input:"cot",tag:"mo",output:"cot",tex:null,ttype:G,func:true},{input:"sec",tag:"mo",output:"sec",tex:null,ttype:G,func:true},{input:"csc",tag:"mo",output:"csc",tex:null,ttype:G,func:true},{input:"log",tag:"mo",output:"log",tex:null,ttype:G,func:true},{input:"ln",tag:"mo",output:"ln",tex:null,ttype:G,func:true},{input:"det",tag:"mo",output:"det",tex:null,ttype:G,func:true},{input:"dim",tag:"mo",output:"dim",tex:null,ttype:d},{input:"mod",tag:"mo",output:"mod",tex:null,ttype:d},{input:"gcd",tag:"mo",output:"gcd",tex:null,ttype:G,func:true},{input:"lcm",tag:"mo",output:"lcm",tex:null,ttype:G,func:true},{input:"lub",tag:"mo",output:"lub",tex:null,ttype:d},{input:"glb",tag:"mo",output:"glb",tex:null,ttype:d},{input:"min",tag:"mo",output:"min",tex:null,ttype:O},{input:"max",tag:"mo",output:"max",tex:null,ttype:O},{input:"uarr",tag:"mo",output:"\u2191",tex:"uparrow",ttype:d},{input:"darr",tag:"mo",output:"\u2193",tex:"downarrow",ttype:d},{input:"rarr",tag:"mo",output:"\u2192",tex:"rightarrow",ttype:d},{input:"->",tag:"mo",output:"\u2192",tex:"to",ttype:d},{input:"|->",tag:"mo",output:"\u21A6",tex:"mapsto",ttype:d},{input:"larr",tag:"mo",output:"\u2190",tex:"leftarrow",ttype:d},{input:"harr",tag:"mo",output:"\u2194",tex:"leftrightarrow",ttype:d},{input:"rArr",tag:"mo",output:"\u21D2",tex:"Rightarrow",ttype:d},{input:"lArr",tag:"mo",output:"\u21D0",tex:"Leftarrow",ttype:d},{input:"hArr",tag:"mo",output:"\u21D4",tex:"Leftrightarrow",ttype:d},i,ad,z,P,n,r,h,{input:"hat",tag:"mover",output:"\u005E",tex:null,ttype:G,acc:true},{input:"bar",tag:"mover",output:"\u00AF",tex:"overline",ttype:G,acc:true},{input:"vec",tag:"mover",output:"\u2192",tex:null,ttype:G,acc:true},{input:"dot",tag:"mover",output:".",tex:null,ttype:G,acc:true},{input:"ddot",tag:"mover",output:"..",tex:null,ttype:G,acc:true},{input:"ul",tag:"munder",output:"\u0332",tex:"underline",ttype:G,acc:true},af,w,o,{input:"bb",tag:"mstyle",atname:"fontweight",atval:"bold",output:"bb",tex:null,ttype:G},{input:"mathbf",tag:"mstyle",atname:"fontweight",atval:"bold",output:"mathbf",tex:null,ttype:G},{input:"sf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"sf",tex:null,ttype:G},{input:"mathsf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"mathsf",tex:null,ttype:G},{input:"bbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"bbb",tex:null,ttype:G,codes:C},{input:"mathbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"mathbb",tex:null,ttype:G,codes:C},{input:"cc",tag:"mstyle",atname:"mathvariant",atval:"script",output:"cc",tex:null,ttype:G,codes:I},{input:"mathcal",tag:"mstyle",atname:"mathvariant",atval:"script",output:"mathcal",tex:null,ttype:G,codes:I},{input:"tt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"tt",tex:null,ttype:G},{input:"mathtt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"mathtt",tex:null,ttype:G},{input:"fr",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"fr",tex:null,ttype:G,codes:M},{input:"mathfrak",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"mathfrak",tex:null,ttype:G,codes:M}];function V(ah,ag){if(ah.input>ag.input){return 1}else{return -1}}var T=[];function u(){var ah=[],ag;for(ag=0;ag>1;if(ah[ag]=T[ag]}x=E;if(ak!=""){E=F[aj].ttype;return F[aj]}E=d;ag=1;ap=am.slice(0,1);var an=true;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}if(ap==f){ap=am.slice(ag,ag+1);if("0"<=ap&&ap<="9"){an=false;ag++;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}}}if((an&&ag>1)||ag>2){ap=am.slice(0,ag-1);ao="mn"}else{ag=2;ap=am.slice(0,1);ao=(("A">ap||ap>"Z")&&("a">ap||ap>"z")?"mo":"mi")}if(ap=="-"&&x==l){return{input:ap,tag:ao,output:ap,ttype:G,func:true}}return{input:ap,tag:ao,output:ap,ttype:d}}function S(ah){var ag;if(ah.nodeName=="mrow"){ag=ah.firstChild.firstChild.nodeValue;if(ag=="("||ag=="["||ag=="{"){ah.removeChild(ah.firstChild)}}if(ah.nodeName=="mrow"){ag=ah.lastChild.firstChild.nodeValue;if(ag==")"||ag=="]"||ag=="}"){ah.removeChild(ah.lastChild)}}}var J,x,E;function K(am){var ai,ah,ap,ak,ao,al=g.createDocumentFragment();am=t(am,0);ai=m(am);if(ai==null||ai.ttype==k&&J>0){return[null,am]}if(ai.ttype==Y){am=ai.output+t(am,ai.input.length);ai=m(am)}switch(ai.ttype){case O:case d:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am];case b:J++;am=t(am,ai.input.length);ap=v(am,true);J--;if(typeof ai.invisible=="boolean"&&ai.invisible){ah=L("mrow",ap[0])}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0])}return[ah,ap[1]];case aa:if(ai!=o){am=t(am,ai.input.length)}if(am.charAt(0)=="{"){ak=am.indexOf("}")}else{if(am.charAt(0)=="("){ak=am.indexOf(")")}else{if(am.charAt(0)=="["){ak=am.indexOf("]")}else{if(ai==o){ak=am.slice(1).indexOf('"')+1}else{ak=0}}}}if(ak==-1){ak=am.length}ao=am.slice(1,ak);if(ao.charAt(0)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}al.appendChild(L(ai.tag,g.createTextNode(ao)));if(ao.charAt(ao.length-1)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}am=t(am,ak+1);return[L("mrow",al),am];case G:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L(ai.tag,g.createTextNode(ai.output)),am]}if(typeof ai.func=="boolean"&&ai.func){ao=am.charAt(0);if(ao=="^"||ao=="_"||ao=="/"||ao=="|"||ao==","){return[L(ai.tag,g.createTextNode(ai.output)),am]}else{ah=L("mrow",L(ai.tag,g.createTextNode(ai.output)));ah.appendChild(ap[0]);return[ah,ap[1]]}}S(ap[0]);if(ai.input=="sqrt"){return[L(ai.tag,ap[0]),ap[1]]}else{if(typeof ai.acc=="boolean"&&ai.acc){ah=L(ai.tag,ap[0]);ah.appendChild(L("mo",g.createTextNode(ai.output)));return[ah,ap[1]]}else{if(!p&&typeof ai.codes!="undefined"){for(ak=0;ak64&&ao.charCodeAt(aj)<91){an=an+String.fromCharCode(ai.codes[ao.charCodeAt(aj)-65])}else{an=an+ao.charAt(aj)}}if(ap[0].nodeName=="mi"){ap[0]=Q("mo").appendChild(g.createTextNode(an))}else{ap[0].replaceChild(Q("mo").appendChild(g.createTextNode(an)),ap[0].childNodes[ak])}}}}ah=L(ai.tag,ap[0]);ah.setAttribute(ai.atname,ai.atval);return[ah,ap[1]]}}case W:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ap[0]);var ag=K(ap[1]);if(ag[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ag[0]);if(ai.input=="root"||ai.input=="stackrel"){al.appendChild(ag[0])}al.appendChild(ap[0]);if(ai.input=="frac"){al.appendChild(ag[0])}return[L(ai.tag,al),ag[1]];case l:am=t(am,ai.input.length);return[L("mo",g.createTextNode(ai.output)),am];case a:am=t(am,ai.input.length);ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);al.appendChild(L(ai.tag,g.createTextNode(ai.output)));ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);return[L("mrow",al),am];case q:J++;am=t(am,ai.input.length);ap=v(am,false);J--;ao="";if(ap[0].lastChild!=null){ao=ap[0].lastChild.firstChild.nodeValue}if(ao=="|"){ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0]);return[ah,ap[1]]}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);return[ah,am]}default:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am]}}function y(am){var ak,an,al,aj,ag,ai;am=t(am,0);an=m(am);ag=K(am);aj=ag[0];am=ag[1];ak=m(am);if(ak.ttype==l&&ak.input!="/"){am=t(am,ak.input.length);ag=K(am);if(ag[0]==null){ag[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ag[0])}am=ag[1];if(ak.input=="_"){al=m(am);ai=(an.ttype==O);if(al.input=="^"){am=t(am,al.input.length);var ah=K(am);S(ah[0]);am=ah[1];aj=L((ai?"munderover":"msubsup"),aj);aj.appendChild(ag[0]);aj.appendChild(ah[0]);aj=L("mrow",aj)}else{aj=L((ai?"munder":"msub"),aj);aj.appendChild(ag[0])}}else{aj=L(ak.tag,aj);aj.appendChild(ag[0])}}return[aj,am]}function v(ao,an){var at,ap,ak,aw,al=g.createDocumentFragment();do{ao=t(ao,0);ak=y(ao);ap=ak[0];ao=ak[1];at=m(ao);if(at.ttype==l&&at.input=="/"){ao=t(ao,at.input.length);ak=y(ao);if(ak[0]==null){ak[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ak[0])}ao=ak[1];S(ap);ap=L(at.tag,ap);ap.appendChild(ak[0]);al.appendChild(ap);at=m(ao)}else{if(ap!=undefined){al.appendChild(ap)}}}while((at.ttype!=k&&(at.ttype!=q||an)||J==0)&&at!=null&&at.output!="");if(at.ttype==k||at.ttype==q){var ax=al.childNodes.length;if(ax>0&&al.childNodes[ax-1].nodeName=="mrow"&&ax>1&&al.childNodes[ax-2].nodeName=="mo"&&al.childNodes[ax-2].firstChild.nodeValue==","){var az=al.childNodes[ax-1].lastChild.firstChild.nodeValue;if(az==")"||az=="]"){var ah=al.childNodes[ax-1].firstChild.firstChild.nodeValue;if(ah=="("&&az==")"&&at.output!="}"||ah=="["&&az=="]"){var ai=[];var au=true;var aq=al.childNodes.length;for(aw=0;au&&aw1){au=ai[aw].length==ai[aw-2].length}}if(au){var aj,ag,am,ar,ay=g.createDocumentFragment();for(aw=0;aw2){al.removeChild(al.firstChild);al.removeChild(al.firstChild)}ay.appendChild(L("mtr",aj))}ap=L("mtable",ay);if(typeof at.invisible=="boolean"&&at.invisible){ap.setAttribute("columnalign","left")}al.replaceChild(ap,al.firstChild)}}}}ao=t(ao,at.input.length);if(typeof at.invisible!="boolean"||!at.invisible){ap=L("mo",g.createTextNode(at.output));al.appendChild(ap)}}return[al,ao]}function e(ai){var ah=Q("mstyle");if(H!=""){ah.setAttribute("mathcolor",H)}if(s){ah.setAttribute("displaystyle","true")}if(ab!=""){ah.setAttribute("fontfamily",ab)}J=0;ah.appendChild(v(ai.replace(/^\s+/g,""),false)[0]);ah=L("math",ah);if(B){ah.setAttribute("title",ai.replace(/\s+/g," "))}if(ab!=""&&(p||ab!="serif")){var ag=U("font");ag.setAttribute("face",ab);ag.appendChild(ah);return ag}return ah}B=false;ab="";H="";(function(){for(var ah=0,ag=F.length;ah",tex:null,ttype:d},{input:"gt=",tag:"mo",output:"\u2265",tex:"geq",ttype:d},{input:"-<=",tag:"mo",output:"\u2AAF",tex:"preceq",ttype:d},{input:">-=",tag:"mo",output:"\u2AB0",tex:"succeq",ttype:d},{input:"'",tag:"mo",output:"\u2032",tex:"prime",ttype:d},{input:"arcsin",tag:"mi",output:"arcsin",tex:null,ttype:G,func:true},{input:"arccos",tag:"mi",output:"arccos",tex:null,ttype:G,func:true},{input:"arctan",tag:"mi",output:"arctan",tex:null,ttype:G,func:true},{input:"coth",tag:"mi",output:"coth",tex:null,ttype:G,func:true},{input:"sech",tag:"mi",output:"sech",tex:null,ttype:G,func:true},{input:"csch",tag:"mi",output:"csch",tex:null,ttype:G,func:true},{input:"abs",tag:"mi",output:"abs",tex:null,ttype:G,func:true},{input:"exp",tag:"mi",output:"exp",tex:null,ttype:G,func:true},{input:"tilde",tag:"mover",output:"~",tex:null,ttype:G,acc:true});ae.Augment({AM:{Init:function(){s=ae.config.displaystyle;decimal=ae.config.decimal;D();u()},Augment:function(ag){for(var ah in ag){if(ag.hasOwnProperty(ah)){switch(ah){case"displaystyle":s=ag[ah];break;case"decimal":decimal=ag[ah];break;case"parseMath":e=ag[ah];break;case"parseExpr":v=ag[ah];break;case"parseIexpr":y=ag[ah];break;case"parseSexpr":K=ag[ah];break;case"removeBrackets":S=ag[ah];break;case"getSymbol":m=ag[ah];break;case"position":c=ag[ah];break;case"removeCharsAndBlanks":t=ag[ah];break;case"createMmlNode":L=ag[ah];break;case"createElementMathML":Q=ag[ah];break;case"createElementXHTML":U=ag[ah];break;case"initSymbols":u=ag[ah];break;case"compareNames":comareNames=ag[ah];break}this[ah]=ag[ah]}}},parseMath:e,parseExpr:v,parseIexpr:y,parseSexr:K,removeBrackets:S,getSymbol:m,position:c,removeCharsAndBlanks:t,createMmlNode:L,createElementMathML:Q,createElementXHTML:U,initSymbols:u,compareNames:V,createDocumentFragment:Z,document:g,define:A,symbols:F,names:T,TOKEN:{CONST:d,UNARY:G,BINARY:W,INFIX:l,LEFTBRACKET:b,RIGHTBRACKET:k,SPACE:a,UNDEROVER:O,DEFINITION:Y,LEFTRIGHT:q,TEXT:aa}}});var ac=[R,N];ac=null})(MathJax.InputJax.AsciiMath);(function(b){var a;b.Augment({sourceMenuTitle:"AsciiMath Input",prefilterHooks:MathJax.Callback.Hooks(true),postfilterHooks:MathJax.Callback.Hooks(true),Translate:function(c){var d,f=c.innerHTML.replace(/^\s+/,"").replace(/\s+$/,"");var g={math:f,script:c};this.prefilterHooks.Execute(g);f=g.math;try{d=this.AM.parseMath(f)}catch(e){if(!e.asciimathError){throw e}d=this.formatError(e,f)}g.math=a(d);this.postfilterHooks.Execute(g);return g.math},formatError:function(f,e,c){var d=f.message.replace(/\n.*/,"");MathJax.Hub.signal.Post(["AsciiMath Jax - parse error",d,e,c]);return a.merror(d)},Error:function(c){throw MathJax.Hub.Insert(Error(c),{asciimathError:true})},Startup:function(){a=MathJax.ElementJax.mml;this.AM.Init()}});b.loadComplete("jax.js")})(MathJax.InputJax.AsciiMath); diff --git a/unpacked/jax/input/AsciiMath/jax.js b/unpacked/jax/input/AsciiMath/jax.js index 15d7d16d1..8f7bee16d 100644 --- a/unpacked/jax/input/AsciiMath/jax.js +++ b/unpacked/jax/input/AsciiMath/jax.js @@ -1244,7 +1244,7 @@ junk = null; var MML; ASCIIMATH.Augment({ - sourceMenuTitle: "AsciiMath input", + sourceMenuTitle: "AsciiMath Input", prefilterHooks: MathJax.Callback.Hooks(true), // hooks to run before processing AsciiMath postfilterHooks: MathJax.Callback.Hooks(true), // hooks to run after processing AsciiMath From 31f654fd0b32a399035d26849a783d72aca3e03c Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Tue, 17 Jan 2012 10:57:32 -0500 Subject: [PATCH 3/5] Use mathvariant rather than fontfamily or fontweight in AsciiMath output --- jax/input/AsciiMath/jax.js | 2 +- unpacked/jax/input/AsciiMath/jax.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/jax/input/AsciiMath/jax.js b/jax/input/AsciiMath/jax.js index c08a4e758..3ec685664 100644 --- a/jax/input/AsciiMath/jax.js +++ b/jax/input/AsciiMath/jax.js @@ -12,5 +12,5 @@ * http://www.apache.org/licenses/LICENSE-2.0 */ -(function(ae){var j;var Z=MathJax.Object.Subclass({firstChild:null,lastChild:null,Init:function(){this.childNodes=[]},appendChild:function(ag){if(ag.parent){ag.parent.removeChild(ag)}if(this.lastChild){this.lastChild.nextSibling=ag}if(!this.firstChild){this.firstChild=ag}this.childNodes.push(ag);ag.parent=this;this.lastChild=ag;return ag},removeChild:function(ai){for(var ah=0,ag=this.childNodes.length;ah=ag-1){this.lastChild=aj}this.childNodes[ai]=aj;aj.nextSibling=ah.nextSibling;ah.nextSibling=ah.parent=null;return ah}});var D=function(){j=MathJax.ElementJax.mml;var ag=j.mbase.prototype.Init;j.mbase.Augment({firstChild:null,lastChild:null,nodeValue:"",nextSibling:null,Init:function(){var ah=ag.apply(this,arguments)||this;ah.childNodes=ah.data;ah.nodeName=ah.type;return ah},appendChild:function(ak){if(ak.parent){ak.parent.removeChild(ak)}var ai=arguments;if(ak.isa(Z)){ai=ak.childNodes}for(var aj=0,ah=ai.length;aj=ah-1){this.lastChild=ak}this.SetData(aj,ak);ak.nextSibling=ai.nextSibling;this.nodeValue="";for(aj=0,ah=this.childNodes.length;aj=",tag:"mo",output:"\u2265",tex:"ge",ttype:d},{input:"geq",tag:"mo",output:"\u2265",tex:null,ttype:d},{input:"-<",tag:"mo",output:"\u227A",tex:"prec",ttype:d},{input:"-lt",tag:"mo",output:"\u227A",tex:null,ttype:d},{input:">-",tag:"mo",output:"\u227B",tex:"succ",ttype:d},{input:"in",tag:"mo",output:"\u2208",tex:null,ttype:d},{input:"!in",tag:"mo",output:"\u2209",tex:"notin",ttype:d},{input:"sub",tag:"mo",output:"\u2282",tex:"subset",ttype:d},{input:"sup",tag:"mo",output:"\u2283",tex:"supset",ttype:d},{input:"sube",tag:"mo",output:"\u2286",tex:"subseteq",ttype:d},{input:"supe",tag:"mo",output:"\u2287",tex:"supseteq",ttype:d},{input:"-=",tag:"mo",output:"\u2261",tex:"equiv",ttype:d},{input:"~=",tag:"mo",output:"\u2245",tex:"cong",ttype:d},{input:"~~",tag:"mo",output:"\u2248",tex:"approx",ttype:d},{input:"prop",tag:"mo",output:"\u221D",tex:"propto",ttype:d},{input:"and",tag:"mtext",output:"and",tex:null,ttype:a},{input:"or",tag:"mtext",output:"or",tex:null,ttype:a},{input:"not",tag:"mo",output:"\u00AC",tex:"neg",ttype:d},{input:"=>",tag:"mo",output:"\u21D2",tex:"implies",ttype:d},{input:"if",tag:"mo",output:"if",tex:null,ttype:a},{input:"<=>",tag:"mo",output:"\u21D4",tex:"iff",ttype:d},{input:"AA",tag:"mo",output:"\u2200",tex:"forall",ttype:d},{input:"EE",tag:"mo",output:"\u2203",tex:"exists",ttype:d},{input:"_|_",tag:"mo",output:"\u22A5",tex:"bot",ttype:d},{input:"TT",tag:"mo",output:"\u22A4",tex:"top",ttype:d},{input:"|--",tag:"mo",output:"\u22A2",tex:"vdash",ttype:d},{input:"|==",tag:"mo",output:"\u22A8",tex:"models",ttype:d},{input:"(",tag:"mo",output:"(",tex:null,ttype:b},{input:")",tag:"mo",output:")",tex:null,ttype:k},{input:"[",tag:"mo",output:"[",tex:null,ttype:b},{input:"]",tag:"mo",output:"]",tex:null,ttype:k},{input:"{",tag:"mo",output:"{",tex:null,ttype:b},{input:"}",tag:"mo",output:"}",tex:null,ttype:k},{input:"|",tag:"mo",output:"|",tex:null,ttype:q},{input:"(:",tag:"mo",output:"\u2329",tex:"langle",ttype:b},{input:":)",tag:"mo",output:"\u232A",tex:"rangle",ttype:k},{input:"<<",tag:"mo",output:"\u2329",tex:null,ttype:b},{input:">>",tag:"mo",output:"\u232A",tex:null,ttype:k},{input:"{:",tag:"mo",output:"{:",tex:null,ttype:b,invisible:true},{input:":}",tag:"mo",output:":}",tex:null,ttype:k,invisible:true},{input:"int",tag:"mo",output:"\u222B",tex:null,ttype:d},{input:"dx",tag:"mi",output:"{:d x:}",tex:null,ttype:Y},{input:"dy",tag:"mi",output:"{:d y:}",tex:null,ttype:Y},{input:"dz",tag:"mi",output:"{:d z:}",tex:null,ttype:Y},{input:"dt",tag:"mi",output:"{:d t:}",tex:null,ttype:Y},{input:"oint",tag:"mo",output:"\u222E",tex:null,ttype:d},{input:"del",tag:"mo",output:"\u2202",tex:"partial",ttype:d},{input:"grad",tag:"mo",output:"\u2207",tex:"nabla",ttype:d},{input:"+-",tag:"mo",output:"\u00B1",tex:"pm",ttype:d},{input:"O/",tag:"mo",output:"\u2205",tex:"emptyset",ttype:d},{input:"oo",tag:"mo",output:"\u221E",tex:"infty",ttype:d},{input:"aleph",tag:"mo",output:"\u2135",tex:null,ttype:d},{input:"...",tag:"mo",output:"...",tex:"ldots",ttype:d},{input:":.",tag:"mo",output:"\u2234",tex:"therefore",ttype:d},{input:"/_",tag:"mo",output:"\u2220",tex:"angle",ttype:d},{input:"\\ ",tag:"mo",output:"\u00A0",tex:null,ttype:d},{input:"quad",tag:"mo",output:"\u00A0\u00A0",tex:null,ttype:d},{input:"qquad",tag:"mo",output:"\u00A0\u00A0\u00A0\u00A0",tex:null,ttype:d},{input:"cdots",tag:"mo",output:"\u22EF",tex:null,ttype:d},{input:"vdots",tag:"mo",output:"\u22EE",tex:null,ttype:d},{input:"ddots",tag:"mo",output:"\u22F1",tex:null,ttype:d},{input:"diamond",tag:"mo",output:"\u22C4",tex:null,ttype:d},{input:"square",tag:"mo",output:"\u25A1",tex:null,ttype:d},{input:"|__",tag:"mo",output:"\u230A",tex:"lfloor",ttype:d},{input:"__|",tag:"mo",output:"\u230B",tex:"rfloor",ttype:d},{input:"|~",tag:"mo",output:"\u2308",tex:"lceiling",ttype:d},{input:"~|",tag:"mo",output:"\u2309",tex:"rceiling",ttype:d},{input:"CC",tag:"mo",output:"\u2102",tex:null,ttype:d},{input:"NN",tag:"mo",output:"\u2115",tex:null,ttype:d},{input:"QQ",tag:"mo",output:"\u211A",tex:null,ttype:d},{input:"RR",tag:"mo",output:"\u211D",tex:null,ttype:d},{input:"ZZ",tag:"mo",output:"\u2124",tex:null,ttype:d},{input:"f",tag:"mi",output:"f",tex:null,ttype:G,func:true},{input:"g",tag:"mi",output:"g",tex:null,ttype:G,func:true},{input:"lim",tag:"mo",output:"lim",tex:null,ttype:O},{input:"Lim",tag:"mo",output:"Lim",tex:null,ttype:O},{input:"sin",tag:"mo",output:"sin",tex:null,ttype:G,func:true},{input:"cos",tag:"mo",output:"cos",tex:null,ttype:G,func:true},{input:"tan",tag:"mo",output:"tan",tex:null,ttype:G,func:true},{input:"sinh",tag:"mo",output:"sinh",tex:null,ttype:G,func:true},{input:"cosh",tag:"mo",output:"cosh",tex:null,ttype:G,func:true},{input:"tanh",tag:"mo",output:"tanh",tex:null,ttype:G,func:true},{input:"cot",tag:"mo",output:"cot",tex:null,ttype:G,func:true},{input:"sec",tag:"mo",output:"sec",tex:null,ttype:G,func:true},{input:"csc",tag:"mo",output:"csc",tex:null,ttype:G,func:true},{input:"log",tag:"mo",output:"log",tex:null,ttype:G,func:true},{input:"ln",tag:"mo",output:"ln",tex:null,ttype:G,func:true},{input:"det",tag:"mo",output:"det",tex:null,ttype:G,func:true},{input:"dim",tag:"mo",output:"dim",tex:null,ttype:d},{input:"mod",tag:"mo",output:"mod",tex:null,ttype:d},{input:"gcd",tag:"mo",output:"gcd",tex:null,ttype:G,func:true},{input:"lcm",tag:"mo",output:"lcm",tex:null,ttype:G,func:true},{input:"lub",tag:"mo",output:"lub",tex:null,ttype:d},{input:"glb",tag:"mo",output:"glb",tex:null,ttype:d},{input:"min",tag:"mo",output:"min",tex:null,ttype:O},{input:"max",tag:"mo",output:"max",tex:null,ttype:O},{input:"uarr",tag:"mo",output:"\u2191",tex:"uparrow",ttype:d},{input:"darr",tag:"mo",output:"\u2193",tex:"downarrow",ttype:d},{input:"rarr",tag:"mo",output:"\u2192",tex:"rightarrow",ttype:d},{input:"->",tag:"mo",output:"\u2192",tex:"to",ttype:d},{input:"|->",tag:"mo",output:"\u21A6",tex:"mapsto",ttype:d},{input:"larr",tag:"mo",output:"\u2190",tex:"leftarrow",ttype:d},{input:"harr",tag:"mo",output:"\u2194",tex:"leftrightarrow",ttype:d},{input:"rArr",tag:"mo",output:"\u21D2",tex:"Rightarrow",ttype:d},{input:"lArr",tag:"mo",output:"\u21D0",tex:"Leftarrow",ttype:d},{input:"hArr",tag:"mo",output:"\u21D4",tex:"Leftrightarrow",ttype:d},i,ad,z,P,n,r,h,{input:"hat",tag:"mover",output:"\u005E",tex:null,ttype:G,acc:true},{input:"bar",tag:"mover",output:"\u00AF",tex:"overline",ttype:G,acc:true},{input:"vec",tag:"mover",output:"\u2192",tex:null,ttype:G,acc:true},{input:"dot",tag:"mover",output:".",tex:null,ttype:G,acc:true},{input:"ddot",tag:"mover",output:"..",tex:null,ttype:G,acc:true},{input:"ul",tag:"munder",output:"\u0332",tex:"underline",ttype:G,acc:true},af,w,o,{input:"bb",tag:"mstyle",atname:"fontweight",atval:"bold",output:"bb",tex:null,ttype:G},{input:"mathbf",tag:"mstyle",atname:"fontweight",atval:"bold",output:"mathbf",tex:null,ttype:G},{input:"sf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"sf",tex:null,ttype:G},{input:"mathsf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"mathsf",tex:null,ttype:G},{input:"bbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"bbb",tex:null,ttype:G,codes:C},{input:"mathbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"mathbb",tex:null,ttype:G,codes:C},{input:"cc",tag:"mstyle",atname:"mathvariant",atval:"script",output:"cc",tex:null,ttype:G,codes:I},{input:"mathcal",tag:"mstyle",atname:"mathvariant",atval:"script",output:"mathcal",tex:null,ttype:G,codes:I},{input:"tt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"tt",tex:null,ttype:G},{input:"mathtt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"mathtt",tex:null,ttype:G},{input:"fr",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"fr",tex:null,ttype:G,codes:M},{input:"mathfrak",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"mathfrak",tex:null,ttype:G,codes:M}];function V(ah,ag){if(ah.input>ag.input){return 1}else{return -1}}var T=[];function u(){var ah=[],ag;for(ag=0;ag>1;if(ah[ag]=T[ag]}x=E;if(ak!=""){E=F[aj].ttype;return F[aj]}E=d;ag=1;ap=am.slice(0,1);var an=true;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}if(ap==f){ap=am.slice(ag,ag+1);if("0"<=ap&&ap<="9"){an=false;ag++;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}}}if((an&&ag>1)||ag>2){ap=am.slice(0,ag-1);ao="mn"}else{ag=2;ap=am.slice(0,1);ao=(("A">ap||ap>"Z")&&("a">ap||ap>"z")?"mo":"mi")}if(ap=="-"&&x==l){return{input:ap,tag:ao,output:ap,ttype:G,func:true}}return{input:ap,tag:ao,output:ap,ttype:d}}function S(ah){var ag;if(ah.nodeName=="mrow"){ag=ah.firstChild.firstChild.nodeValue;if(ag=="("||ag=="["||ag=="{"){ah.removeChild(ah.firstChild)}}if(ah.nodeName=="mrow"){ag=ah.lastChild.firstChild.nodeValue;if(ag==")"||ag=="]"||ag=="}"){ah.removeChild(ah.lastChild)}}}var J,x,E;function K(am){var ai,ah,ap,ak,ao,al=g.createDocumentFragment();am=t(am,0);ai=m(am);if(ai==null||ai.ttype==k&&J>0){return[null,am]}if(ai.ttype==Y){am=ai.output+t(am,ai.input.length);ai=m(am)}switch(ai.ttype){case O:case d:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am];case b:J++;am=t(am,ai.input.length);ap=v(am,true);J--;if(typeof ai.invisible=="boolean"&&ai.invisible){ah=L("mrow",ap[0])}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0])}return[ah,ap[1]];case aa:if(ai!=o){am=t(am,ai.input.length)}if(am.charAt(0)=="{"){ak=am.indexOf("}")}else{if(am.charAt(0)=="("){ak=am.indexOf(")")}else{if(am.charAt(0)=="["){ak=am.indexOf("]")}else{if(ai==o){ak=am.slice(1).indexOf('"')+1}else{ak=0}}}}if(ak==-1){ak=am.length}ao=am.slice(1,ak);if(ao.charAt(0)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}al.appendChild(L(ai.tag,g.createTextNode(ao)));if(ao.charAt(ao.length-1)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}am=t(am,ak+1);return[L("mrow",al),am];case G:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L(ai.tag,g.createTextNode(ai.output)),am]}if(typeof ai.func=="boolean"&&ai.func){ao=am.charAt(0);if(ao=="^"||ao=="_"||ao=="/"||ao=="|"||ao==","){return[L(ai.tag,g.createTextNode(ai.output)),am]}else{ah=L("mrow",L(ai.tag,g.createTextNode(ai.output)));ah.appendChild(ap[0]);return[ah,ap[1]]}}S(ap[0]);if(ai.input=="sqrt"){return[L(ai.tag,ap[0]),ap[1]]}else{if(typeof ai.acc=="boolean"&&ai.acc){ah=L(ai.tag,ap[0]);ah.appendChild(L("mo",g.createTextNode(ai.output)));return[ah,ap[1]]}else{if(!p&&typeof ai.codes!="undefined"){for(ak=0;ak64&&ao.charCodeAt(aj)<91){an=an+String.fromCharCode(ai.codes[ao.charCodeAt(aj)-65])}else{an=an+ao.charAt(aj)}}if(ap[0].nodeName=="mi"){ap[0]=Q("mo").appendChild(g.createTextNode(an))}else{ap[0].replaceChild(Q("mo").appendChild(g.createTextNode(an)),ap[0].childNodes[ak])}}}}ah=L(ai.tag,ap[0]);ah.setAttribute(ai.atname,ai.atval);return[ah,ap[1]]}}case W:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ap[0]);var ag=K(ap[1]);if(ag[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ag[0]);if(ai.input=="root"||ai.input=="stackrel"){al.appendChild(ag[0])}al.appendChild(ap[0]);if(ai.input=="frac"){al.appendChild(ag[0])}return[L(ai.tag,al),ag[1]];case l:am=t(am,ai.input.length);return[L("mo",g.createTextNode(ai.output)),am];case a:am=t(am,ai.input.length);ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);al.appendChild(L(ai.tag,g.createTextNode(ai.output)));ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);return[L("mrow",al),am];case q:J++;am=t(am,ai.input.length);ap=v(am,false);J--;ao="";if(ap[0].lastChild!=null){ao=ap[0].lastChild.firstChild.nodeValue}if(ao=="|"){ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0]);return[ah,ap[1]]}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);return[ah,am]}default:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am]}}function y(am){var ak,an,al,aj,ag,ai;am=t(am,0);an=m(am);ag=K(am);aj=ag[0];am=ag[1];ak=m(am);if(ak.ttype==l&&ak.input!="/"){am=t(am,ak.input.length);ag=K(am);if(ag[0]==null){ag[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ag[0])}am=ag[1];if(ak.input=="_"){al=m(am);ai=(an.ttype==O);if(al.input=="^"){am=t(am,al.input.length);var ah=K(am);S(ah[0]);am=ah[1];aj=L((ai?"munderover":"msubsup"),aj);aj.appendChild(ag[0]);aj.appendChild(ah[0]);aj=L("mrow",aj)}else{aj=L((ai?"munder":"msub"),aj);aj.appendChild(ag[0])}}else{aj=L(ak.tag,aj);aj.appendChild(ag[0])}}return[aj,am]}function v(ao,an){var at,ap,ak,aw,al=g.createDocumentFragment();do{ao=t(ao,0);ak=y(ao);ap=ak[0];ao=ak[1];at=m(ao);if(at.ttype==l&&at.input=="/"){ao=t(ao,at.input.length);ak=y(ao);if(ak[0]==null){ak[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ak[0])}ao=ak[1];S(ap);ap=L(at.tag,ap);ap.appendChild(ak[0]);al.appendChild(ap);at=m(ao)}else{if(ap!=undefined){al.appendChild(ap)}}}while((at.ttype!=k&&(at.ttype!=q||an)||J==0)&&at!=null&&at.output!="");if(at.ttype==k||at.ttype==q){var ax=al.childNodes.length;if(ax>0&&al.childNodes[ax-1].nodeName=="mrow"&&ax>1&&al.childNodes[ax-2].nodeName=="mo"&&al.childNodes[ax-2].firstChild.nodeValue==","){var az=al.childNodes[ax-1].lastChild.firstChild.nodeValue;if(az==")"||az=="]"){var ah=al.childNodes[ax-1].firstChild.firstChild.nodeValue;if(ah=="("&&az==")"&&at.output!="}"||ah=="["&&az=="]"){var ai=[];var au=true;var aq=al.childNodes.length;for(aw=0;au&&aw1){au=ai[aw].length==ai[aw-2].length}}if(au){var aj,ag,am,ar,ay=g.createDocumentFragment();for(aw=0;aw2){al.removeChild(al.firstChild);al.removeChild(al.firstChild)}ay.appendChild(L("mtr",aj))}ap=L("mtable",ay);if(typeof at.invisible=="boolean"&&at.invisible){ap.setAttribute("columnalign","left")}al.replaceChild(ap,al.firstChild)}}}}ao=t(ao,at.input.length);if(typeof at.invisible!="boolean"||!at.invisible){ap=L("mo",g.createTextNode(at.output));al.appendChild(ap)}}return[al,ao]}function e(ai){var ah=Q("mstyle");if(H!=""){ah.setAttribute("mathcolor",H)}if(s){ah.setAttribute("displaystyle","true")}if(ab!=""){ah.setAttribute("fontfamily",ab)}J=0;ah.appendChild(v(ai.replace(/^\s+/g,""),false)[0]);ah=L("math",ah);if(B){ah.setAttribute("title",ai.replace(/\s+/g," "))}if(ab!=""&&(p||ab!="serif")){var ag=U("font");ag.setAttribute("face",ab);ag.appendChild(ah);return ag}return ah}B=false;ab="";H="";(function(){for(var ah=0,ag=F.length;ah",tex:null,ttype:d},{input:"gt=",tag:"mo",output:"\u2265",tex:"geq",ttype:d},{input:"-<=",tag:"mo",output:"\u2AAF",tex:"preceq",ttype:d},{input:">-=",tag:"mo",output:"\u2AB0",tex:"succeq",ttype:d},{input:"'",tag:"mo",output:"\u2032",tex:"prime",ttype:d},{input:"arcsin",tag:"mi",output:"arcsin",tex:null,ttype:G,func:true},{input:"arccos",tag:"mi",output:"arccos",tex:null,ttype:G,func:true},{input:"arctan",tag:"mi",output:"arctan",tex:null,ttype:G,func:true},{input:"coth",tag:"mi",output:"coth",tex:null,ttype:G,func:true},{input:"sech",tag:"mi",output:"sech",tex:null,ttype:G,func:true},{input:"csch",tag:"mi",output:"csch",tex:null,ttype:G,func:true},{input:"abs",tag:"mi",output:"abs",tex:null,ttype:G,func:true},{input:"exp",tag:"mi",output:"exp",tex:null,ttype:G,func:true},{input:"tilde",tag:"mover",output:"~",tex:null,ttype:G,acc:true});ae.Augment({AM:{Init:function(){s=ae.config.displaystyle;decimal=ae.config.decimal;D();u()},Augment:function(ag){for(var ah in ag){if(ag.hasOwnProperty(ah)){switch(ah){case"displaystyle":s=ag[ah];break;case"decimal":decimal=ag[ah];break;case"parseMath":e=ag[ah];break;case"parseExpr":v=ag[ah];break;case"parseIexpr":y=ag[ah];break;case"parseSexpr":K=ag[ah];break;case"removeBrackets":S=ag[ah];break;case"getSymbol":m=ag[ah];break;case"position":c=ag[ah];break;case"removeCharsAndBlanks":t=ag[ah];break;case"createMmlNode":L=ag[ah];break;case"createElementMathML":Q=ag[ah];break;case"createElementXHTML":U=ag[ah];break;case"initSymbols":u=ag[ah];break;case"compareNames":comareNames=ag[ah];break}this[ah]=ag[ah]}}},parseMath:e,parseExpr:v,parseIexpr:y,parseSexr:K,removeBrackets:S,getSymbol:m,position:c,removeCharsAndBlanks:t,createMmlNode:L,createElementMathML:Q,createElementXHTML:U,initSymbols:u,compareNames:V,createDocumentFragment:Z,document:g,define:A,symbols:F,names:T,TOKEN:{CONST:d,UNARY:G,BINARY:W,INFIX:l,LEFTBRACKET:b,RIGHTBRACKET:k,SPACE:a,UNDEROVER:O,DEFINITION:Y,LEFTRIGHT:q,TEXT:aa}}});var ac=[R,N];ac=null})(MathJax.InputJax.AsciiMath);(function(b){var a;b.Augment({sourceMenuTitle:"AsciiMath Input",prefilterHooks:MathJax.Callback.Hooks(true),postfilterHooks:MathJax.Callback.Hooks(true),Translate:function(c){var d,f=c.innerHTML.replace(/^\s+/,"").replace(/\s+$/,"");var g={math:f,script:c};this.prefilterHooks.Execute(g);f=g.math;try{d=this.AM.parseMath(f)}catch(e){if(!e.asciimathError){throw e}d=this.formatError(e,f)}g.math=a(d);this.postfilterHooks.Execute(g);return g.math},formatError:function(f,e,c){var d=f.message.replace(/\n.*/,"");MathJax.Hub.signal.Post(["AsciiMath Jax - parse error",d,e,c]);return a.merror(d)},Error:function(c){throw MathJax.Hub.Insert(Error(c),{asciimathError:true})},Startup:function(){a=MathJax.ElementJax.mml;this.AM.Init()}});b.loadComplete("jax.js")})(MathJax.InputJax.AsciiMath); +(function(ae){var j;var Z=MathJax.Object.Subclass({firstChild:null,lastChild:null,Init:function(){this.childNodes=[]},appendChild:function(ag){if(ag.parent){ag.parent.removeChild(ag)}if(this.lastChild){this.lastChild.nextSibling=ag}if(!this.firstChild){this.firstChild=ag}this.childNodes.push(ag);ag.parent=this;this.lastChild=ag;return ag},removeChild:function(ai){for(var ah=0,ag=this.childNodes.length;ah=ag-1){this.lastChild=aj}this.childNodes[ai]=aj;aj.nextSibling=ah.nextSibling;ah.nextSibling=ah.parent=null;return ah}});var D=function(){j=MathJax.ElementJax.mml;var ag=j.mbase.prototype.Init;j.mbase.Augment({firstChild:null,lastChild:null,nodeValue:"",nextSibling:null,Init:function(){var ah=ag.apply(this,arguments)||this;ah.childNodes=ah.data;ah.nodeName=ah.type;return ah},appendChild:function(ak){if(ak.parent){ak.parent.removeChild(ak)}var ai=arguments;if(ak.isa(Z)){ai=ak.childNodes}for(var aj=0,ah=ai.length;aj=ah-1){this.lastChild=ak}this.SetData(aj,ak);ak.nextSibling=ai.nextSibling;this.nodeValue="";for(aj=0,ah=this.childNodes.length;aj=",tag:"mo",output:"\u2265",tex:"ge",ttype:d},{input:"geq",tag:"mo",output:"\u2265",tex:null,ttype:d},{input:"-<",tag:"mo",output:"\u227A",tex:"prec",ttype:d},{input:"-lt",tag:"mo",output:"\u227A",tex:null,ttype:d},{input:">-",tag:"mo",output:"\u227B",tex:"succ",ttype:d},{input:"in",tag:"mo",output:"\u2208",tex:null,ttype:d},{input:"!in",tag:"mo",output:"\u2209",tex:"notin",ttype:d},{input:"sub",tag:"mo",output:"\u2282",tex:"subset",ttype:d},{input:"sup",tag:"mo",output:"\u2283",tex:"supset",ttype:d},{input:"sube",tag:"mo",output:"\u2286",tex:"subseteq",ttype:d},{input:"supe",tag:"mo",output:"\u2287",tex:"supseteq",ttype:d},{input:"-=",tag:"mo",output:"\u2261",tex:"equiv",ttype:d},{input:"~=",tag:"mo",output:"\u2245",tex:"cong",ttype:d},{input:"~~",tag:"mo",output:"\u2248",tex:"approx",ttype:d},{input:"prop",tag:"mo",output:"\u221D",tex:"propto",ttype:d},{input:"and",tag:"mtext",output:"and",tex:null,ttype:a},{input:"or",tag:"mtext",output:"or",tex:null,ttype:a},{input:"not",tag:"mo",output:"\u00AC",tex:"neg",ttype:d},{input:"=>",tag:"mo",output:"\u21D2",tex:"implies",ttype:d},{input:"if",tag:"mo",output:"if",tex:null,ttype:a},{input:"<=>",tag:"mo",output:"\u21D4",tex:"iff",ttype:d},{input:"AA",tag:"mo",output:"\u2200",tex:"forall",ttype:d},{input:"EE",tag:"mo",output:"\u2203",tex:"exists",ttype:d},{input:"_|_",tag:"mo",output:"\u22A5",tex:"bot",ttype:d},{input:"TT",tag:"mo",output:"\u22A4",tex:"top",ttype:d},{input:"|--",tag:"mo",output:"\u22A2",tex:"vdash",ttype:d},{input:"|==",tag:"mo",output:"\u22A8",tex:"models",ttype:d},{input:"(",tag:"mo",output:"(",tex:null,ttype:b},{input:")",tag:"mo",output:")",tex:null,ttype:k},{input:"[",tag:"mo",output:"[",tex:null,ttype:b},{input:"]",tag:"mo",output:"]",tex:null,ttype:k},{input:"{",tag:"mo",output:"{",tex:null,ttype:b},{input:"}",tag:"mo",output:"}",tex:null,ttype:k},{input:"|",tag:"mo",output:"|",tex:null,ttype:q},{input:"(:",tag:"mo",output:"\u2329",tex:"langle",ttype:b},{input:":)",tag:"mo",output:"\u232A",tex:"rangle",ttype:k},{input:"<<",tag:"mo",output:"\u2329",tex:null,ttype:b},{input:">>",tag:"mo",output:"\u232A",tex:null,ttype:k},{input:"{:",tag:"mo",output:"{:",tex:null,ttype:b,invisible:true},{input:":}",tag:"mo",output:":}",tex:null,ttype:k,invisible:true},{input:"int",tag:"mo",output:"\u222B",tex:null,ttype:d},{input:"dx",tag:"mi",output:"{:d x:}",tex:null,ttype:Y},{input:"dy",tag:"mi",output:"{:d y:}",tex:null,ttype:Y},{input:"dz",tag:"mi",output:"{:d z:}",tex:null,ttype:Y},{input:"dt",tag:"mi",output:"{:d t:}",tex:null,ttype:Y},{input:"oint",tag:"mo",output:"\u222E",tex:null,ttype:d},{input:"del",tag:"mo",output:"\u2202",tex:"partial",ttype:d},{input:"grad",tag:"mo",output:"\u2207",tex:"nabla",ttype:d},{input:"+-",tag:"mo",output:"\u00B1",tex:"pm",ttype:d},{input:"O/",tag:"mo",output:"\u2205",tex:"emptyset",ttype:d},{input:"oo",tag:"mo",output:"\u221E",tex:"infty",ttype:d},{input:"aleph",tag:"mo",output:"\u2135",tex:null,ttype:d},{input:"...",tag:"mo",output:"...",tex:"ldots",ttype:d},{input:":.",tag:"mo",output:"\u2234",tex:"therefore",ttype:d},{input:"/_",tag:"mo",output:"\u2220",tex:"angle",ttype:d},{input:"\\ ",tag:"mo",output:"\u00A0",tex:null,ttype:d},{input:"quad",tag:"mo",output:"\u00A0\u00A0",tex:null,ttype:d},{input:"qquad",tag:"mo",output:"\u00A0\u00A0\u00A0\u00A0",tex:null,ttype:d},{input:"cdots",tag:"mo",output:"\u22EF",tex:null,ttype:d},{input:"vdots",tag:"mo",output:"\u22EE",tex:null,ttype:d},{input:"ddots",tag:"mo",output:"\u22F1",tex:null,ttype:d},{input:"diamond",tag:"mo",output:"\u22C4",tex:null,ttype:d},{input:"square",tag:"mo",output:"\u25A1",tex:null,ttype:d},{input:"|__",tag:"mo",output:"\u230A",tex:"lfloor",ttype:d},{input:"__|",tag:"mo",output:"\u230B",tex:"rfloor",ttype:d},{input:"|~",tag:"mo",output:"\u2308",tex:"lceiling",ttype:d},{input:"~|",tag:"mo",output:"\u2309",tex:"rceiling",ttype:d},{input:"CC",tag:"mo",output:"\u2102",tex:null,ttype:d},{input:"NN",tag:"mo",output:"\u2115",tex:null,ttype:d},{input:"QQ",tag:"mo",output:"\u211A",tex:null,ttype:d},{input:"RR",tag:"mo",output:"\u211D",tex:null,ttype:d},{input:"ZZ",tag:"mo",output:"\u2124",tex:null,ttype:d},{input:"f",tag:"mi",output:"f",tex:null,ttype:G,func:true},{input:"g",tag:"mi",output:"g",tex:null,ttype:G,func:true},{input:"lim",tag:"mo",output:"lim",tex:null,ttype:O},{input:"Lim",tag:"mo",output:"Lim",tex:null,ttype:O},{input:"sin",tag:"mo",output:"sin",tex:null,ttype:G,func:true},{input:"cos",tag:"mo",output:"cos",tex:null,ttype:G,func:true},{input:"tan",tag:"mo",output:"tan",tex:null,ttype:G,func:true},{input:"sinh",tag:"mo",output:"sinh",tex:null,ttype:G,func:true},{input:"cosh",tag:"mo",output:"cosh",tex:null,ttype:G,func:true},{input:"tanh",tag:"mo",output:"tanh",tex:null,ttype:G,func:true},{input:"cot",tag:"mo",output:"cot",tex:null,ttype:G,func:true},{input:"sec",tag:"mo",output:"sec",tex:null,ttype:G,func:true},{input:"csc",tag:"mo",output:"csc",tex:null,ttype:G,func:true},{input:"log",tag:"mo",output:"log",tex:null,ttype:G,func:true},{input:"ln",tag:"mo",output:"ln",tex:null,ttype:G,func:true},{input:"det",tag:"mo",output:"det",tex:null,ttype:G,func:true},{input:"dim",tag:"mo",output:"dim",tex:null,ttype:d},{input:"mod",tag:"mo",output:"mod",tex:null,ttype:d},{input:"gcd",tag:"mo",output:"gcd",tex:null,ttype:G,func:true},{input:"lcm",tag:"mo",output:"lcm",tex:null,ttype:G,func:true},{input:"lub",tag:"mo",output:"lub",tex:null,ttype:d},{input:"glb",tag:"mo",output:"glb",tex:null,ttype:d},{input:"min",tag:"mo",output:"min",tex:null,ttype:O},{input:"max",tag:"mo",output:"max",tex:null,ttype:O},{input:"uarr",tag:"mo",output:"\u2191",tex:"uparrow",ttype:d},{input:"darr",tag:"mo",output:"\u2193",tex:"downarrow",ttype:d},{input:"rarr",tag:"mo",output:"\u2192",tex:"rightarrow",ttype:d},{input:"->",tag:"mo",output:"\u2192",tex:"to",ttype:d},{input:"|->",tag:"mo",output:"\u21A6",tex:"mapsto",ttype:d},{input:"larr",tag:"mo",output:"\u2190",tex:"leftarrow",ttype:d},{input:"harr",tag:"mo",output:"\u2194",tex:"leftrightarrow",ttype:d},{input:"rArr",tag:"mo",output:"\u21D2",tex:"Rightarrow",ttype:d},{input:"lArr",tag:"mo",output:"\u21D0",tex:"Leftarrow",ttype:d},{input:"hArr",tag:"mo",output:"\u21D4",tex:"Leftrightarrow",ttype:d},i,ad,z,P,n,r,h,{input:"hat",tag:"mover",output:"\u005E",tex:null,ttype:G,acc:true},{input:"bar",tag:"mover",output:"\u00AF",tex:"overline",ttype:G,acc:true},{input:"vec",tag:"mover",output:"\u2192",tex:null,ttype:G,acc:true},{input:"dot",tag:"mover",output:".",tex:null,ttype:G,acc:true},{input:"ddot",tag:"mover",output:"..",tex:null,ttype:G,acc:true},{input:"ul",tag:"munder",output:"\u0332",tex:"underline",ttype:G,acc:true},af,w,o,{input:"bb",tag:"mstyle",atname:"fontweight",atval:"bold",output:"bb",tex:null,ttype:G},{input:"mathbf",tag:"mstyle",atname:"fontweight",atval:"bold",output:"mathbf",tex:null,ttype:G},{input:"sf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"sf",tex:null,ttype:G},{input:"mathsf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"mathsf",tex:null,ttype:G},{input:"bbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"bbb",tex:null,ttype:G,codes:C},{input:"mathbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"mathbb",tex:null,ttype:G,codes:C},{input:"cc",tag:"mstyle",atname:"mathvariant",atval:"script",output:"cc",tex:null,ttype:G,codes:I},{input:"mathcal",tag:"mstyle",atname:"mathvariant",atval:"script",output:"mathcal",tex:null,ttype:G,codes:I},{input:"tt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"tt",tex:null,ttype:G},{input:"mathtt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"mathtt",tex:null,ttype:G},{input:"fr",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"fr",tex:null,ttype:G,codes:M},{input:"mathfrak",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"mathfrak",tex:null,ttype:G,codes:M}];function V(ah,ag){if(ah.input>ag.input){return 1}else{return -1}}var T=[];function u(){var ah=[],ag;for(ag=0;ag>1;if(ah[ag]=T[ag]}x=E;if(ak!=""){E=F[aj].ttype;return F[aj]}E=d;ag=1;ap=am.slice(0,1);var an=true;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}if(ap==f){ap=am.slice(ag,ag+1);if("0"<=ap&&ap<="9"){an=false;ag++;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}}}if((an&&ag>1)||ag>2){ap=am.slice(0,ag-1);ao="mn"}else{ag=2;ap=am.slice(0,1);ao=(("A">ap||ap>"Z")&&("a">ap||ap>"z")?"mo":"mi")}if(ap=="-"&&x==l){return{input:ap,tag:ao,output:ap,ttype:G,func:true}}return{input:ap,tag:ao,output:ap,ttype:d}}function S(ah){var ag;if(ah.nodeName=="mrow"){ag=ah.firstChild.firstChild.nodeValue;if(ag=="("||ag=="["||ag=="{"){ah.removeChild(ah.firstChild)}}if(ah.nodeName=="mrow"){ag=ah.lastChild.firstChild.nodeValue;if(ag==")"||ag=="]"||ag=="}"){ah.removeChild(ah.lastChild)}}}var J,x,E;function K(am){var ai,ah,ap,ak,ao,al=g.createDocumentFragment();am=t(am,0);ai=m(am);if(ai==null||ai.ttype==k&&J>0){return[null,am]}if(ai.ttype==Y){am=ai.output+t(am,ai.input.length);ai=m(am)}switch(ai.ttype){case O:case d:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am];case b:J++;am=t(am,ai.input.length);ap=v(am,true);J--;if(typeof ai.invisible=="boolean"&&ai.invisible){ah=L("mrow",ap[0])}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0])}return[ah,ap[1]];case aa:if(ai!=o){am=t(am,ai.input.length)}if(am.charAt(0)=="{"){ak=am.indexOf("}")}else{if(am.charAt(0)=="("){ak=am.indexOf(")")}else{if(am.charAt(0)=="["){ak=am.indexOf("]")}else{if(ai==o){ak=am.slice(1).indexOf('"')+1}else{ak=0}}}}if(ak==-1){ak=am.length}ao=am.slice(1,ak);if(ao.charAt(0)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}al.appendChild(L(ai.tag,g.createTextNode(ao)));if(ao.charAt(ao.length-1)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}am=t(am,ak+1);return[L("mrow",al),am];case G:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L(ai.tag,g.createTextNode(ai.output)),am]}if(typeof ai.func=="boolean"&&ai.func){ao=am.charAt(0);if(ao=="^"||ao=="_"||ao=="/"||ao=="|"||ao==","){return[L(ai.tag,g.createTextNode(ai.output)),am]}else{ah=L("mrow",L(ai.tag,g.createTextNode(ai.output)));ah.appendChild(ap[0]);return[ah,ap[1]]}}S(ap[0]);if(ai.input=="sqrt"){return[L(ai.tag,ap[0]),ap[1]]}else{if(typeof ai.acc=="boolean"&&ai.acc){ah=L(ai.tag,ap[0]);ah.appendChild(L("mo",g.createTextNode(ai.output)));return[ah,ap[1]]}else{if(!p&&typeof ai.codes!="undefined"){for(ak=0;ak64&&ao.charCodeAt(aj)<91){an=an+String.fromCharCode(ai.codes[ao.charCodeAt(aj)-65])}else{an=an+ao.charAt(aj)}}if(ap[0].nodeName=="mi"){ap[0]=Q("mo").appendChild(g.createTextNode(an))}else{ap[0].replaceChild(Q("mo").appendChild(g.createTextNode(an)),ap[0].childNodes[ak])}}}}ah=L(ai.tag,ap[0]);ah.setAttribute(ai.atname,ai.atval);return[ah,ap[1]]}}case W:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ap[0]);var ag=K(ap[1]);if(ag[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ag[0]);if(ai.input=="root"||ai.input=="stackrel"){al.appendChild(ag[0])}al.appendChild(ap[0]);if(ai.input=="frac"){al.appendChild(ag[0])}return[L(ai.tag,al),ag[1]];case l:am=t(am,ai.input.length);return[L("mo",g.createTextNode(ai.output)),am];case a:am=t(am,ai.input.length);ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);al.appendChild(L(ai.tag,g.createTextNode(ai.output)));ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);return[L("mrow",al),am];case q:J++;am=t(am,ai.input.length);ap=v(am,false);J--;ao="";if(ap[0].lastChild!=null){ao=ap[0].lastChild.firstChild.nodeValue}if(ao=="|"){ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0]);return[ah,ap[1]]}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);return[ah,am]}default:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am]}}function y(am){var ak,an,al,aj,ag,ai;am=t(am,0);an=m(am);ag=K(am);aj=ag[0];am=ag[1];ak=m(am);if(ak.ttype==l&&ak.input!="/"){am=t(am,ak.input.length);ag=K(am);if(ag[0]==null){ag[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ag[0])}am=ag[1];if(ak.input=="_"){al=m(am);ai=(an.ttype==O);if(al.input=="^"){am=t(am,al.input.length);var ah=K(am);S(ah[0]);am=ah[1];aj=L((ai?"munderover":"msubsup"),aj);aj.appendChild(ag[0]);aj.appendChild(ah[0]);aj=L("mrow",aj)}else{aj=L((ai?"munder":"msub"),aj);aj.appendChild(ag[0])}}else{aj=L(ak.tag,aj);aj.appendChild(ag[0])}}return[aj,am]}function v(ao,an){var at,ap,ak,aw,al=g.createDocumentFragment();do{ao=t(ao,0);ak=y(ao);ap=ak[0];ao=ak[1];at=m(ao);if(at.ttype==l&&at.input=="/"){ao=t(ao,at.input.length);ak=y(ao);if(ak[0]==null){ak[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ak[0])}ao=ak[1];S(ap);ap=L(at.tag,ap);ap.appendChild(ak[0]);al.appendChild(ap);at=m(ao)}else{if(ap!=undefined){al.appendChild(ap)}}}while((at.ttype!=k&&(at.ttype!=q||an)||J==0)&&at!=null&&at.output!="");if(at.ttype==k||at.ttype==q){var ax=al.childNodes.length;if(ax>0&&al.childNodes[ax-1].nodeName=="mrow"&&ax>1&&al.childNodes[ax-2].nodeName=="mo"&&al.childNodes[ax-2].firstChild.nodeValue==","){var az=al.childNodes[ax-1].lastChild.firstChild.nodeValue;if(az==")"||az=="]"){var ah=al.childNodes[ax-1].firstChild.firstChild.nodeValue;if(ah=="("&&az==")"&&at.output!="}"||ah=="["&&az=="]"){var ai=[];var au=true;var aq=al.childNodes.length;for(aw=0;au&&aw1){au=ai[aw].length==ai[aw-2].length}}if(au){var aj,ag,am,ar,ay=g.createDocumentFragment();for(aw=0;aw2){al.removeChild(al.firstChild);al.removeChild(al.firstChild)}ay.appendChild(L("mtr",aj))}ap=L("mtable",ay);if(typeof at.invisible=="boolean"&&at.invisible){ap.setAttribute("columnalign","left")}al.replaceChild(ap,al.firstChild)}}}}ao=t(ao,at.input.length);if(typeof at.invisible!="boolean"||!at.invisible){ap=L("mo",g.createTextNode(at.output));al.appendChild(ap)}}return[al,ao]}function e(ai){var ah=Q("mstyle");if(H!=""){ah.setAttribute("mathcolor",H)}if(s){ah.setAttribute("displaystyle","true")}if(ab!=""){ah.setAttribute("fontfamily",ab)}J=0;ah.appendChild(v(ai.replace(/^\s+/g,""),false)[0]);ah=L("math",ah);if(B){ah.setAttribute("title",ai.replace(/\s+/g," "))}if(ab!=""&&(p||ab!="serif")){var ag=U("font");ag.setAttribute("face",ab);ag.appendChild(ah);return ag}return ah}B=false;ab="";H="";(function(){for(var ah=0,ag=F.length;ah",tex:null,ttype:d},{input:"gt=",tag:"mo",output:"\u2265",tex:"geq",ttype:d},{input:"-<=",tag:"mo",output:"\u2AAF",tex:"preceq",ttype:d},{input:">-=",tag:"mo",output:"\u2AB0",tex:"succeq",ttype:d},{input:"'",tag:"mo",output:"\u2032",tex:"prime",ttype:d},{input:"arcsin",tag:"mi",output:"arcsin",tex:null,ttype:G,func:true},{input:"arccos",tag:"mi",output:"arccos",tex:null,ttype:G,func:true},{input:"arctan",tag:"mi",output:"arctan",tex:null,ttype:G,func:true},{input:"coth",tag:"mi",output:"coth",tex:null,ttype:G,func:true},{input:"sech",tag:"mi",output:"sech",tex:null,ttype:G,func:true},{input:"csch",tag:"mi",output:"csch",tex:null,ttype:G,func:true},{input:"abs",tag:"mi",output:"abs",tex:null,ttype:G,func:true},{input:"exp",tag:"mi",output:"exp",tex:null,ttype:G,func:true},{input:"tilde",tag:"mover",output:"~",tex:null,ttype:G,acc:true});ae.Augment({AM:{Init:function(){s=ae.config.displaystyle;decimal=ae.config.decimal;D();u()},Augment:function(ag){for(var ah in ag){if(ag.hasOwnProperty(ah)){switch(ah){case"displaystyle":s=ag[ah];break;case"decimal":decimal=ag[ah];break;case"parseMath":e=ag[ah];break;case"parseExpr":v=ag[ah];break;case"parseIexpr":y=ag[ah];break;case"parseSexpr":K=ag[ah];break;case"removeBrackets":S=ag[ah];break;case"getSymbol":m=ag[ah];break;case"position":c=ag[ah];break;case"removeCharsAndBlanks":t=ag[ah];break;case"createMmlNode":L=ag[ah];break;case"createElementMathML":Q=ag[ah];break;case"createElementXHTML":U=ag[ah];break;case"initSymbols":u=ag[ah];break;case"compareNames":comareNames=ag[ah];break}this[ah]=ag[ah]}}},parseMath:e,parseExpr:v,parseIexpr:y,parseSexr:K,removeBrackets:S,getSymbol:m,position:c,removeCharsAndBlanks:t,createMmlNode:L,createElementMathML:Q,createElementXHTML:U,initSymbols:u,compareNames:V,createDocumentFragment:Z,document:g,define:A,symbols:F,names:T,TOKEN:{CONST:d,UNARY:G,BINARY:W,INFIX:l,LEFTBRACKET:b,RIGHTBRACKET:k,SPACE:a,UNDEROVER:O,DEFINITION:Y,LEFTRIGHT:q,TEXT:aa}}});var ac=[R,N];ac=null})(MathJax.InputJax.AsciiMath);(function(b){var a;b.Augment({sourceMenuTitle:"AsciiMath Input",prefilterHooks:MathJax.Callback.Hooks(true),postfilterHooks:MathJax.Callback.Hooks(true),Translate:function(c){var d,f=c.innerHTML.replace(/^\s+/,"").replace(/\s+$/,"");var g={math:f,script:c};this.prefilterHooks.Execute(g);f=g.math;try{d=this.AM.parseMath(f)}catch(e){if(!e.asciimathError){throw e}d=this.formatError(e,f)}g.math=a(d);this.postfilterHooks.Execute(g);return g.math},formatError:function(f,e,c){var d=f.message.replace(/\n.*/,"");MathJax.Hub.signal.Post(["AsciiMath Jax - parse error",d,e,c]);return a.merror(d)},Error:function(c){throw MathJax.Hub.Insert(Error(c),{asciimathError:true})},Startup:function(){a=MathJax.ElementJax.mml;this.AM.Init()}});b.loadComplete("jax.js")})(MathJax.InputJax.AsciiMath); diff --git a/unpacked/jax/input/AsciiMath/jax.js b/unpacked/jax/input/AsciiMath/jax.js index 8f7bee16d..0f5cb7e54 100644 --- a/unpacked/jax/input/AsciiMath/jax.js +++ b/unpacked/jax/input/AsciiMath/jax.js @@ -1141,6 +1141,8 @@ mathcolor = ""; for (var i = 0, m = AMsymbols.length; i < m; i++) { if (AMsymbols[i].codes) {delete AMsymbols[i].codes} if (AMsymbols[i].func) {AMsymbols[i].tag = "mi"} + if (AMsymbols[i].atname === "fontfamily" || AMsymbols[i].atname === "fontweight") + {AMsymbols[i].atname = "mathvariant"} } })(); From 61abf6c9a605079d55c0781735b0263d65474770 Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Tue, 17 Jan 2012 11:21:58 -0500 Subject: [PATCH 4/5] Fix problem with appendChild when appending a fragment (the fragment needs to be cleared) --- jax/input/AsciiMath/jax.js | 2 +- unpacked/jax/input/AsciiMath/jax.js | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/jax/input/AsciiMath/jax.js b/jax/input/AsciiMath/jax.js index 3ec685664..21e0b0af1 100644 --- a/jax/input/AsciiMath/jax.js +++ b/jax/input/AsciiMath/jax.js @@ -12,5 +12,5 @@ * http://www.apache.org/licenses/LICENSE-2.0 */ -(function(ae){var j;var Z=MathJax.Object.Subclass({firstChild:null,lastChild:null,Init:function(){this.childNodes=[]},appendChild:function(ag){if(ag.parent){ag.parent.removeChild(ag)}if(this.lastChild){this.lastChild.nextSibling=ag}if(!this.firstChild){this.firstChild=ag}this.childNodes.push(ag);ag.parent=this;this.lastChild=ag;return ag},removeChild:function(ai){for(var ah=0,ag=this.childNodes.length;ah=ag-1){this.lastChild=aj}this.childNodes[ai]=aj;aj.nextSibling=ah.nextSibling;ah.nextSibling=ah.parent=null;return ah}});var D=function(){j=MathJax.ElementJax.mml;var ag=j.mbase.prototype.Init;j.mbase.Augment({firstChild:null,lastChild:null,nodeValue:"",nextSibling:null,Init:function(){var ah=ag.apply(this,arguments)||this;ah.childNodes=ah.data;ah.nodeName=ah.type;return ah},appendChild:function(ak){if(ak.parent){ak.parent.removeChild(ak)}var ai=arguments;if(ak.isa(Z)){ai=ak.childNodes}for(var aj=0,ah=ai.length;aj=ah-1){this.lastChild=ak}this.SetData(aj,ak);ak.nextSibling=ai.nextSibling;this.nodeValue="";for(aj=0,ah=this.childNodes.length;aj=",tag:"mo",output:"\u2265",tex:"ge",ttype:d},{input:"geq",tag:"mo",output:"\u2265",tex:null,ttype:d},{input:"-<",tag:"mo",output:"\u227A",tex:"prec",ttype:d},{input:"-lt",tag:"mo",output:"\u227A",tex:null,ttype:d},{input:">-",tag:"mo",output:"\u227B",tex:"succ",ttype:d},{input:"in",tag:"mo",output:"\u2208",tex:null,ttype:d},{input:"!in",tag:"mo",output:"\u2209",tex:"notin",ttype:d},{input:"sub",tag:"mo",output:"\u2282",tex:"subset",ttype:d},{input:"sup",tag:"mo",output:"\u2283",tex:"supset",ttype:d},{input:"sube",tag:"mo",output:"\u2286",tex:"subseteq",ttype:d},{input:"supe",tag:"mo",output:"\u2287",tex:"supseteq",ttype:d},{input:"-=",tag:"mo",output:"\u2261",tex:"equiv",ttype:d},{input:"~=",tag:"mo",output:"\u2245",tex:"cong",ttype:d},{input:"~~",tag:"mo",output:"\u2248",tex:"approx",ttype:d},{input:"prop",tag:"mo",output:"\u221D",tex:"propto",ttype:d},{input:"and",tag:"mtext",output:"and",tex:null,ttype:a},{input:"or",tag:"mtext",output:"or",tex:null,ttype:a},{input:"not",tag:"mo",output:"\u00AC",tex:"neg",ttype:d},{input:"=>",tag:"mo",output:"\u21D2",tex:"implies",ttype:d},{input:"if",tag:"mo",output:"if",tex:null,ttype:a},{input:"<=>",tag:"mo",output:"\u21D4",tex:"iff",ttype:d},{input:"AA",tag:"mo",output:"\u2200",tex:"forall",ttype:d},{input:"EE",tag:"mo",output:"\u2203",tex:"exists",ttype:d},{input:"_|_",tag:"mo",output:"\u22A5",tex:"bot",ttype:d},{input:"TT",tag:"mo",output:"\u22A4",tex:"top",ttype:d},{input:"|--",tag:"mo",output:"\u22A2",tex:"vdash",ttype:d},{input:"|==",tag:"mo",output:"\u22A8",tex:"models",ttype:d},{input:"(",tag:"mo",output:"(",tex:null,ttype:b},{input:")",tag:"mo",output:")",tex:null,ttype:k},{input:"[",tag:"mo",output:"[",tex:null,ttype:b},{input:"]",tag:"mo",output:"]",tex:null,ttype:k},{input:"{",tag:"mo",output:"{",tex:null,ttype:b},{input:"}",tag:"mo",output:"}",tex:null,ttype:k},{input:"|",tag:"mo",output:"|",tex:null,ttype:q},{input:"(:",tag:"mo",output:"\u2329",tex:"langle",ttype:b},{input:":)",tag:"mo",output:"\u232A",tex:"rangle",ttype:k},{input:"<<",tag:"mo",output:"\u2329",tex:null,ttype:b},{input:">>",tag:"mo",output:"\u232A",tex:null,ttype:k},{input:"{:",tag:"mo",output:"{:",tex:null,ttype:b,invisible:true},{input:":}",tag:"mo",output:":}",tex:null,ttype:k,invisible:true},{input:"int",tag:"mo",output:"\u222B",tex:null,ttype:d},{input:"dx",tag:"mi",output:"{:d x:}",tex:null,ttype:Y},{input:"dy",tag:"mi",output:"{:d y:}",tex:null,ttype:Y},{input:"dz",tag:"mi",output:"{:d z:}",tex:null,ttype:Y},{input:"dt",tag:"mi",output:"{:d t:}",tex:null,ttype:Y},{input:"oint",tag:"mo",output:"\u222E",tex:null,ttype:d},{input:"del",tag:"mo",output:"\u2202",tex:"partial",ttype:d},{input:"grad",tag:"mo",output:"\u2207",tex:"nabla",ttype:d},{input:"+-",tag:"mo",output:"\u00B1",tex:"pm",ttype:d},{input:"O/",tag:"mo",output:"\u2205",tex:"emptyset",ttype:d},{input:"oo",tag:"mo",output:"\u221E",tex:"infty",ttype:d},{input:"aleph",tag:"mo",output:"\u2135",tex:null,ttype:d},{input:"...",tag:"mo",output:"...",tex:"ldots",ttype:d},{input:":.",tag:"mo",output:"\u2234",tex:"therefore",ttype:d},{input:"/_",tag:"mo",output:"\u2220",tex:"angle",ttype:d},{input:"\\ ",tag:"mo",output:"\u00A0",tex:null,ttype:d},{input:"quad",tag:"mo",output:"\u00A0\u00A0",tex:null,ttype:d},{input:"qquad",tag:"mo",output:"\u00A0\u00A0\u00A0\u00A0",tex:null,ttype:d},{input:"cdots",tag:"mo",output:"\u22EF",tex:null,ttype:d},{input:"vdots",tag:"mo",output:"\u22EE",tex:null,ttype:d},{input:"ddots",tag:"mo",output:"\u22F1",tex:null,ttype:d},{input:"diamond",tag:"mo",output:"\u22C4",tex:null,ttype:d},{input:"square",tag:"mo",output:"\u25A1",tex:null,ttype:d},{input:"|__",tag:"mo",output:"\u230A",tex:"lfloor",ttype:d},{input:"__|",tag:"mo",output:"\u230B",tex:"rfloor",ttype:d},{input:"|~",tag:"mo",output:"\u2308",tex:"lceiling",ttype:d},{input:"~|",tag:"mo",output:"\u2309",tex:"rceiling",ttype:d},{input:"CC",tag:"mo",output:"\u2102",tex:null,ttype:d},{input:"NN",tag:"mo",output:"\u2115",tex:null,ttype:d},{input:"QQ",tag:"mo",output:"\u211A",tex:null,ttype:d},{input:"RR",tag:"mo",output:"\u211D",tex:null,ttype:d},{input:"ZZ",tag:"mo",output:"\u2124",tex:null,ttype:d},{input:"f",tag:"mi",output:"f",tex:null,ttype:G,func:true},{input:"g",tag:"mi",output:"g",tex:null,ttype:G,func:true},{input:"lim",tag:"mo",output:"lim",tex:null,ttype:O},{input:"Lim",tag:"mo",output:"Lim",tex:null,ttype:O},{input:"sin",tag:"mo",output:"sin",tex:null,ttype:G,func:true},{input:"cos",tag:"mo",output:"cos",tex:null,ttype:G,func:true},{input:"tan",tag:"mo",output:"tan",tex:null,ttype:G,func:true},{input:"sinh",tag:"mo",output:"sinh",tex:null,ttype:G,func:true},{input:"cosh",tag:"mo",output:"cosh",tex:null,ttype:G,func:true},{input:"tanh",tag:"mo",output:"tanh",tex:null,ttype:G,func:true},{input:"cot",tag:"mo",output:"cot",tex:null,ttype:G,func:true},{input:"sec",tag:"mo",output:"sec",tex:null,ttype:G,func:true},{input:"csc",tag:"mo",output:"csc",tex:null,ttype:G,func:true},{input:"log",tag:"mo",output:"log",tex:null,ttype:G,func:true},{input:"ln",tag:"mo",output:"ln",tex:null,ttype:G,func:true},{input:"det",tag:"mo",output:"det",tex:null,ttype:G,func:true},{input:"dim",tag:"mo",output:"dim",tex:null,ttype:d},{input:"mod",tag:"mo",output:"mod",tex:null,ttype:d},{input:"gcd",tag:"mo",output:"gcd",tex:null,ttype:G,func:true},{input:"lcm",tag:"mo",output:"lcm",tex:null,ttype:G,func:true},{input:"lub",tag:"mo",output:"lub",tex:null,ttype:d},{input:"glb",tag:"mo",output:"glb",tex:null,ttype:d},{input:"min",tag:"mo",output:"min",tex:null,ttype:O},{input:"max",tag:"mo",output:"max",tex:null,ttype:O},{input:"uarr",tag:"mo",output:"\u2191",tex:"uparrow",ttype:d},{input:"darr",tag:"mo",output:"\u2193",tex:"downarrow",ttype:d},{input:"rarr",tag:"mo",output:"\u2192",tex:"rightarrow",ttype:d},{input:"->",tag:"mo",output:"\u2192",tex:"to",ttype:d},{input:"|->",tag:"mo",output:"\u21A6",tex:"mapsto",ttype:d},{input:"larr",tag:"mo",output:"\u2190",tex:"leftarrow",ttype:d},{input:"harr",tag:"mo",output:"\u2194",tex:"leftrightarrow",ttype:d},{input:"rArr",tag:"mo",output:"\u21D2",tex:"Rightarrow",ttype:d},{input:"lArr",tag:"mo",output:"\u21D0",tex:"Leftarrow",ttype:d},{input:"hArr",tag:"mo",output:"\u21D4",tex:"Leftrightarrow",ttype:d},i,ad,z,P,n,r,h,{input:"hat",tag:"mover",output:"\u005E",tex:null,ttype:G,acc:true},{input:"bar",tag:"mover",output:"\u00AF",tex:"overline",ttype:G,acc:true},{input:"vec",tag:"mover",output:"\u2192",tex:null,ttype:G,acc:true},{input:"dot",tag:"mover",output:".",tex:null,ttype:G,acc:true},{input:"ddot",tag:"mover",output:"..",tex:null,ttype:G,acc:true},{input:"ul",tag:"munder",output:"\u0332",tex:"underline",ttype:G,acc:true},af,w,o,{input:"bb",tag:"mstyle",atname:"fontweight",atval:"bold",output:"bb",tex:null,ttype:G},{input:"mathbf",tag:"mstyle",atname:"fontweight",atval:"bold",output:"mathbf",tex:null,ttype:G},{input:"sf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"sf",tex:null,ttype:G},{input:"mathsf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"mathsf",tex:null,ttype:G},{input:"bbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"bbb",tex:null,ttype:G,codes:C},{input:"mathbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"mathbb",tex:null,ttype:G,codes:C},{input:"cc",tag:"mstyle",atname:"mathvariant",atval:"script",output:"cc",tex:null,ttype:G,codes:I},{input:"mathcal",tag:"mstyle",atname:"mathvariant",atval:"script",output:"mathcal",tex:null,ttype:G,codes:I},{input:"tt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"tt",tex:null,ttype:G},{input:"mathtt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"mathtt",tex:null,ttype:G},{input:"fr",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"fr",tex:null,ttype:G,codes:M},{input:"mathfrak",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"mathfrak",tex:null,ttype:G,codes:M}];function V(ah,ag){if(ah.input>ag.input){return 1}else{return -1}}var T=[];function u(){var ah=[],ag;for(ag=0;ag>1;if(ah[ag]=T[ag]}x=E;if(ak!=""){E=F[aj].ttype;return F[aj]}E=d;ag=1;ap=am.slice(0,1);var an=true;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}if(ap==f){ap=am.slice(ag,ag+1);if("0"<=ap&&ap<="9"){an=false;ag++;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}}}if((an&&ag>1)||ag>2){ap=am.slice(0,ag-1);ao="mn"}else{ag=2;ap=am.slice(0,1);ao=(("A">ap||ap>"Z")&&("a">ap||ap>"z")?"mo":"mi")}if(ap=="-"&&x==l){return{input:ap,tag:ao,output:ap,ttype:G,func:true}}return{input:ap,tag:ao,output:ap,ttype:d}}function S(ah){var ag;if(ah.nodeName=="mrow"){ag=ah.firstChild.firstChild.nodeValue;if(ag=="("||ag=="["||ag=="{"){ah.removeChild(ah.firstChild)}}if(ah.nodeName=="mrow"){ag=ah.lastChild.firstChild.nodeValue;if(ag==")"||ag=="]"||ag=="}"){ah.removeChild(ah.lastChild)}}}var J,x,E;function K(am){var ai,ah,ap,ak,ao,al=g.createDocumentFragment();am=t(am,0);ai=m(am);if(ai==null||ai.ttype==k&&J>0){return[null,am]}if(ai.ttype==Y){am=ai.output+t(am,ai.input.length);ai=m(am)}switch(ai.ttype){case O:case d:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am];case b:J++;am=t(am,ai.input.length);ap=v(am,true);J--;if(typeof ai.invisible=="boolean"&&ai.invisible){ah=L("mrow",ap[0])}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0])}return[ah,ap[1]];case aa:if(ai!=o){am=t(am,ai.input.length)}if(am.charAt(0)=="{"){ak=am.indexOf("}")}else{if(am.charAt(0)=="("){ak=am.indexOf(")")}else{if(am.charAt(0)=="["){ak=am.indexOf("]")}else{if(ai==o){ak=am.slice(1).indexOf('"')+1}else{ak=0}}}}if(ak==-1){ak=am.length}ao=am.slice(1,ak);if(ao.charAt(0)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}al.appendChild(L(ai.tag,g.createTextNode(ao)));if(ao.charAt(ao.length-1)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}am=t(am,ak+1);return[L("mrow",al),am];case G:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L(ai.tag,g.createTextNode(ai.output)),am]}if(typeof ai.func=="boolean"&&ai.func){ao=am.charAt(0);if(ao=="^"||ao=="_"||ao=="/"||ao=="|"||ao==","){return[L(ai.tag,g.createTextNode(ai.output)),am]}else{ah=L("mrow",L(ai.tag,g.createTextNode(ai.output)));ah.appendChild(ap[0]);return[ah,ap[1]]}}S(ap[0]);if(ai.input=="sqrt"){return[L(ai.tag,ap[0]),ap[1]]}else{if(typeof ai.acc=="boolean"&&ai.acc){ah=L(ai.tag,ap[0]);ah.appendChild(L("mo",g.createTextNode(ai.output)));return[ah,ap[1]]}else{if(!p&&typeof ai.codes!="undefined"){for(ak=0;ak64&&ao.charCodeAt(aj)<91){an=an+String.fromCharCode(ai.codes[ao.charCodeAt(aj)-65])}else{an=an+ao.charAt(aj)}}if(ap[0].nodeName=="mi"){ap[0]=Q("mo").appendChild(g.createTextNode(an))}else{ap[0].replaceChild(Q("mo").appendChild(g.createTextNode(an)),ap[0].childNodes[ak])}}}}ah=L(ai.tag,ap[0]);ah.setAttribute(ai.atname,ai.atval);return[ah,ap[1]]}}case W:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ap[0]);var ag=K(ap[1]);if(ag[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ag[0]);if(ai.input=="root"||ai.input=="stackrel"){al.appendChild(ag[0])}al.appendChild(ap[0]);if(ai.input=="frac"){al.appendChild(ag[0])}return[L(ai.tag,al),ag[1]];case l:am=t(am,ai.input.length);return[L("mo",g.createTextNode(ai.output)),am];case a:am=t(am,ai.input.length);ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);al.appendChild(L(ai.tag,g.createTextNode(ai.output)));ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);return[L("mrow",al),am];case q:J++;am=t(am,ai.input.length);ap=v(am,false);J--;ao="";if(ap[0].lastChild!=null){ao=ap[0].lastChild.firstChild.nodeValue}if(ao=="|"){ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0]);return[ah,ap[1]]}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);return[ah,am]}default:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am]}}function y(am){var ak,an,al,aj,ag,ai;am=t(am,0);an=m(am);ag=K(am);aj=ag[0];am=ag[1];ak=m(am);if(ak.ttype==l&&ak.input!="/"){am=t(am,ak.input.length);ag=K(am);if(ag[0]==null){ag[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ag[0])}am=ag[1];if(ak.input=="_"){al=m(am);ai=(an.ttype==O);if(al.input=="^"){am=t(am,al.input.length);var ah=K(am);S(ah[0]);am=ah[1];aj=L((ai?"munderover":"msubsup"),aj);aj.appendChild(ag[0]);aj.appendChild(ah[0]);aj=L("mrow",aj)}else{aj=L((ai?"munder":"msub"),aj);aj.appendChild(ag[0])}}else{aj=L(ak.tag,aj);aj.appendChild(ag[0])}}return[aj,am]}function v(ao,an){var at,ap,ak,aw,al=g.createDocumentFragment();do{ao=t(ao,0);ak=y(ao);ap=ak[0];ao=ak[1];at=m(ao);if(at.ttype==l&&at.input=="/"){ao=t(ao,at.input.length);ak=y(ao);if(ak[0]==null){ak[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ak[0])}ao=ak[1];S(ap);ap=L(at.tag,ap);ap.appendChild(ak[0]);al.appendChild(ap);at=m(ao)}else{if(ap!=undefined){al.appendChild(ap)}}}while((at.ttype!=k&&(at.ttype!=q||an)||J==0)&&at!=null&&at.output!="");if(at.ttype==k||at.ttype==q){var ax=al.childNodes.length;if(ax>0&&al.childNodes[ax-1].nodeName=="mrow"&&ax>1&&al.childNodes[ax-2].nodeName=="mo"&&al.childNodes[ax-2].firstChild.nodeValue==","){var az=al.childNodes[ax-1].lastChild.firstChild.nodeValue;if(az==")"||az=="]"){var ah=al.childNodes[ax-1].firstChild.firstChild.nodeValue;if(ah=="("&&az==")"&&at.output!="}"||ah=="["&&az=="]"){var ai=[];var au=true;var aq=al.childNodes.length;for(aw=0;au&&aw1){au=ai[aw].length==ai[aw-2].length}}if(au){var aj,ag,am,ar,ay=g.createDocumentFragment();for(aw=0;aw2){al.removeChild(al.firstChild);al.removeChild(al.firstChild)}ay.appendChild(L("mtr",aj))}ap=L("mtable",ay);if(typeof at.invisible=="boolean"&&at.invisible){ap.setAttribute("columnalign","left")}al.replaceChild(ap,al.firstChild)}}}}ao=t(ao,at.input.length);if(typeof at.invisible!="boolean"||!at.invisible){ap=L("mo",g.createTextNode(at.output));al.appendChild(ap)}}return[al,ao]}function e(ai){var ah=Q("mstyle");if(H!=""){ah.setAttribute("mathcolor",H)}if(s){ah.setAttribute("displaystyle","true")}if(ab!=""){ah.setAttribute("fontfamily",ab)}J=0;ah.appendChild(v(ai.replace(/^\s+/g,""),false)[0]);ah=L("math",ah);if(B){ah.setAttribute("title",ai.replace(/\s+/g," "))}if(ab!=""&&(p||ab!="serif")){var ag=U("font");ag.setAttribute("face",ab);ag.appendChild(ah);return ag}return ah}B=false;ab="";H="";(function(){for(var ah=0,ag=F.length;ah",tex:null,ttype:d},{input:"gt=",tag:"mo",output:"\u2265",tex:"geq",ttype:d},{input:"-<=",tag:"mo",output:"\u2AAF",tex:"preceq",ttype:d},{input:">-=",tag:"mo",output:"\u2AB0",tex:"succeq",ttype:d},{input:"'",tag:"mo",output:"\u2032",tex:"prime",ttype:d},{input:"arcsin",tag:"mi",output:"arcsin",tex:null,ttype:G,func:true},{input:"arccos",tag:"mi",output:"arccos",tex:null,ttype:G,func:true},{input:"arctan",tag:"mi",output:"arctan",tex:null,ttype:G,func:true},{input:"coth",tag:"mi",output:"coth",tex:null,ttype:G,func:true},{input:"sech",tag:"mi",output:"sech",tex:null,ttype:G,func:true},{input:"csch",tag:"mi",output:"csch",tex:null,ttype:G,func:true},{input:"abs",tag:"mi",output:"abs",tex:null,ttype:G,func:true},{input:"exp",tag:"mi",output:"exp",tex:null,ttype:G,func:true},{input:"tilde",tag:"mover",output:"~",tex:null,ttype:G,acc:true});ae.Augment({AM:{Init:function(){s=ae.config.displaystyle;decimal=ae.config.decimal;D();u()},Augment:function(ag){for(var ah in ag){if(ag.hasOwnProperty(ah)){switch(ah){case"displaystyle":s=ag[ah];break;case"decimal":decimal=ag[ah];break;case"parseMath":e=ag[ah];break;case"parseExpr":v=ag[ah];break;case"parseIexpr":y=ag[ah];break;case"parseSexpr":K=ag[ah];break;case"removeBrackets":S=ag[ah];break;case"getSymbol":m=ag[ah];break;case"position":c=ag[ah];break;case"removeCharsAndBlanks":t=ag[ah];break;case"createMmlNode":L=ag[ah];break;case"createElementMathML":Q=ag[ah];break;case"createElementXHTML":U=ag[ah];break;case"initSymbols":u=ag[ah];break;case"compareNames":comareNames=ag[ah];break}this[ah]=ag[ah]}}},parseMath:e,parseExpr:v,parseIexpr:y,parseSexr:K,removeBrackets:S,getSymbol:m,position:c,removeCharsAndBlanks:t,createMmlNode:L,createElementMathML:Q,createElementXHTML:U,initSymbols:u,compareNames:V,createDocumentFragment:Z,document:g,define:A,symbols:F,names:T,TOKEN:{CONST:d,UNARY:G,BINARY:W,INFIX:l,LEFTBRACKET:b,RIGHTBRACKET:k,SPACE:a,UNDEROVER:O,DEFINITION:Y,LEFTRIGHT:q,TEXT:aa}}});var ac=[R,N];ac=null})(MathJax.InputJax.AsciiMath);(function(b){var a;b.Augment({sourceMenuTitle:"AsciiMath Input",prefilterHooks:MathJax.Callback.Hooks(true),postfilterHooks:MathJax.Callback.Hooks(true),Translate:function(c){var d,f=c.innerHTML.replace(/^\s+/,"").replace(/\s+$/,"");var g={math:f,script:c};this.prefilterHooks.Execute(g);f=g.math;try{d=this.AM.parseMath(f)}catch(e){if(!e.asciimathError){throw e}d=this.formatError(e,f)}g.math=a(d);this.postfilterHooks.Execute(g);return g.math},formatError:function(f,e,c){var d=f.message.replace(/\n.*/,"");MathJax.Hub.signal.Post(["AsciiMath Jax - parse error",d,e,c]);return a.merror(d)},Error:function(c){throw MathJax.Hub.Insert(Error(c),{asciimathError:true})},Startup:function(){a=MathJax.ElementJax.mml;this.AM.Init()}});b.loadComplete("jax.js")})(MathJax.InputJax.AsciiMath); +(function(ae){var j;var Z=MathJax.Object.Subclass({firstChild:null,lastChild:null,Init:function(){this.childNodes=[]},appendChild:function(ag){if(ag.parent){ag.parent.removeChild(ag)}if(this.lastChild){this.lastChild.nextSibling=ag}if(!this.firstChild){this.firstChild=ag}this.childNodes.push(ag);ag.parent=this;this.lastChild=ag;return ag},removeChild:function(ai){for(var ah=0,ag=this.childNodes.length;ah=ag-1){this.lastChild=aj}this.childNodes[ai]=aj;aj.nextSibling=ah.nextSibling;ah.nextSibling=ah.parent=null;return ah},toString:function(){return"{"+this.childNodes.join("")+"}"}});var D=function(){j=MathJax.ElementJax.mml;var ag=j.mbase.prototype.Init;j.mbase.Augment({firstChild:null,lastChild:null,nodeValue:"",nextSibling:null,Init:function(){var ah=ag.apply(this,arguments)||this;ah.childNodes=ah.data;ah.nodeName=ah.type;return ah},appendChild:function(ak){if(ak.parent){ak.parent.removeChild(ak)}var ai=arguments;if(ak.isa(Z)){ai=ak.childNodes;ak.data=ak.childNodes=[];ak.firstChild=ak.lastChild=null}for(var aj=0,ah=ai.length;aj=ah-1){this.lastChild=ak}this.SetData(aj,ak);ak.nextSibling=ai.nextSibling;this.nodeValue="";for(aj=0,ah=this.childNodes.length;aj=",tag:"mo",output:"\u2265",tex:"ge",ttype:d},{input:"geq",tag:"mo",output:"\u2265",tex:null,ttype:d},{input:"-<",tag:"mo",output:"\u227A",tex:"prec",ttype:d},{input:"-lt",tag:"mo",output:"\u227A",tex:null,ttype:d},{input:">-",tag:"mo",output:"\u227B",tex:"succ",ttype:d},{input:"in",tag:"mo",output:"\u2208",tex:null,ttype:d},{input:"!in",tag:"mo",output:"\u2209",tex:"notin",ttype:d},{input:"sub",tag:"mo",output:"\u2282",tex:"subset",ttype:d},{input:"sup",tag:"mo",output:"\u2283",tex:"supset",ttype:d},{input:"sube",tag:"mo",output:"\u2286",tex:"subseteq",ttype:d},{input:"supe",tag:"mo",output:"\u2287",tex:"supseteq",ttype:d},{input:"-=",tag:"mo",output:"\u2261",tex:"equiv",ttype:d},{input:"~=",tag:"mo",output:"\u2245",tex:"cong",ttype:d},{input:"~~",tag:"mo",output:"\u2248",tex:"approx",ttype:d},{input:"prop",tag:"mo",output:"\u221D",tex:"propto",ttype:d},{input:"and",tag:"mtext",output:"and",tex:null,ttype:a},{input:"or",tag:"mtext",output:"or",tex:null,ttype:a},{input:"not",tag:"mo",output:"\u00AC",tex:"neg",ttype:d},{input:"=>",tag:"mo",output:"\u21D2",tex:"implies",ttype:d},{input:"if",tag:"mo",output:"if",tex:null,ttype:a},{input:"<=>",tag:"mo",output:"\u21D4",tex:"iff",ttype:d},{input:"AA",tag:"mo",output:"\u2200",tex:"forall",ttype:d},{input:"EE",tag:"mo",output:"\u2203",tex:"exists",ttype:d},{input:"_|_",tag:"mo",output:"\u22A5",tex:"bot",ttype:d},{input:"TT",tag:"mo",output:"\u22A4",tex:"top",ttype:d},{input:"|--",tag:"mo",output:"\u22A2",tex:"vdash",ttype:d},{input:"|==",tag:"mo",output:"\u22A8",tex:"models",ttype:d},{input:"(",tag:"mo",output:"(",tex:null,ttype:b},{input:")",tag:"mo",output:")",tex:null,ttype:k},{input:"[",tag:"mo",output:"[",tex:null,ttype:b},{input:"]",tag:"mo",output:"]",tex:null,ttype:k},{input:"{",tag:"mo",output:"{",tex:null,ttype:b},{input:"}",tag:"mo",output:"}",tex:null,ttype:k},{input:"|",tag:"mo",output:"|",tex:null,ttype:q},{input:"(:",tag:"mo",output:"\u2329",tex:"langle",ttype:b},{input:":)",tag:"mo",output:"\u232A",tex:"rangle",ttype:k},{input:"<<",tag:"mo",output:"\u2329",tex:null,ttype:b},{input:">>",tag:"mo",output:"\u232A",tex:null,ttype:k},{input:"{:",tag:"mo",output:"{:",tex:null,ttype:b,invisible:true},{input:":}",tag:"mo",output:":}",tex:null,ttype:k,invisible:true},{input:"int",tag:"mo",output:"\u222B",tex:null,ttype:d},{input:"dx",tag:"mi",output:"{:d x:}",tex:null,ttype:Y},{input:"dy",tag:"mi",output:"{:d y:}",tex:null,ttype:Y},{input:"dz",tag:"mi",output:"{:d z:}",tex:null,ttype:Y},{input:"dt",tag:"mi",output:"{:d t:}",tex:null,ttype:Y},{input:"oint",tag:"mo",output:"\u222E",tex:null,ttype:d},{input:"del",tag:"mo",output:"\u2202",tex:"partial",ttype:d},{input:"grad",tag:"mo",output:"\u2207",tex:"nabla",ttype:d},{input:"+-",tag:"mo",output:"\u00B1",tex:"pm",ttype:d},{input:"O/",tag:"mo",output:"\u2205",tex:"emptyset",ttype:d},{input:"oo",tag:"mo",output:"\u221E",tex:"infty",ttype:d},{input:"aleph",tag:"mo",output:"\u2135",tex:null,ttype:d},{input:"...",tag:"mo",output:"...",tex:"ldots",ttype:d},{input:":.",tag:"mo",output:"\u2234",tex:"therefore",ttype:d},{input:"/_",tag:"mo",output:"\u2220",tex:"angle",ttype:d},{input:"\\ ",tag:"mo",output:"\u00A0",tex:null,ttype:d},{input:"quad",tag:"mo",output:"\u00A0\u00A0",tex:null,ttype:d},{input:"qquad",tag:"mo",output:"\u00A0\u00A0\u00A0\u00A0",tex:null,ttype:d},{input:"cdots",tag:"mo",output:"\u22EF",tex:null,ttype:d},{input:"vdots",tag:"mo",output:"\u22EE",tex:null,ttype:d},{input:"ddots",tag:"mo",output:"\u22F1",tex:null,ttype:d},{input:"diamond",tag:"mo",output:"\u22C4",tex:null,ttype:d},{input:"square",tag:"mo",output:"\u25A1",tex:null,ttype:d},{input:"|__",tag:"mo",output:"\u230A",tex:"lfloor",ttype:d},{input:"__|",tag:"mo",output:"\u230B",tex:"rfloor",ttype:d},{input:"|~",tag:"mo",output:"\u2308",tex:"lceiling",ttype:d},{input:"~|",tag:"mo",output:"\u2309",tex:"rceiling",ttype:d},{input:"CC",tag:"mo",output:"\u2102",tex:null,ttype:d},{input:"NN",tag:"mo",output:"\u2115",tex:null,ttype:d},{input:"QQ",tag:"mo",output:"\u211A",tex:null,ttype:d},{input:"RR",tag:"mo",output:"\u211D",tex:null,ttype:d},{input:"ZZ",tag:"mo",output:"\u2124",tex:null,ttype:d},{input:"f",tag:"mi",output:"f",tex:null,ttype:G,func:true},{input:"g",tag:"mi",output:"g",tex:null,ttype:G,func:true},{input:"lim",tag:"mo",output:"lim",tex:null,ttype:O},{input:"Lim",tag:"mo",output:"Lim",tex:null,ttype:O},{input:"sin",tag:"mo",output:"sin",tex:null,ttype:G,func:true},{input:"cos",tag:"mo",output:"cos",tex:null,ttype:G,func:true},{input:"tan",tag:"mo",output:"tan",tex:null,ttype:G,func:true},{input:"sinh",tag:"mo",output:"sinh",tex:null,ttype:G,func:true},{input:"cosh",tag:"mo",output:"cosh",tex:null,ttype:G,func:true},{input:"tanh",tag:"mo",output:"tanh",tex:null,ttype:G,func:true},{input:"cot",tag:"mo",output:"cot",tex:null,ttype:G,func:true},{input:"sec",tag:"mo",output:"sec",tex:null,ttype:G,func:true},{input:"csc",tag:"mo",output:"csc",tex:null,ttype:G,func:true},{input:"log",tag:"mo",output:"log",tex:null,ttype:G,func:true},{input:"ln",tag:"mo",output:"ln",tex:null,ttype:G,func:true},{input:"det",tag:"mo",output:"det",tex:null,ttype:G,func:true},{input:"dim",tag:"mo",output:"dim",tex:null,ttype:d},{input:"mod",tag:"mo",output:"mod",tex:null,ttype:d},{input:"gcd",tag:"mo",output:"gcd",tex:null,ttype:G,func:true},{input:"lcm",tag:"mo",output:"lcm",tex:null,ttype:G,func:true},{input:"lub",tag:"mo",output:"lub",tex:null,ttype:d},{input:"glb",tag:"mo",output:"glb",tex:null,ttype:d},{input:"min",tag:"mo",output:"min",tex:null,ttype:O},{input:"max",tag:"mo",output:"max",tex:null,ttype:O},{input:"uarr",tag:"mo",output:"\u2191",tex:"uparrow",ttype:d},{input:"darr",tag:"mo",output:"\u2193",tex:"downarrow",ttype:d},{input:"rarr",tag:"mo",output:"\u2192",tex:"rightarrow",ttype:d},{input:"->",tag:"mo",output:"\u2192",tex:"to",ttype:d},{input:"|->",tag:"mo",output:"\u21A6",tex:"mapsto",ttype:d},{input:"larr",tag:"mo",output:"\u2190",tex:"leftarrow",ttype:d},{input:"harr",tag:"mo",output:"\u2194",tex:"leftrightarrow",ttype:d},{input:"rArr",tag:"mo",output:"\u21D2",tex:"Rightarrow",ttype:d},{input:"lArr",tag:"mo",output:"\u21D0",tex:"Leftarrow",ttype:d},{input:"hArr",tag:"mo",output:"\u21D4",tex:"Leftrightarrow",ttype:d},i,ad,z,P,n,r,h,{input:"hat",tag:"mover",output:"\u005E",tex:null,ttype:G,acc:true},{input:"bar",tag:"mover",output:"\u00AF",tex:"overline",ttype:G,acc:true},{input:"vec",tag:"mover",output:"\u2192",tex:null,ttype:G,acc:true},{input:"dot",tag:"mover",output:".",tex:null,ttype:G,acc:true},{input:"ddot",tag:"mover",output:"..",tex:null,ttype:G,acc:true},{input:"ul",tag:"munder",output:"\u0332",tex:"underline",ttype:G,acc:true},af,w,o,{input:"bb",tag:"mstyle",atname:"fontweight",atval:"bold",output:"bb",tex:null,ttype:G},{input:"mathbf",tag:"mstyle",atname:"fontweight",atval:"bold",output:"mathbf",tex:null,ttype:G},{input:"sf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"sf",tex:null,ttype:G},{input:"mathsf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"mathsf",tex:null,ttype:G},{input:"bbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"bbb",tex:null,ttype:G,codes:C},{input:"mathbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"mathbb",tex:null,ttype:G,codes:C},{input:"cc",tag:"mstyle",atname:"mathvariant",atval:"script",output:"cc",tex:null,ttype:G,codes:I},{input:"mathcal",tag:"mstyle",atname:"mathvariant",atval:"script",output:"mathcal",tex:null,ttype:G,codes:I},{input:"tt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"tt",tex:null,ttype:G},{input:"mathtt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"mathtt",tex:null,ttype:G},{input:"fr",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"fr",tex:null,ttype:G,codes:M},{input:"mathfrak",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"mathfrak",tex:null,ttype:G,codes:M}];function V(ah,ag){if(ah.input>ag.input){return 1}else{return -1}}var T=[];function u(){var ah=[],ag;for(ag=0;ag>1;if(ah[ag]=T[ag]}x=E;if(ak!=""){E=F[aj].ttype;return F[aj]}E=d;ag=1;ap=am.slice(0,1);var an=true;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}if(ap==f){ap=am.slice(ag,ag+1);if("0"<=ap&&ap<="9"){an=false;ag++;while("0"<=ap&&ap<="9"&&ag<=am.length){ap=am.slice(ag,ag+1);ag++}}}if((an&&ag>1)||ag>2){ap=am.slice(0,ag-1);ao="mn"}else{ag=2;ap=am.slice(0,1);ao=(("A">ap||ap>"Z")&&("a">ap||ap>"z")?"mo":"mi")}if(ap=="-"&&x==l){return{input:ap,tag:ao,output:ap,ttype:G,func:true}}return{input:ap,tag:ao,output:ap,ttype:d}}function S(ah){var ag;if(ah.nodeName=="mrow"){ag=ah.firstChild.firstChild.nodeValue;if(ag=="("||ag=="["||ag=="{"){ah.removeChild(ah.firstChild)}}if(ah.nodeName=="mrow"){ag=ah.lastChild.firstChild.nodeValue;if(ag==")"||ag=="]"||ag=="}"){ah.removeChild(ah.lastChild)}}}var J,x,E;function K(am){var ai,ah,ap,ak,ao,al=g.createDocumentFragment();am=t(am,0);ai=m(am);if(ai==null||ai.ttype==k&&J>0){return[null,am]}if(ai.ttype==Y){am=ai.output+t(am,ai.input.length);ai=m(am)}switch(ai.ttype){case O:case d:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am];case b:J++;am=t(am,ai.input.length);ap=v(am,true);J--;if(typeof ai.invisible=="boolean"&&ai.invisible){ah=L("mrow",ap[0])}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0])}return[ah,ap[1]];case aa:if(ai!=o){am=t(am,ai.input.length)}if(am.charAt(0)=="{"){ak=am.indexOf("}")}else{if(am.charAt(0)=="("){ak=am.indexOf(")")}else{if(am.charAt(0)=="["){ak=am.indexOf("]")}else{if(ai==o){ak=am.slice(1).indexOf('"')+1}else{ak=0}}}}if(ak==-1){ak=am.length}ao=am.slice(1,ak);if(ao.charAt(0)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}al.appendChild(L(ai.tag,g.createTextNode(ao)));if(ao.charAt(ao.length-1)==" "){ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah)}am=t(am,ak+1);return[L("mrow",al),am];case G:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L(ai.tag,g.createTextNode(ai.output)),am]}if(typeof ai.func=="boolean"&&ai.func){ao=am.charAt(0);if(ao=="^"||ao=="_"||ao=="/"||ao=="|"||ao==","){return[L(ai.tag,g.createTextNode(ai.output)),am]}else{ah=L("mrow",L(ai.tag,g.createTextNode(ai.output)));ah.appendChild(ap[0]);return[ah,ap[1]]}}S(ap[0]);if(ai.input=="sqrt"){return[L(ai.tag,ap[0]),ap[1]]}else{if(typeof ai.acc=="boolean"&&ai.acc){ah=L(ai.tag,ap[0]);ah.appendChild(L("mo",g.createTextNode(ai.output)));return[ah,ap[1]]}else{if(!p&&typeof ai.codes!="undefined"){for(ak=0;ak64&&ao.charCodeAt(aj)<91){an=an+String.fromCharCode(ai.codes[ao.charCodeAt(aj)-65])}else{an=an+ao.charAt(aj)}}if(ap[0].nodeName=="mi"){ap[0]=Q("mo").appendChild(g.createTextNode(an))}else{ap[0].replaceChild(Q("mo").appendChild(g.createTextNode(an)),ap[0].childNodes[ak])}}}}ah=L(ai.tag,ap[0]);ah.setAttribute(ai.atname,ai.atval);return[ah,ap[1]]}}case W:am=t(am,ai.input.length);ap=K(am);if(ap[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ap[0]);var ag=K(ap[1]);if(ag[0]==null){return[L("mo",g.createTextNode(ai.input)),am]}S(ag[0]);if(ai.input=="root"||ai.input=="stackrel"){al.appendChild(ag[0])}al.appendChild(ap[0]);if(ai.input=="frac"){al.appendChild(ag[0])}return[L(ai.tag,al),ag[1]];case l:am=t(am,ai.input.length);return[L("mo",g.createTextNode(ai.output)),am];case a:am=t(am,ai.input.length);ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);al.appendChild(L(ai.tag,g.createTextNode(ai.output)));ah=Q("mspace");ah.setAttribute("width","1ex");al.appendChild(ah);return[L("mrow",al),am];case q:J++;am=t(am,ai.input.length);ap=v(am,false);J--;ao="";if(ap[0].lastChild!=null){ao=ap[0].lastChild.firstChild.nodeValue}if(ao=="|"){ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);ah.appendChild(ap[0]);return[ah,ap[1]]}else{ah=L("mo",g.createTextNode(ai.output));ah=L("mrow",ah);return[ah,am]}default:am=t(am,ai.input.length);return[L(ai.tag,g.createTextNode(ai.output)),am]}}function y(am){var ak,an,al,aj,ag,ai;am=t(am,0);an=m(am);ag=K(am);aj=ag[0];am=ag[1];ak=m(am);if(ak.ttype==l&&ak.input!="/"){am=t(am,ak.input.length);ag=K(am);if(ag[0]==null){ag[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ag[0])}am=ag[1];if(ak.input=="_"){al=m(am);ai=(an.ttype==O);if(al.input=="^"){am=t(am,al.input.length);var ah=K(am);S(ah[0]);am=ah[1];aj=L((ai?"munderover":"msubsup"),aj);aj.appendChild(ag[0]);aj.appendChild(ah[0]);aj=L("mrow",aj)}else{aj=L((ai?"munder":"msub"),aj);aj.appendChild(ag[0])}}else{aj=L(ak.tag,aj);aj.appendChild(ag[0])}}return[aj,am]}function v(ao,an){var at,ap,ak,aw,al=g.createDocumentFragment();do{ao=t(ao,0);ak=y(ao);ap=ak[0];ao=ak[1];at=m(ao);if(at.ttype==l&&at.input=="/"){ao=t(ao,at.input.length);ak=y(ao);if(ak[0]==null){ak[0]=L("mo",g.createTextNode("\u25A1"))}else{S(ak[0])}ao=ak[1];S(ap);ap=L(at.tag,ap);ap.appendChild(ak[0]);al.appendChild(ap);at=m(ao)}else{if(ap!=undefined){al.appendChild(ap)}}}while((at.ttype!=k&&(at.ttype!=q||an)||J==0)&&at!=null&&at.output!="");if(at.ttype==k||at.ttype==q){var ax=al.childNodes.length;if(ax>0&&al.childNodes[ax-1].nodeName=="mrow"&&ax>1&&al.childNodes[ax-2].nodeName=="mo"&&al.childNodes[ax-2].firstChild.nodeValue==","){var az=al.childNodes[ax-1].lastChild.firstChild.nodeValue;if(az==")"||az=="]"){var ah=al.childNodes[ax-1].firstChild.firstChild.nodeValue;if(ah=="("&&az==")"&&at.output!="}"||ah=="["&&az=="]"){var ai=[];var au=true;var aq=al.childNodes.length;for(aw=0;au&&aw1){au=ai[aw].length==ai[aw-2].length}}if(au){var aj,ag,am,ar,ay=g.createDocumentFragment();for(aw=0;aw2){al.removeChild(al.firstChild);al.removeChild(al.firstChild)}ay.appendChild(L("mtr",aj))}ap=L("mtable",ay);if(typeof at.invisible=="boolean"&&at.invisible){ap.setAttribute("columnalign","left")}al.replaceChild(ap,al.firstChild)}}}}ao=t(ao,at.input.length);if(typeof at.invisible!="boolean"||!at.invisible){ap=L("mo",g.createTextNode(at.output));al.appendChild(ap)}}return[al,ao]}function e(ai){var ah=Q("mstyle");if(H!=""){ah.setAttribute("mathcolor",H)}if(s){ah.setAttribute("displaystyle","true")}if(ab!=""){ah.setAttribute("fontfamily",ab)}J=0;ah.appendChild(v(ai.replace(/^\s+/g,""),false)[0]);ah=L("math",ah);if(B){ah.setAttribute("title",ai.replace(/\s+/g," "))}if(ab!=""&&(p||ab!="serif")){var ag=U("font");ag.setAttribute("face",ab);ag.appendChild(ah);return ag}return ah}B=false;ab="";H="";(function(){for(var ah=0,ag=F.length;ah",tex:null,ttype:d},{input:"gt=",tag:"mo",output:"\u2265",tex:"geq",ttype:d},{input:"-<=",tag:"mo",output:"\u2AAF",tex:"preceq",ttype:d},{input:">-=",tag:"mo",output:"\u2AB0",tex:"succeq",ttype:d},{input:"'",tag:"mo",output:"\u2032",tex:"prime",ttype:d},{input:"arcsin",tag:"mi",output:"arcsin",tex:null,ttype:G,func:true},{input:"arccos",tag:"mi",output:"arccos",tex:null,ttype:G,func:true},{input:"arctan",tag:"mi",output:"arctan",tex:null,ttype:G,func:true},{input:"coth",tag:"mi",output:"coth",tex:null,ttype:G,func:true},{input:"sech",tag:"mi",output:"sech",tex:null,ttype:G,func:true},{input:"csch",tag:"mi",output:"csch",tex:null,ttype:G,func:true},{input:"abs",tag:"mi",output:"abs",tex:null,ttype:G,func:true},{input:"exp",tag:"mi",output:"exp",tex:null,ttype:G,func:true},{input:"tilde",tag:"mover",output:"~",tex:null,ttype:G,acc:true});ae.Augment({AM:{Init:function(){s=ae.config.displaystyle;decimal=ae.config.decimal;D();u()},Augment:function(ag){for(var ah in ag){if(ag.hasOwnProperty(ah)){switch(ah){case"displaystyle":s=ag[ah];break;case"decimal":decimal=ag[ah];break;case"parseMath":e=ag[ah];break;case"parseExpr":v=ag[ah];break;case"parseIexpr":y=ag[ah];break;case"parseSexpr":K=ag[ah];break;case"removeBrackets":S=ag[ah];break;case"getSymbol":m=ag[ah];break;case"position":c=ag[ah];break;case"removeCharsAndBlanks":t=ag[ah];break;case"createMmlNode":L=ag[ah];break;case"createElementMathML":Q=ag[ah];break;case"createElementXHTML":U=ag[ah];break;case"initSymbols":u=ag[ah];break;case"compareNames":comareNames=ag[ah];break}this[ah]=ag[ah]}}},parseMath:e,parseExpr:v,parseIexpr:y,parseSexr:K,removeBrackets:S,getSymbol:m,position:c,removeCharsAndBlanks:t,createMmlNode:L,createElementMathML:Q,createElementXHTML:U,initSymbols:u,compareNames:V,createDocumentFragment:Z,document:g,define:A,symbols:F,names:T,TOKEN:{CONST:d,UNARY:G,BINARY:W,INFIX:l,LEFTBRACKET:b,RIGHTBRACKET:k,SPACE:a,UNDEROVER:O,DEFINITION:Y,LEFTRIGHT:q,TEXT:aa}}});var ac=[R,N];ac=null})(MathJax.InputJax.AsciiMath);(function(b){var a;b.Augment({sourceMenuTitle:"AsciiMath Input",prefilterHooks:MathJax.Callback.Hooks(true),postfilterHooks:MathJax.Callback.Hooks(true),Translate:function(c){var d,f=c.innerHTML.replace(/^\s+/,"").replace(/\s+$/,"");var g={math:f,script:c};this.prefilterHooks.Execute(g);f=g.math;try{d=this.AM.parseMath(f)}catch(e){if(!e.asciimathError){throw e}d=this.formatError(e,f)}g.math=a(d);this.postfilterHooks.Execute(g);return g.math},formatError:function(f,e,c){var d=f.message.replace(/\n.*/,"");MathJax.Hub.signal.Post(["AsciiMath Jax - parse error",d,e,c]);return a.merror(d)},Error:function(c){throw MathJax.Hub.Insert(Error(c),{asciimathError:true})},Startup:function(){a=MathJax.ElementJax.mml;this.AM.Init()}});b.loadComplete("jax.js")})(MathJax.InputJax.AsciiMath); diff --git a/unpacked/jax/input/AsciiMath/jax.js b/unpacked/jax/input/AsciiMath/jax.js index 0f5cb7e54..b8e372b28 100644 --- a/unpacked/jax/input/AsciiMath/jax.js +++ b/unpacked/jax/input/AsciiMath/jax.js @@ -77,7 +77,8 @@ this.childNodes[i] = node; node.nextSibling = old.nextSibling; old.nextSibling = old.parent = null; return old; - } + }, + toString: function () {return "{"+this.childNodes.join("")+"}"} }); var INITASCIIMATH = function () { @@ -101,7 +102,12 @@ }, appendChild: function (node) { if (node.parent) {node.parent.removeChild(node)} - var nodes = arguments; if (node.isa(DOCFRAG)) {nodes = node.childNodes} + var nodes = arguments; + if (node.isa(DOCFRAG)) { + nodes = node.childNodes; + node.data = node.childNodes = []; + node.firstChild = node.lastChild = null; + } for (var i = 0, m = nodes.length; i < m; i++) { node = nodes[i]; if (this.lastChild) {this.lastChild.nextSibling = node} From 5f74ca0380e403c8a3c0126e0fdc0156707adb74 Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Wed, 18 Jan 2012 11:45:14 -0500 Subject: [PATCH 5/5] Allow start and stop delimiters to be different, and add configuration blocks for AsciiMath and asciimath2jax to the default.js configuration --- config/default.js | 86 ++++++++++++++++++++++++++++ extensions/asciimath2jax.js | 2 +- unpacked/config/default.js | 86 ++++++++++++++++++++++++++++ unpacked/extensions/asciimath2jax.js | 16 +++--- 4 files changed, 181 insertions(+), 9 deletions(-) diff --git a/config/default.js b/config/default.js index 25523b4fd..ff09ffe21 100644 --- a/config/default.js +++ b/config/default.js @@ -299,6 +299,71 @@ MathJax.Hub.Config({ }, + //============================================================================ + // + // These parameters control the asciimath2jax preprocessor (when you have included + // "asciimath2jax.js" in the extensions list above). + // + asciimath2jax: { + + // + // The delimiters that surround asciimath expressions. The first in each + // pair is the initial delimiter and the second is the terminal delimiter. + // + delimiters: [ + ['`','`'] + ], + + // + // This array lists the names of the tags whose contents should not be + // processed by asciimath2jax (other than to look for ignore/process classes + // as listed below). You can add to (or remove from) this list to prevent + // MathJax from processing mathematics in specific contexts. + // + skipTags: ["script","noscript","style","textarea","pre","code"], + + // + // This is the class name used to mark elements whose contents should + // not be processed by asciimath2jax (other than to look for the + // processClass pattern below). Note that this is a regular + // expression, and so you need to be sure to quote any regexp special + // characters. The pattern is automatically preceeded by '(^| )(' and + // followed by ')( |$)', so your pattern will have to match full words + // in the class name. Assigning an element this class name will + // prevent `asciimath2jax` from processing its contents. + // + ignoreClass: "asciimath2jax_ignore", + + // + // This is the class name used to mark elements whose contents SHOULD + // be processed by asciimath2jax. This is used to turn on processing + // within tags that have been marked as ignored or skipped above. + // Note that this is a regular expression, and so you need to be sure + // to quote any regexp special characters. The pattern is + // automatically preceeded by '(^| )(' and followed by ')( |$)', so + // your pattern will have to match full words in the class name. Use + // this to restart processing within an element that has been marked + // as ignored above. + // + processClass: "asciimath2jax_process", + + // Controls whether asciimath2jax inserts MathJax_Preview spans to make a + // preview available, and what preview to use, when it locates in-line + // and display mathetics on the page. The default is "AsciiMath", which + // means use the AsciiMath code as the preview (until it is processed by + // MathJax). Set to "none" to prevent the previews from being + // inserted (the math will simply disappear until it is typeset). Set + // to an array containing the description of an HTML snippet in order + // to use the same preview for all equations on the page (e.g., you + // could have it say "[math]" or load an image). + // + // E.g., preview: ["[math]"], + // or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]] + // + preview: "AsciiMath" + + }, + //============================================================================ // // These parameters control the mml2jax preprocessor (when you have included @@ -404,6 +469,27 @@ MathJax.Hub.Config({ }, + //============================================================================ + // + // These parameters control the AsciiMath inupt jax. + // + AasciiMath: { + // + // Determines whether limits are placed above and below operators, + // or next to them. (AsciiMath doesn't have separate in-line and + // display modes like TeX and MathML do, so this is the only control + // you have over its output) + // + displaystyle: true, + + // + // The character to use for decimal places when scanning for a number. + // If you change it to ,, beware of things like "(1,2)" which would need + // to be changed to "(1, 2)" to be parsed correctly. + // + decimal: "." + }, + //============================================================================ // // These parameters control the MathML inupt jax. diff --git a/extensions/asciimath2jax.js b/extensions/asciimath2jax.js index 88b604498..86cffe7a9 100644 --- a/extensions/asciimath2jax.js +++ b/extensions/asciimath2jax.js @@ -12,5 +12,5 @@ * http://www.apache.org/licenses/LICENSE-2.0 */ -MathJax.Extension.asciimath2jax={version:"1.0",config:{delimiters:["`"],skipTags:["script","noscript","style","textarea","pre","code"],ignoreClass:"asciimath2jax_ignore",processClass:"asciimath2jax_process",preview:"AsciiMath"},PreProcess:function(a){if(!this.configured){this.config=MathJax.Hub.CombineConfig("asciimath2jax",this.config);if(this.config.Augment){MathJax.Hub.Insert(this,this.config.Augment)}this.configured=true}if(typeof(a)==="string"){a=document.getElementById(a)}if(!a){a=document.body}if(this.createPatterns()){this.scanElement(a,a.nextSibling)}},createPatterns:function(){var d=[],c,a,b=this.config;this.match={};if(b.delimiters.length===0){return false}for(c=0,a=b.delimiters.length;c