Merge branch v2.0-candidate with SVG
This commit is contained in:
commit
1eb58f429e
.gitignoreMathJax.js
config
Accessible-full.jsAccessible.jsMML_HTMLorMML-full.jsMML_HTMLorMML.jsMMLorHTML.jsTeX-AMS-MML_HTMLorMML-full.jsTeX-AMS-MML_HTMLorMML.jsTeX-AMS_HTML-full.jsTeX-AMS_HTML.jsdefault.js
extensions
jax
test
unpacked
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -1,2 +1,6 @@
|
|||
.DS_Store
|
||||
docs/build/html-mathjax-site
|
||||
config/local/*.js
|
||||
!config/local/local.js
|
||||
unpacked/config/local/*.js
|
||||
!unpacked/config/local/local.js
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -12,5 +12,5 @@
|
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
|
||||
(function(c){var h="1.1.1";var a=MathJax.Hub.CombineConfig("MMLorHTML",{prefer:{MSIE:"MML",Firefox:"MML",Opera:"HTML",other:"HTML"}});var e={Firefox:3,Opera:9.52,MSIE:6,Chrome:0.3,Safari:2,Konqueror:4};var b=(c.Browser.version==="0.0"||c.Browser.versionAtLeast(e[c.Browser]||0));var g=false;try{new ActiveXObject("MathPlayer.Factory.1");g=true}catch(f){}var d=(c.Browser.isFirefox&&c.Browser.versionAtLeast("1.5"))||(c.Browser.isMSIE&&g)||(c.Browser.isOpera&&c.Browser.versionAtLeast("9.52"));c.Register.StartupHook("End Config",function(){var i=(a.prefer&&typeof(a.prefer)==="object"?a.prefer[MathJax.Hub.Browser]||a.prefer.other||"HTML":a.prefer);if(b||d){if(d&&(i==="MML"||!b)){if(MathJax.OutputJax.NativeMML){MathJax.OutputJax.NativeMML.Register("jax/mml")}else{c.config.jax.unshift("output/NativeMML")}c.Startup.signal.Post("NativeMML output selected")}else{if(MathJax.OutputJax["HTML-CSS"]){MathJax.OutputJax["HTML-CSS"].Register("jax/mml")}else{c.config.jax.unshift("output/HTML-CSS")}c.Startup.signal.Post("HTML-CSS output selected")}}else{c.PreProcess.disabled=true;c.prepareScripts.disabled=true;MathJax.Message.Set("Your browser does not support MathJax",null,4000);c.Startup.signal.Post("MathJax not supported")}})})(MathJax.Hub);MathJax.Ajax.loadComplete("[MathJax]/config/MMLorHTML.js");
|
||||
(function(c){var h="1.1.1";var a=MathJax.Hub.CombineConfig("MMLorHTML",{prefer:{MSIE:"MML",Firefox:"MML",Opera:"HTML",other:"HTML"}});var e={Firefox:3,Opera:9.52,MSIE:6,Chrome:0.3,Safari:2,Konqueror:4};var b=(c.Browser.version==="0.0"||c.Browser.versionAtLeast(e[c.Browser]||0));var g=false;try{new ActiveXObject("MathPlayer.Factory.1");g=true}catch(f){}var d=(c.Browser.isFirefox&&c.Browser.versionAtLeast("1.5"))||(c.Browser.isMSIE&&g)||(c.Browser.isSafari&&c.Browser.versionAtLeast("5.0"))||(c.Browser.isOpera&&c.Browser.versionAtLeast("9.52"));c.Register.StartupHook("End Config",function(){var i=(a.prefer&&typeof(a.prefer)==="object"?a.prefer[MathJax.Hub.Browser]||a.prefer.other||"HTML":a.prefer);if(b||d){if(d&&(i==="MML"||!b)){if(MathJax.OutputJax.NativeMML){MathJax.OutputJax.NativeMML.Register("jax/mml")}else{c.config.jax.unshift("output/NativeMML")}c.Startup.signal.Post("NativeMML output selected")}else{if(MathJax.OutputJax["HTML-CSS"]){MathJax.OutputJax["HTML-CSS"].Register("jax/mml")}else{c.config.jax.unshift("output/HTML-CSS")}c.Startup.signal.Post("HTML-CSS output selected")}}else{c.PreProcess.disabled=true;c.prepareScripts.disabled=true;MathJax.Message.Set("Your browser does not support MathJax",null,4000);c.Startup.signal.Post("MathJax not supported")}})})(MathJax.Hub);MathJax.Ajax.loadComplete("[MathJax]/config/MMLorHTML.js");
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -62,9 +62,8 @@ MathJax.Hub.Config({
|
|||
//
|
||||
// Example:
|
||||
// styles: {
|
||||
// ".MathJax .merror": {
|
||||
// color: "blue",
|
||||
// "background-color": "green"
|
||||
// ".MathJax_Preview": {
|
||||
// color: "#888"
|
||||
// }
|
||||
// },
|
||||
//
|
||||
|
@ -215,6 +214,19 @@ MathJax.Hub.Config({
|
|||
['\\[','\\]']
|
||||
],
|
||||
|
||||
//
|
||||
// This value determines whether tex2jax requires braces to be
|
||||
// balanced within math delimiters (which allows for nested dollar
|
||||
// signs). Set to false to get pre-v2.0 compatibility. When true,
|
||||
//
|
||||
// $y = x^2 \hbox{ when $x > 2$}$.
|
||||
//
|
||||
// will be properly handled as a single expression. When false, it
|
||||
// would be interpreted as two searpate expressions, each with
|
||||
// improperly balanced braces.
|
||||
//
|
||||
balanceBraces: true,
|
||||
|
||||
//
|
||||
// This array lists the names of the tags whose contents should not be
|
||||
// processed by tex2jax (other than to look for ignore/process classes
|
||||
|
@ -528,9 +540,9 @@ MathJax.Hub.Config({
|
|||
//
|
||||
// Example:
|
||||
// styles: {
|
||||
// ".MathJax_Preview": {
|
||||
// "font-size": "80%", // preview uses a smaller font
|
||||
// color: "red" // and is in red
|
||||
// ".MathJax .merror": {
|
||||
// color: "#CC0000",
|
||||
// border: "1px solid #CC0000"
|
||||
// }
|
||||
// }
|
||||
//
|
||||
|
|
16
extensions/HTML-CSS/handle-floats.js
Normal file
16
extensions/HTML-CSS/handle-floats.js
Normal file
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* /MathJax/extensions/HTML-CSS/handle-floats.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.Hub.Config({"HTML-CSS":{styles:{".MathJax_Display":{display:"table-cell",padding:"1em 0 ! important",width:(MathJax.Hub.Browser.isMSIE&&(document.documentMode||0)<8?"100%":"1000em")}}}});MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var a=MathJax.OutputJax["HTML-CSS"],b=a.Translate;a.Augment({Translate:function(c,f){b.call(this,c,f);if(c.MathJax.elementJax.HTMLCSS.display){var e=c.nextSibling;if(!e||e.className!=="MathJax_MSIE_Separator"){var d=a.Element("span",{className:"MathJax_MSIE_Separator"});c.parentNode.insertBefore(d,e)}}}});MathJax.Hub.Startup.signal.Post("HTML-CSS handle-floats Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/HTML-CSS/handle-floats.js");
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -12,5 +12,5 @@
|
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
|
||||
MathJax.Extension["TeX/bbox"]={version:"1.1"};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.InputJax.TeX,a=MathJax.ElementJax.mml;b.Definitions.macros.bbox="BBox";b.Parse.Augment({BBox:function(e){var n=this.GetBrackets(e),m=this.ParseArg(e);var j=n.split(/,/),g,d,c;for(var k in j){var f=j[k].replace(/^\s+/,"").replace(/\s+$/,"");var l=f.match(/^(\.\d+|\d+(\.\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);if(l){var h=l[1]+l[3];if(g){b.Error("Padding specified twice in "+e)}g={height:"+"+h,depth:"+"+h,lspace:h,width:"+"+(2*l[1])+l[3]}}else{if(f.match(/^([a-z0-9]+|\#[0-9a-f]{6}|\#[0-9a-f]{3})$/i)){if(d){b.Error("Background specified twice in "+e)}d=f}else{if(f.match(/^[-a-z]+:/i)){if(c){b.Error("Style specified twice in "+e)}c=f}else{if(f!==""){b.Error("'"+f+"' doesn't look like a color, a padding dimension, or a style")}}}}}if(g){m=a.mpadded(m).With(g)}if(d||c){m=a.mstyle(m).With({mathbackground:d,style:c})}this.Push(m)}});MathJax.Hub.Startup.signal.Post("TeX bbox Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/bbox.js");
|
||||
MathJax.Extension["TeX/bbox"]={version:"1.1"};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.InputJax.TeX,a=MathJax.ElementJax.mml;b.Definitions.macros.bbox="BBox";b.Parse.Augment({BBox:function(e){var n=this.GetBrackets(e,""),m=this.ParseArg(e);var j=n.split(/,/),g,d,c;for(var k in j){var f=j[k].replace(/^\s+/,"").replace(/\s+$/,"");var l=f.match(/^(\.\d+|\d+(\.\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);if(l){var h=l[1]+l[3];if(g){b.Error("Padding specified twice in "+e)}g={height:"+"+h,depth:"+"+h,lspace:h,width:"+"+(2*l[1])+l[3]}}else{if(f.match(/^([a-z0-9]+|\#[0-9a-f]{6}|\#[0-9a-f]{3})$/i)){if(d){b.Error("Background specified twice in "+e)}d=f}else{if(f.match(/^[-a-z]+:/i)){if(c){b.Error("Style specified twice in "+e)}c=f}else{if(f!==""){b.Error("'"+f+"' doesn't look like a color, a padding dimension, or a style")}}}}}if(g){m=a.mpadded(m).With(g)}if(d||c){m=a.mstyle(m).With({mathbackground:d,style:c})}this.Push(m)}});MathJax.Hub.Startup.signal.Post("TeX bbox Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/bbox.js");
|
||||
|
||||
|
|
|
@ -12,5 +12,5 @@
|
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
|
||||
MathJax.Extension["TeX/cancel"]={version:"1.1",ALLOWED:{arrow:1,color:1,mathcolor:1,background:1,mathbackground:1,padding:1,thickness:1}};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var d=MathJax.InputJax.TeX,c=d.Definitions.macros,a=MathJax.ElementJax.mml,b=MathJax.Extension["TeX/cancel"];b.setAttributes=function(j,f){if(f!==""){f=f.replace(/ /g,"").split(/,/);for(var h=0,e=f.length;h<e;h++){var g=f[h].split(/[:=]/);if(b.ALLOWED[g[0]]){if(g[1]==="true"){g[1]=true}if(g[1]==="false"){g[1]=false}j[g[0]]=g[1]}}}return j};c.cancel=["Cancel",a.NOTATION.UPDIAGONALSTRIKE];c.bcancel=["Cancel",a.NOTATION.DOWNDIAGONALSTRIKE];c.xcancel=["Cancel",a.NOTATION.UPDIAGONALSTRIKE+" "+a.NOTATION.DOWNDIAGONALSTRIKE];c.cancelto="CancelTo";d.Parse.Augment({Cancel:function(f,h){var e=this.GetBrackets(f),g=this.ParseArg(f);var i=b.setAttributes({notation:h},e);this.Push(a.menclose(g).With(i))},CancelTo:function(f,h){var j=this.ParseArg(f),e=this.GetBrackets(f),g=this.ParseArg(f);var i=b.setAttributes({notation:a.NOTATION.UPDIAGONALSTRIKE,arrow:true},e);j=a.mpadded(j).With({depth:"-.1em",height:"+.1em",voffset:".1em"});this.Push(a.msup(a.menclose(g).With(i),j))}});MathJax.Hub.Startup.signal.Post("TeX cancel Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/cancel.js");
|
||||
MathJax.Extension["TeX/cancel"]={version:"1.1",ALLOWED:{arrow:1,color:1,mathcolor:1,background:1,mathbackground:1,padding:1,thickness:1}};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var d=MathJax.InputJax.TeX,c=d.Definitions.macros,a=MathJax.ElementJax.mml,b=MathJax.Extension["TeX/cancel"];b.setAttributes=function(j,f){if(f!==""){f=f.replace(/ /g,"").split(/,/);for(var h=0,e=f.length;h<e;h++){var g=f[h].split(/[:=]/);if(b.ALLOWED[g[0]]){if(g[1]==="true"){g[1]=true}if(g[1]==="false"){g[1]=false}j[g[0]]=g[1]}}}return j};c.cancel=["Cancel",a.NOTATION.UPDIAGONALSTRIKE];c.bcancel=["Cancel",a.NOTATION.DOWNDIAGONALSTRIKE];c.xcancel=["Cancel",a.NOTATION.UPDIAGONALSTRIKE+" "+a.NOTATION.DOWNDIAGONALSTRIKE];c.cancelto="CancelTo";d.Parse.Augment({Cancel:function(f,h){var e=this.GetBrackets(f,""),g=this.ParseArg(f);var i=b.setAttributes({notation:h},e);this.Push(a.menclose(g).With(i))},CancelTo:function(f,h){var j=this.ParseArg(f),e=this.GetBrackets(f,""),g=this.ParseArg(f);var i=b.setAttributes({notation:a.NOTATION.UPDIAGONALSTRIKE,arrow:true},e);j=a.mpadded(j).With({depth:"-.1em",height:"+.1em",voffset:".1em"});this.Push(a.msup(a.menclose(g).With(i),j))}});MathJax.Hub.Startup.signal.Post("TeX cancel Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/cancel.js");
|
||||
|
||||
|
|
|
@ -12,5 +12,5 @@
|
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
|
||||
MathJax.Extension["TeX/enclose"]={version:"1.1",ALLOWED:{arrow:1,color:1,mathcolor:1,background:1,mathbackground:1,padding:1,thickness:1}};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var c=MathJax.InputJax.TeX,a=MathJax.ElementJax.mml,b=MathJax.Extension["TeX/enclose"].ALLOWED;c.Definitions.macros.enclose="Enclose";c.Parse.Augment({Enclose:function(g){var k=this.GetArgument(g),e=this.GetBrackets(g),j=this.ParseArg(g);var l={notation:k.replace(/,/g," ")};if(e!==""){e=e.replace(/ /g,"").split(/,/);for(var h=0,d=e.length;h<d;h++){var f=e[h].split(/[:=]/);if(b[f[0]]){if(f[1]==="true"){f[1]=true}if(f[1]==="false"){f[1]=false}l[f[0]]=f[1]}}}this.Push(a.menclose(j).With(l))}});MathJax.Hub.Startup.signal.Post("TeX enclose Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/enclose.js");
|
||||
MathJax.Extension["TeX/enclose"]={version:"1.1",ALLOWED:{arrow:1,color:1,mathcolor:1,background:1,mathbackground:1,padding:1,thickness:1}};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var c=MathJax.InputJax.TeX,a=MathJax.ElementJax.mml,b=MathJax.Extension["TeX/enclose"].ALLOWED;c.Definitions.macros.enclose="Enclose";c.Parse.Augment({Enclose:function(g){var k=this.GetArgument(g),e=this.GetBrackets(g),j=this.ParseArg(g);var l={notation:k.replace(/,/g," ")};if(e){e=e.replace(/ /g,"").split(/,/);for(var h=0,d=e.length;h<d;h++){var f=e[h].split(/[:=]/);if(b[f[0]]){if(f[1]==="true"){f[1]=true}if(f[1]==="false"){f[1]=false}l[f[0]]=f[1]}}}this.Push(a.menclose(j).With(l))}});MathJax.Hub.Startup.signal.Post("TeX enclose Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/enclose.js");
|
||||
|
||||
|
|
|
@ -12,5 +12,5 @@
|
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
|
||||
MathJax.Extension["TeX/newcommand"]={version:"1.1.2"};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.InputJax.TeX;var a=b.Definitions;a.Add({macros:{newcommand:"NewCommand",renewcommand:"NewCommand",newenvironment:"NewEnvironment",renewenvironment:"NewEnvironment",def:"MacroDef",let:"Let"}},null,true);b.Parse.Augment({NewCommand:function(c){var d=this.trimSpaces(this.GetArgument(c)),f=this.trimSpaces(this.GetBrackets(c)),e=this.GetArgument(c);if(f===""){f=null}if(d.charAt(0)==="\\"){d=d.substr(1)}if(!d.match(/^(.|[a-z]+)$/i)){b.Error("Illegal control sequence name for "+c)}if(f!=null&&!f.match(/^[0-9]+$/)){b.Error("Illegal number of parameters specified in "+c)}this.setDef(d,["Macro",e,f])},NewEnvironment:function(d){var e=this.trimSpaces(this.GetArgument(d)),g=this.trimSpaces(this.GetBrackets(d)),f=this.GetArgument(d),c=this.GetArgument(d);if(g===""){g=null}if(g!=null&&!g.match(/^[0-9]+$/)){b.Error("Illegal number of parameters specified in "+d)}this.setEnv(e,["BeginEnv","EndEnv",f,c,g])},MacroDef:function(c){var d=this.GetCSname(c),f=this.GetTemplate(c,"\\"+d),e=this.GetArgument(c);if(!(f instanceof Array)){this.setDef(d,["Macro",e,f])}else{this.setDef(d,["MacroWithTemplate",e].concat(f))}},Let:function(d){var e=this.GetCSname(d),f;var g=this.GetNext();if(g==="="){this.i++;g=this.GetNext()}if(g==="\\"){d=this.GetCSname(d);f=this.csFindMacro(d);if(!f){if(a.mathchar0mi[d]){f=["csMathchar0mi",a.mathchar0mi[d]]}else{if(a.mathchar0mo[d]){f=["csMathchar0mo",a.mathchar0mo[d]]}else{if(a.mathchar7[d]){f=["csMathchar7",a.mathchar7[d]]}else{if(a.delimiter["\\"+d]!=null){f=["csDelimiter",a.delimiter["\\"+d]]}}}}}}else{f=["Macro",g];this.i++}this.setDef(e,f)},setDef:function(c,d){d.isUser=true;a.macros[c]=d},setEnv:function(c,d){d.isUser=true;a.environment[c]=d},GetCSname:function(e){var f=this.GetNext();if(f!=="\\"){b.Error("\\ must be followed by a control sequence")}var d=this.trimSpaces(this.GetArgument(e));return d.substr(1)},GetTemplate:function(f,e){var j,g=[],h=0;j=this.GetNext();var d=this.i;while(this.i<this.string.length){j=this.GetNext();if(j==="#"){if(d!==this.i){g[h]=this.string.substr(d,this.i-d)}j=this.string.charAt(++this.i);if(!j.match(/^[1-9]$/)){b.Error("Illegal use of # in template for "+e)}if(parseInt(j)!=++h){b.Error("Parameters for "+e+" must be numbered sequentially")}d=this.i+1}else{if(j==="{"){if(d!==this.i){g[h]=this.string.substr(d,this.i-d)}if(g.length>0){return[h,g]}else{return h}}}this.i++}b.Error("Missing replacement string for definition of "+f)},MacroWithTemplate:function(d,g,h,f){if(h){var c=[];this.GetNext();if(f[0]&&!this.MatchParam(f[0])){b.Error("Use of "+d+" doesn't match its definition")}for(var e=0;e<h;e++){c.push(this.GetParameter(d,f[e+1]))}g=this.SubstituteArgs(c,g)}this.string=this.AddArgs(g,this.string.slice(this.i));this.i=0;if(++this.macroCount>b.config.MAXMACROS){b.Error("MathJax maximum macro substitution count exceeded; is there a recursive macro call?")}},BeginEnv:function(f,h,c,g){if(g){var d=[];for(var e=0;e<g;e++){d.push(this.GetArgument("\\begin{"+name+"}"))}h=this.SubstituteArgs(d,h);c=this.SubstituteArgs(d,c)}f.edef=c;this.string=this.AddArgs(h,this.string.slice(this.i));this.i=0;return f},EndEnv:function(c,d){this.string=this.AddArgs(c.edef,this.string.slice(this.i));this.i=0;return d},GetParameter:function(d,g){if(g==null){return this.GetArgument(d)}var f=this.i,c=0,e=0;while(this.i<this.string.length){if(this.string.charAt(this.i)==="{"){if(this.i===f){e=1}this.GetArgument(d);c=this.i-f}else{if(this.MatchParam(g)){if(e){f++;c-=2}return this.string.substr(f,c)}else{this.i++;c++;e=0}}}b.Error("Runaway argument for "+d+"?")},MatchParam:function(c){if(this.string.substr(this.i,c.length)!==c){return 0}this.i+=c.length;return 1}});b.Environment=function(c){a.environment[c]=["BeginEnv","EndEnv"].concat([].slice.call(arguments,1));a.environment[c].isUser=true};MathJax.Hub.Startup.signal.Post("TeX newcommand Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/newcommand.js");
|
||||
MathJax.Extension["TeX/newcommand"]={version:"1.1.2"};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.InputJax.TeX;var a=b.Definitions;a.Add({macros:{newcommand:"NewCommand",renewcommand:"NewCommand",newenvironment:"NewEnvironment",renewenvironment:"NewEnvironment",def:"MacroDef",let:"Let"}},null,true);b.Parse.Augment({NewCommand:function(c){var e=this.trimSpaces(this.GetArgument(c)),g=this.GetBrackets(c),d=this.GetBrackets(c),f=this.GetArgument(c);if(e.charAt(0)==="\\"){e=e.substr(1)}if(!e.match(/^(.|[a-z]+)$/i)){b.Error("Illegal control sequence name for "+c)}if(g){g=this.trimSpaces(g);if(!g.match(/^[0-9]+$/)){b.Error("Illegal number of parameters specified in "+c)}}this.setDef(e,["Macro",f,g,d])},NewEnvironment:function(d){var e=this.trimSpaces(this.GetArgument(d)),g=this.GetBrackets(d),f=this.GetArgument(d),c=this.GetArgument(d);if(g){g=this.trimSpaces(g);if(!g.match(/^[0-9]+$/)){b.Error("Illegal number of parameters specified in "+d)}}this.setEnv(e,["BeginEnv","EndEnv",f,c,g])},MacroDef:function(c){var d=this.GetCSname(c),f=this.GetTemplate(c,"\\"+d),e=this.GetArgument(c);if(!(f instanceof Array)){this.setDef(d,["Macro",e,f])}else{this.setDef(d,["MacroWithTemplate",e].concat(f))}},Let:function(d){var e=this.GetCSname(d),f;var g=this.GetNext();if(g==="="){this.i++;g=this.GetNext()}if(g==="\\"){d=this.GetCSname(d);f=this.csFindMacro(d);if(!f){if(a.mathchar0mi[d]){f=["csMathchar0mi",a.mathchar0mi[d]]}else{if(a.mathchar0mo[d]){f=["csMathchar0mo",a.mathchar0mo[d]]}else{if(a.mathchar7[d]){f=["csMathchar7",a.mathchar7[d]]}else{if(a.delimiter["\\"+d]!=null){f=["csDelimiter",a.delimiter["\\"+d]]}}}}}}else{f=["Macro",g];this.i++}this.setDef(e,f)},setDef:function(c,d){d.isUser=true;a.macros[c]=d},setEnv:function(c,d){d.isUser=true;a.environment[c]=d},GetCSname:function(e){var f=this.GetNext();if(f!=="\\"){b.Error("\\ must be followed by a control sequence")}var d=this.trimSpaces(this.GetArgument(e));return d.substr(1)},GetTemplate:function(f,e){var j,g=[],h=0;j=this.GetNext();var d=this.i;while(this.i<this.string.length){j=this.GetNext();if(j==="#"){if(d!==this.i){g[h]=this.string.substr(d,this.i-d)}j=this.string.charAt(++this.i);if(!j.match(/^[1-9]$/)){b.Error("Illegal use of # in template for "+e)}if(parseInt(j)!=++h){b.Error("Parameters for "+e+" must be numbered sequentially")}d=this.i+1}else{if(j==="{"){if(d!==this.i){g[h]=this.string.substr(d,this.i-d)}if(g.length>0){return[h,g]}else{return h}}}this.i++}b.Error("Missing replacement string for definition of "+f)},MacroWithTemplate:function(d,g,h,f){if(h){var c=[];this.GetNext();if(f[0]&&!this.MatchParam(f[0])){b.Error("Use of "+d+" doesn't match its definition")}for(var e=0;e<h;e++){c.push(this.GetParameter(d,f[e+1]))}g=this.SubstituteArgs(c,g)}this.string=this.AddArgs(g,this.string.slice(this.i));this.i=0;if(++this.macroCount>b.config.MAXMACROS){b.Error("MathJax maximum macro substitution count exceeded; is there a recursive macro call?")}},BeginEnv:function(f,h,c,g){if(g){var d=[];for(var e=0;e<g;e++){d.push(this.GetArgument("\\begin{"+name+"}"))}h=this.SubstituteArgs(d,h);c=this.SubstituteArgs(d,c)}f.edef=c;this.string=this.AddArgs(h,this.string.slice(this.i));this.i=0;return f},EndEnv:function(c,d){this.string=this.AddArgs(c.edef,this.string.slice(this.i));this.i=0;return d},GetParameter:function(d,g){if(g==null){return this.GetArgument(d)}var f=this.i,c=0,e=0;while(this.i<this.string.length){if(this.string.charAt(this.i)==="{"){if(this.i===f){e=1}this.GetArgument(d);c=this.i-f}else{if(this.MatchParam(g)){if(e){f++;c-=2}return this.string.substr(f,c)}else{this.i++;c++;e=0}}}b.Error("Runaway argument for "+d+"?")},MatchParam:function(c){if(this.string.substr(this.i,c.length)!==c){return 0}this.i+=c.length;return 1}});b.Environment=function(c){a.environment[c]=["BeginEnv","EndEnv"].concat([].slice.call(arguments,1));a.environment[c].isUser=true};MathJax.Hub.Startup.signal.Post("TeX newcommand Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/newcommand.js");
|
||||
|
||||
|
|
|
@ -12,5 +12,5 @@
|
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
|
||||
(function(){var c="1.1.1";var a=MathJax.Hub.CombineConfig("TeX.noErrors",{multiLine:true,inlineDelimiters:["",""],style:{"font-size":"80%","text-align":"left",color:"black",padding:"1px 3px",border:"1px solid"}});var b="\u00A0";MathJax.Extension["TeX/noErrors"]={version:c,config:a};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){MathJax.InputJax.TeX.Augment({formatError:function(f,e,g,d){var i=a.inlineDelimiters;var h=(g||a.multiLine);if(!g){e=i[0]+e+i[1]}if(h){e=e.replace(/ /g,b)}else{e=e.replace(/\n/g," ")}return MathJax.ElementJax.mml.merror(e).With({isError:true,multiLine:h})}})});MathJax.Hub.Register.StartupHook("HTML-CSS Jax Config",function(){MathJax.Hub.Config({"HTML-CSS":{styles:{".MathJax .merror":MathJax.Hub.Insert({"font-style":null,"background-color":null,"vertical-align":(MathJax.Hub.Browser.isMSIE&&a.multiLine?"-2px":"")},a.style)}}})})})();MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var a=MathJax.ElementJax.mml;var b=MathJax.OutputJax["HTML-CSS"];var c=a.math.prototype.toHTML;a.math.Augment({toHTML:function(d,e){if(this.data[0]&&this.data[0].data[0]&&this.data[0].data[0].isError){d=this.HTMLcreateSpan(d);d.bbox=this.data[0].data[0].toHTML(d).bbox;return d}return c.call(this,d,e)}});a.merror.Augment({toHTML:function(j){if(!this.isError){return a.mbase.prototype.toHTML.call(this,j)}j=this.HTMLcreateSpan(j);if(this.multiLine){j.style.display="inline-block"}var l=this.data[0].data[0].data.join("").split(/\n/);for(var g=0,e=l.length;g<e;g++){b.addText(j,l[g]);if(g!==e-1){b.addElement(j,"br",{isMathJax:true})}}var n=b.getHD(j.parentNode),d=b.getW(j.parentNode);if(e>1){var k=(n.h+n.d)/2,h=b.TeX.x_height/2;var f=b.config.styles[".MathJax .merror"]["font-size"];if(f&&f.match(/%/)){h*=parseInt(f)/100}j.parentNode.style.verticalAlign=b.Em(n.d+(h-k));n.h=h+k;n.d=k-h}j.bbox={h:n.h,d:n.d,w:d,lw:0,rw:d};return j}});MathJax.Hub.Startup.signal.Post("TeX noErrors Ready")});MathJax.Hub.Register.StartupHook("NativeMML Jax Ready",function(){var b=MathJax.ElementJax.mml;var a=MathJax.Extension["TeX/noErrors"].config;var c=b.math.prototype.toNativeMML;b.math.Augment({toNativeMML:function(d){if(this.data[0]&&this.data[0].data[0]&&this.data[0].data[0].isError){return this.data[0].data[0].toNativeMML(d)}return c.call(this,d)}});b.merror.Augment({toNativeMML:function(g){if(!this.isError){return b.mbase.prototype.toNativeMML.call(this,g)}g=g.appendChild(document.createElement("span"));var h=this.data[0].data[0].data.join("").split(/\n/);for(var f=0,e=h.length;f<e;f++){g.appendChild(document.createTextNode(h[f]));if(f!==e-1){g.appendChild(document.createElement("br"))}}if(this.multiLine){g.style.display="inline-block";if(e>1){g.style.verticalAlign="middle"}}for(var j in a.style){if(a.style.hasOwnProperty(j)){var d=j.replace(/-./g,function(i){return i.charAt(1).toUpperCase()});g.style[d]=a.style[j]}}return g}});MathJax.Hub.Startup.signal.Post("TeX noErrors Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/noErrors.js");
|
||||
(function(){var c="1.1.1";var a=MathJax.Hub.CombineConfig("TeX.noErrors",{multiLine:true,inlineDelimiters:["",""],style:{"font-size":"80%","text-align":"left",color:"black",padding:"1px 3px",border:"1px solid"}});var b="\u00A0";MathJax.Extension["TeX/noErrors"]={version:c,config:a};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){MathJax.InputJax.TeX.Augment({formatError:function(g,f,h,d){var e=g.message.replace(/\n.*/,"");MathJax.Hub.signal.Post(["TeX Jax - parse error",e,f,h,d]);var j=a.inlineDelimiters;var i=(h||a.multiLine);if(!h){f=j[0]+f+j[1]}if(i){f=f.replace(/ /g,b)}else{f=f.replace(/\n/g," ")}return MathJax.ElementJax.mml.merror(f).With({isError:true,multiLine:i})}})});MathJax.Hub.Register.StartupHook("HTML-CSS Jax Config",function(){MathJax.Hub.Config({"HTML-CSS":{styles:{".MathJax .merror":MathJax.Hub.Insert({"font-style":null,"background-color":null,"vertical-align":(MathJax.Hub.Browser.isMSIE&&a.multiLine?"-2px":"")},a.style)}}})})})();MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var a=MathJax.ElementJax.mml;var b=MathJax.OutputJax["HTML-CSS"];var c=a.math.prototype.toHTML;a.math.Augment({toHTML:function(d,e){if(this.data[0]&&this.data[0].data[0]&&this.data[0].data[0].isError){d=this.HTMLcreateSpan(d);d.bbox=this.data[0].data[0].toHTML(d).bbox;return d}return c.call(this,d,e)}});a.merror.Augment({toHTML:function(j){if(!this.isError){return a.mbase.prototype.toHTML.call(this,j)}j=this.HTMLcreateSpan(j);if(this.multiLine){j.style.display="inline-block"}var l=this.data[0].data[0].data.join("").split(/\n/);for(var g=0,e=l.length;g<e;g++){b.addText(j,l[g]);if(g!==e-1){b.addElement(j,"br",{isMathJax:true})}}var n=b.getHD(j.parentNode),d=b.getW(j.parentNode);if(e>1){var k=(n.h+n.d)/2,h=b.TeX.x_height/2;var f=b.config.styles[".MathJax .merror"]["font-size"];if(f&&f.match(/%/)){h*=parseInt(f)/100}j.parentNode.style.verticalAlign=b.Em(n.d+(h-k));n.h=h+k;n.d=k-h}j.bbox={h:n.h,d:n.d,w:d,lw:0,rw:d};return j}});MathJax.Hub.Startup.signal.Post("TeX noErrors Ready")});MathJax.Hub.Register.StartupHook("NativeMML Jax Ready",function(){var b=MathJax.ElementJax.mml;var a=MathJax.Extension["TeX/noErrors"].config;var c=b.math.prototype.toNativeMML;b.math.Augment({toNativeMML:function(d){if(this.data[0]&&this.data[0].data[0]&&this.data[0].data[0].isError){return this.data[0].data[0].toNativeMML(d)}return c.call(this,d)}});b.merror.Augment({toNativeMML:function(g){if(!this.isError){return b.mbase.prototype.toNativeMML.call(this,g)}g=g.appendChild(document.createElement("span"));var h=this.data[0].data[0].data.join("").split(/\n/);for(var f=0,e=h.length;f<e;f++){g.appendChild(document.createTextNode(h[f]));if(f!==e-1){g.appendChild(document.createElement("br"))}}if(this.multiLine){g.style.display="inline-block";if(e>1){g.style.verticalAlign="middle"}}for(var j in a.style){if(a.style.hasOwnProperty(j)){var d=j.replace(/-./g,function(i){return i.charAt(1).toUpperCase()});g.style[d]=a.style[j]}}return g}});MathJax.Hub.Startup.signal.Post("TeX noErrors Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/noErrors.js");
|
||||
|
||||
|
|
|
@ -12,5 +12,5 @@
|
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
|
||||
MathJax.Extension["TeX/noUndefined"]={version:"1.1",config:MathJax.Hub.CombineConfig("TeX.noUndefined",{attributes:{mathcolor:"red"}})};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.Extension["TeX/noUndefined"].config;var a=MathJax.ElementJax.mml;MathJax.InputJax.TeX.Parse.Augment({csUndefined:function(c){this.Push(a.mtext(c).With(b.attributes))}});MathJax.Hub.Startup.signal.Post("TeX noUndefined Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/noUndefined.js");
|
||||
MathJax.Extension["TeX/noUndefined"]={version:"1.1",config:MathJax.Hub.CombineConfig("TeX.noUndefined",{attributes:{mathcolor:"red"}})};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.Extension["TeX/noUndefined"].config;var a=MathJax.ElementJax.mml;MathJax.InputJax.TeX.Parse.Augment({csUndefined:function(c){MathJax.Hub.signal.Post(["TeX Jax - undefined control sequence",c]);this.Push(a.mtext(c).With(b.attributes))}});MathJax.Hub.Startup.signal.Post("TeX noUndefined Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/noUndefined.js");
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -12,5 +12,5 @@
|
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
|
||||
MathJax.OutputJax["HTML-CSS"]=MathJax.OutputJax({id:"HTML-CSS",version:"1.1.15",directory:MathJax.OutputJax.directory+"/HTML-CSS",extensionDir:MathJax.OutputJax.extensionDir+"/HTML-CSS",autoloadDir:MathJax.OutputJax.directory+"/HTML-CSS/autoload",fontDir:MathJax.OutputJax.directory+"/HTML-CSS/fonts",webfontDir:MathJax.OutputJax.fontDir+"/HTML-CSS",config:{scale:100,minScaleAdjust:50,availableFonts:["STIX","TeX"],preferredFont:"TeX",webFont:"TeX",imageFont:"TeX",undefinedFamily:"STIXGeneral,'Arial Unicode MS',serif",mtextFontInherit:false,EqnChunk:50,EqnChunkFactor:1.5,EqChunkDelay:100,linebreaks:{automatic:false,width:"container"},styles:{".MathJax_Display":{"text-align":"center",margin:"1em 0em"},".MathJax .merror":{"background-color":"#FFFF88",color:"#CC0000",border:"1px solid #CC0000",padding:"1px 3px","font-style":"normal","font-size":"90%"},".MathJax_Preview":{color:"#888888"},"#MathJax_Tooltip":{"background-color":"InfoBackground",color:"InfoText",border:"1px solid black","box-shadow":"2px 2px 5px #AAAAAA","-webkit-box-shadow":"2px 2px 5px #AAAAAA","-moz-box-shadow":"2px 2px 5px #AAAAAA","-khtml-box-shadow":"2px 2px 5px #AAAAAA",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')",padding:"3px 4px"}}}});if(MathJax.Hub.Browser.isMSIE&&document.documentMode>=9){delete MathJax.OutputJax["HTML-CSS"].config.styles["#MathJax_Tooltip"].filter}if(!MathJax.Hub.config.delayJaxRegistration){MathJax.OutputJax["HTML-CSS"].Register("jax/mml")}MathJax.Hub.Register.StartupHook("End Config",[function(b,c){var a=b.Insert({minBrowserVersion:{Firefox:3,Opera:9.52,MSIE:6,Chrome:0.3,Safari:2,Konqueror:4},inlineMathDelimiters:["$","$"],displayMathDelimiters:["$$","$$"],multilineDisplay:true,minBrowserTranslate:function(f){var e=b.getJaxFor(f),k=["[Math]"],j;var h=document.createElement("span",{className:"MathJax_Preview"});if(e.inputJax==="TeX"){if(e.root.Get("displaystyle")){j=a.displayMathDelimiters;k=[j[0]+e.originalText+j[1]];if(a.multilineDisplay){k=k[0].split(/\n/)}}else{j=a.inlineMathDelimiters;k=[j[0]+e.originalText.replace(/^\s+/,"").replace(/\s+$/,"")+j[1]]}}for(var g=0,d=k.length;g<d;g++){h.appendChild(document.createTextNode(k[g]));if(g<d-1){h.appendChild(document.createElement("br"))}}f.parentNode.insertBefore(h,f)}},(b.config["HTML-CSS"]||{}));if(b.Browser.version!=="0.0"&&!b.Browser.versionAtLeast(a.minBrowserVersion[b.Browser]||0)){c.Translate=a.minBrowserTranslate;b.Config({showProcessingMessages:false});MathJax.Message.Set("Your browser does not support MathJax",null,4000);b.Startup.signal.Post("MathJax not supported")}},MathJax.Hub,MathJax.OutputJax["HTML-CSS"]]);MathJax.OutputJax["HTML-CSS"].loadComplete("config.js");
|
||||
MathJax.OutputJax["HTML-CSS"]=MathJax.OutputJax({id:"HTML-CSS",version:"1.1.15",directory:MathJax.OutputJax.directory+"/HTML-CSS",extensionDir:MathJax.OutputJax.extensionDir+"/HTML-CSS",autoloadDir:MathJax.OutputJax.directory+"/HTML-CSS/autoload",fontDir:MathJax.OutputJax.directory+"/HTML-CSS/fonts",webfontDir:MathJax.OutputJax.fontDir+"/HTML-CSS",config:{scale:100,minScaleAdjust:50,availableFonts:["STIX","TeX"],preferredFont:"TeX",webFont:"TeX",imageFont:"TeX",undefinedFamily:"STIXGeneral,'Arial Unicode MS',serif",mtextFontInherit:false,EqnChunk:50,EqnChunkFactor:1.5,EqChunkDelay:100,linebreaks:{automatic:false,width:"container"},styles:{".MathJax_Display":{"text-align":"center",margin:"1em 0em"},".MathJax .merror":{"background-color":"#FFFF88",color:"#CC0000",border:"1px solid #CC0000",padding:"1px 3px","font-style":"normal","font-size":"90%"},"#MathJax_Tooltip":{"background-color":"InfoBackground",color:"InfoText",border:"1px solid black","box-shadow":"2px 2px 5px #AAAAAA","-webkit-box-shadow":"2px 2px 5px #AAAAAA","-moz-box-shadow":"2px 2px 5px #AAAAAA","-khtml-box-shadow":"2px 2px 5px #AAAAAA",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')",padding:"3px 4px"}}}});if(MathJax.Hub.Browser.isMSIE&&document.documentMode>=9){delete MathJax.OutputJax["HTML-CSS"].config.styles["#MathJax_Tooltip"].filter}if(!MathJax.Hub.config.delayJaxRegistration){MathJax.OutputJax["HTML-CSS"].Register("jax/mml")}MathJax.Hub.Register.StartupHook("End Config",[function(b,c){var a=b.Insert({minBrowserVersion:{Firefox:3,Opera:9.52,MSIE:6,Chrome:0.3,Safari:2,Konqueror:4},inlineMathDelimiters:["$","$"],displayMathDelimiters:["$$","$$"],multilineDisplay:true,minBrowserTranslate:function(f){var e=b.getJaxFor(f),k=["[Math]"],j;var h=document.createElement("span",{className:"MathJax_Preview"});if(e.inputJax==="TeX"){if(e.root.Get("displaystyle")){j=a.displayMathDelimiters;k=[j[0]+e.originalText+j[1]];if(a.multilineDisplay){k=k[0].split(/\n/)}}else{j=a.inlineMathDelimiters;k=[j[0]+e.originalText.replace(/^\s+/,"").replace(/\s+$/,"")+j[1]]}}for(var g=0,d=k.length;g<d;g++){h.appendChild(document.createTextNode(k[g]));if(g<d-1){h.appendChild(document.createElement("br"))}}f.parentNode.insertBefore(h,f)}},(b.config["HTML-CSS"]||{}));if(b.Browser.version!=="0.0"&&!b.Browser.versionAtLeast(a.minBrowserVersion[b.Browser]||0)){c.Translate=a.minBrowserTranslate;b.Config({showProcessingMessages:false});MathJax.Message.Set("Your browser does not support MathJax",null,4000);b.Startup.signal.Post("MathJax not supported")}},MathJax.Hub,MathJax.OutputJax["HTML-CSS"]]);MathJax.OutputJax["HTML-CSS"].loadComplete("config.js");
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -59,17 +59,6 @@ input {margin-top: .7em}
|
|||
window.UpdateMath = function (TeX) {
|
||||
QUEUE.Push(HIDEBOX,["Text",math,"\\displaystyle{"+TeX+"}"],SHOWBOX);
|
||||
}
|
||||
|
||||
//
|
||||
// IE doesn't fire onchange events for RETURN, so
|
||||
// use onkeypress to do a blur (and refocus) to
|
||||
// force the onchange to occur
|
||||
//
|
||||
if (MathJax.Hub.Browser.isMSIE) {
|
||||
window.MathInput.onkeypress = function () {
|
||||
if (window.event && window.event.keyCode === 13) {this.blur(); this.focus()}
|
||||
}
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
|
||||
|
@ -83,5 +72,18 @@ Type some \(\rm\TeX\) code and press RETURN:<br />
|
|||
<div id="MathOutput" class="output">$${}$$</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
//
|
||||
// IE doesn't fire onchange events for RETURN, so
|
||||
// use onkeypress to do a blur (and refocus) to
|
||||
// force the onchange to occur
|
||||
//
|
||||
if (MathJax.Hub.Browser.isMSIE) {
|
||||
MathInput.onkeypress = function () {
|
||||
if (window.event && window.event.keyCode === 13) {this.blur(); this.focus()}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -366,7 +366,7 @@ MathJax.fileversion = "1.1.17";
|
|||
};
|
||||
|
||||
//
|
||||
// An array or priorities hooks that are executed sequentially
|
||||
// An array of priorities hooks that are executed sequentially
|
||||
// with a given set of data.
|
||||
//
|
||||
var HOOKS = MathJax.Object.Subclass({
|
||||
|
@ -411,6 +411,19 @@ MathJax.fileversion = "1.1.17";
|
|||
return AFTER.apply({},callbacks);
|
||||
}
|
||||
});
|
||||
|
||||
//
|
||||
// Run an array of callbacks passing them the given data.
|
||||
// (Legacy function, since this has been replaced by the HOOKS object).
|
||||
//
|
||||
var EXECUTEHOOKS = function (hooks,data,reset) {
|
||||
if (!hooks) {return null}
|
||||
if (!(hooks instanceof Array)) {hooks = [hooks]}
|
||||
if (!(data instanceof Array)) {data = (data == null ? [] : [data])}
|
||||
var handler = HOOKS(reset);
|
||||
for (var i = 0, m = hooks.length; i < m; i++) {handler.Add(hooks[i])}
|
||||
return handler.Execute.apply(handler,data);
|
||||
};
|
||||
|
||||
//
|
||||
// Command queue that performs commands in order, waiting when
|
||||
|
@ -574,6 +587,7 @@ MathJax.fileversion = "1.1.17";
|
|||
BASE.Callback.Queue = QUEUE;
|
||||
BASE.Callback.Signal = SIGNAL.find;
|
||||
BASE.Callback.Hooks = HOOKS;
|
||||
BASE.Callback.ExecuteHooks = EXECUTEHOOKS;
|
||||
})("MathJax");
|
||||
|
||||
/**********************************************************/
|
||||
|
@ -863,7 +877,10 @@ MathJax.fileversion = "1.1.17";
|
|||
//
|
||||
// The default error hook for file load failures
|
||||
//
|
||||
loadError: function (file) {BASE.Message.Set("File failed to load: "+file,null,2000)},
|
||||
loadError: function (file) {
|
||||
BASE.Message.Set("File failed to load: "+file,null,2000);
|
||||
BASE.Hub.signal.Post(["file load error",file]);
|
||||
},
|
||||
|
||||
//
|
||||
// Defines a style sheet from a hash of style declarations (key:value pairs
|
||||
|
@ -1199,7 +1216,9 @@ MathJax.Hub = {
|
|||
root: "",
|
||||
config: [], // list of configuration files to load
|
||||
styleSheets: [], // list of CSS files to load
|
||||
styles: {}, // styles to generate in-line
|
||||
styles: { // styles to generate in-line
|
||||
".MathJax_Preview": {color: "#888"},
|
||||
},
|
||||
jax: [], // list of input and output jax to load
|
||||
extensions: [], // list of extensions to load
|
||||
preJax: null, // pattern to remove from before math script tag
|
||||
|
@ -1643,10 +1662,15 @@ MathJax.Hub = {
|
|||
|
||||
formatError: function (script,err) {
|
||||
var error = MathJax.HTML.Element("span",{className:"MathJax_Error"},this.config.errorSettings.message);
|
||||
error.jaxID = "Error";
|
||||
if (MathJax.Extension.MathEvents) {
|
||||
error.jaxID = "Error";
|
||||
error.oncontextmenu = MathJax.Extension.MathEvents.Event.Menu;
|
||||
error.onmousedown = MathJax.Extension.MathEvents.Event.Mousedown;
|
||||
} else {
|
||||
MathJax.Ajax.Require("[MathJax]/extensions/MathEvents.js",function () {
|
||||
error.oncontextmenu = MathJax.Extension.MathEvents.Event.Menu;
|
||||
error.onmousedown = MathJax.Extension.MathEvents.Event.Mousedown;
|
||||
});
|
||||
}
|
||||
script.parentNode.insertBefore(error,script);
|
||||
if (script.MathJax.preview) {script.MathJax.preview.style.display = "none"}
|
||||
|
@ -2284,7 +2308,8 @@ MathJax.Hub.Startup = {
|
|||
Safari: function (browser) {
|
||||
var v = parseInt((String(browser.version).split("."))[0]);
|
||||
if (v > 85) {browser.webkit = browser.version}
|
||||
if (v >= 533) {browser.version = "5.0"}
|
||||
if (v >= 534) {browser.version = "5.1"}
|
||||
else if (v >= 533) {browser.version = "5.0"}
|
||||
else if (v >= 526) {browser.version = "4.0"}
|
||||
else if (v >= 525) {browser.version = "3.1"}
|
||||
else if (v > 500) {browser.version = "3.0"}
|
||||
|
@ -2296,15 +2321,21 @@ MathJax.Hub.Startup = {
|
|||
Firefox: function (browser) {
|
||||
if ((browser.version === "0.0" || navigator.userAgent.match(/Firefox/) == null) &&
|
||||
navigator.product === "Gecko") {
|
||||
var date = (navigator.buildID||navigator.productSub||"0").substr(0,8);
|
||||
if (date >= "20110927") {browser.version = "7.0"}
|
||||
else if (date >= "20110816") {browser.version = "6.0"}
|
||||
else if (date >= "20110621") {browser.version = "5.0"}
|
||||
else if (date >= "20110320") {browser.version = "4.0"}
|
||||
else if (date >= "20100121") {browser.version = "3.6"}
|
||||
else if (date >= "20090630") {browser.version = "3.5"}
|
||||
else if (date >= "20080617") {browser.version = "3.0"}
|
||||
else if (date >= "20061024") {browser.version = "2.0"}
|
||||
var rv = navigator.userAgent.match(/[\/ ]rv:(\d+\.\d.*?)[\) ]/);
|
||||
if (rv) {browser.version = rv[1]}
|
||||
else {
|
||||
var date = (navigator.buildID||navigator.productSub||"0").substr(0,8);
|
||||
if (date >= "20111220") {browser.version = "9.0"}
|
||||
else if (date >= "20111120") {browser.version = "8.0"}
|
||||
else if (date >= "20110927") {browser.version = "7.0"}
|
||||
else if (date >= "20110816") {browser.version = "6.0"}
|
||||
else if (date >= "20110621") {browser.version = "5.0"}
|
||||
else if (date >= "20110320") {browser.version = "4.0"}
|
||||
else if (date >= "20100121") {browser.version = "3.6"}
|
||||
else if (date >= "20090630") {browser.version = "3.5"}
|
||||
else if (date >= "20080617") {browser.version = "3.0"}
|
||||
else if (date >= "20061024") {browser.version = "2.0"}
|
||||
}
|
||||
}
|
||||
browser.isMobile = (navigator.appVersion.match(/Android/i) != null ||
|
||||
navigator.userAgent.match(/ Fennec\//) != null);
|
||||
|
|
|
@ -70,6 +70,7 @@
|
|||
|
||||
var canUseMML = (HUB.Browser.isFirefox && HUB.Browser.versionAtLeast("1.5")) ||
|
||||
(HUB.Browser.isMSIE && MathPlayer) ||
|
||||
(HUB.Browser.isSafari && HUB.Browser.versionAtLeast("5.0")) ||
|
||||
(HUB.Browser.isOpera && HUB.Browser.versionAtLeast("9.52"));
|
||||
|
||||
HUB.Register.StartupHook("End Config",function () {
|
||||
|
|
|
@ -62,9 +62,8 @@ MathJax.Hub.Config({
|
|||
//
|
||||
// Example:
|
||||
// styles: {
|
||||
// ".MathJax .merror": {
|
||||
// color: "blue",
|
||||
// "background-color": "green"
|
||||
// ".MathJax_Preview": {
|
||||
// color: "#888"
|
||||
// }
|
||||
// },
|
||||
//
|
||||
|
@ -215,6 +214,19 @@ MathJax.Hub.Config({
|
|||
['\\[','\\]']
|
||||
],
|
||||
|
||||
//
|
||||
// This value determines whether tex2jax requires braces to be
|
||||
// balanced within math delimiters (which allows for nested dollar
|
||||
// signs). Set to false to get pre-v2.0 compatibility. When true,
|
||||
//
|
||||
// $y = x^2 \hbox{ when $x > 2$}$.
|
||||
//
|
||||
// will be properly handled as a single expression. When false, it
|
||||
// would be interpreted as two searpate expressions, each with
|
||||
// improperly balanced braces.
|
||||
//
|
||||
balanceBraces: true,
|
||||
|
||||
//
|
||||
// This array lists the names of the tags whose contents should not be
|
||||
// processed by tex2jax (other than to look for ignore/process classes
|
||||
|
@ -528,9 +540,9 @@ MathJax.Hub.Config({
|
|||
//
|
||||
// Example:
|
||||
// styles: {
|
||||
// ".MathJax_Preview": {
|
||||
// "font-size": "80%", // preview uses a smaller font
|
||||
// color: "red" // and is in red
|
||||
// ".MathJax .merror": {
|
||||
// color: "#CC0000",
|
||||
// border: "1px solid #CC0000"
|
||||
// }
|
||||
// }
|
||||
//
|
||||
|
|
74
unpacked/extensions/HTML-CSS/handle-floats.js
Normal file
74
unpacked/extensions/HTML-CSS/handle-floats.js
Normal file
|
@ -0,0 +1,74 @@
|
|||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/HTML-CSS/handle-floats.js
|
||||
*
|
||||
* This extension allows HTML-CSS output to deal with floating elements
|
||||
* better. In particular, when there are tags or equation numbers, these
|
||||
* would overlap floating elements, but with this extension, the width of
|
||||
* the line should properly correspond to the amount of space remaining.
|
||||
*
|
||||
* To load it, include
|
||||
*
|
||||
* "HTML-CSS": {
|
||||
* extensions: ["handle-floats.js"]
|
||||
* }
|
||||
*
|
||||
* in your configuration.
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
//
|
||||
// Make the display DIV be a table-cell
|
||||
// Use padding to get the separation, since table cells don't do margin
|
||||
// Make the width large (it will shrink to fit the remaining room)
|
||||
//
|
||||
MathJax.Hub.Config({
|
||||
"HTML-CSS": {
|
||||
styles: {
|
||||
".MathJax_Display": {
|
||||
display: "table-cell",
|
||||
padding: "1em 0 ! important",
|
||||
width: (MathJax.Hub.Browser.isMSIE && (document.documentMode||0) < 8 ? "100%" : "1000em")
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//
|
||||
// Two consecutive equations would end up side-by-side, so force a separator
|
||||
// (Needed by IE8, IE9, and Firefox, at least).
|
||||
//
|
||||
MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
|
||||
var HTMLCSS = MathJax.OutputJax["HTML-CSS"],
|
||||
TRANSLATE = HTMLCSS.Translate;
|
||||
HTMLCSS.Augment({
|
||||
Translate: function (script,state) {
|
||||
TRANSLATE.call(this,script,state);
|
||||
if (script.MathJax.elementJax.HTMLCSS.display) {
|
||||
var next = script.nextSibling;
|
||||
if (!next || next.className !== "MathJax_MSIE_Separator") {
|
||||
var span = HTMLCSS.Element("span",{className:"MathJax_MSIE_Separator"});
|
||||
script.parentNode.insertBefore(span,next);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
MathJax.Hub.Startup.signal.Post("HTML-CSS handle-floats Ready");
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/HTML-CSS/handle-floats.js");
|
|
@ -25,8 +25,13 @@
|
|||
|
||||
(function (HUB,HTML,AJAX,CALLBACK,OUTPUT) {
|
||||
var VERSION = "1.1.9";
|
||||
|
||||
var SIGNAL = MathJax.Callback.Signal("menu") // signal for menu events
|
||||
|
||||
MathJax.Extension.MathMenu = {version: VERSION};
|
||||
MathJax.Extension.MathMenu = {
|
||||
version: VERSION,
|
||||
signal: SIGNAL
|
||||
};
|
||||
|
||||
var isPC = HUB.Browser.isPC, isMSIE = HUB.Browser.isMSIE;
|
||||
var ROUND = (isPC ? null : "5px");
|
||||
|
@ -158,7 +163,7 @@
|
|||
posted: false,
|
||||
title: null,
|
||||
margin: 5,
|
||||
|
||||
|
||||
Init: function (def) {this.items = [].slice.call(arguments,0)},
|
||||
With: function (def) {if (def) {HUB.Insert(this,def)}; return this},
|
||||
|
||||
|
@ -173,6 +178,7 @@
|
|||
div = MENU.Background(this);
|
||||
delete ITEM.lastItem; delete ITEM.lastMenu;
|
||||
delete MENU.skipUp;
|
||||
SIGNAL.Post(["post",MENU.jax]);
|
||||
}
|
||||
var menu = HTML.addElement(div,"div",{
|
||||
onmouseup: MENU.Mouseup, ondblclick: FALSE,
|
||||
|
@ -228,6 +234,7 @@
|
|||
* Remove the menu from the screen
|
||||
*/
|
||||
Remove: function (event,menu) {
|
||||
SIGNAL.Post(["unpost",MENU.jax]);
|
||||
var div = document.getElementById("MathJax_MenuFrame");
|
||||
if (div) {
|
||||
div.parentNode.removeChild(div);
|
||||
|
@ -242,7 +249,7 @@
|
|||
|
||||
/*
|
||||
* Find a named item in a menu (or submenu).
|
||||
* A lsit of names means descend into submenus.
|
||||
* A list of names means descend into submenus.
|
||||
*/
|
||||
Find: function (name) {
|
||||
var names = [].slice.call(arguments,1);
|
||||
|
@ -256,6 +263,15 @@
|
|||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
/*
|
||||
* Find the index of a menu item (so we can insert before or after it)
|
||||
*/
|
||||
IndexOf: function (name) {
|
||||
for (var i = 0, m = this.items.length; i < m; i++)
|
||||
{if (this.items[i].name === name) {return i}}
|
||||
return null;
|
||||
}
|
||||
|
||||
},{
|
||||
|
@ -420,7 +436,11 @@
|
|||
|
||||
Label: function (def,menu) {return [this.name]},
|
||||
Mouseup: function (event,menu) {
|
||||
if (!this.disabled) {this.Remove(event,menu); this.action.call(this,event);}
|
||||
if (!this.disabled) {
|
||||
this.Remove(event,menu);
|
||||
SIGNAL.Post(["command",this]);
|
||||
this.action.call(this,event);
|
||||
}
|
||||
return FALSE(event);
|
||||
}
|
||||
});
|
||||
|
@ -459,7 +479,7 @@
|
|||
if (this.timer) {clearTimeout(this.timer); delete this.timer}
|
||||
this.menu.Post(event,menu);
|
||||
} else {
|
||||
var menus = document.getElementById("MathJax_MenuFrame").childNodes,
|
||||
var menus = document.getElementById("MathJax_MenuFrame").childNodes,
|
||||
m = menus.length-1;
|
||||
while (m >= 0) {
|
||||
var child = menus[m];
|
||||
|
@ -502,6 +522,7 @@
|
|||
menu.firstChild.display = "";
|
||||
CONFIG.settings[this.variable] = this.value;
|
||||
MENU.cookie[this.variable] = CONFIG.settings[this.variable]; MENU.saveCookie();
|
||||
SIGNAL.Post(["radio button",this]);
|
||||
if (this.action) {this.action.call(MENU)}
|
||||
}
|
||||
this.Remove(event,menu);
|
||||
|
@ -530,6 +551,7 @@
|
|||
menu.firstChild.display = (CONFIG.settings[this.variable] ? "none" : "");
|
||||
CONFIG.settings[this.variable] = !CONFIG.settings[this.variable];
|
||||
MENU.cookie[this.variable] = CONFIG.settings[this.variable]; MENU.saveCookie();
|
||||
SIGNAL.Post(["checkbox",this]);
|
||||
if (this.action) {this.action.call(MENU)}
|
||||
}
|
||||
this.Remove(event,menu);
|
||||
|
|
|
@ -102,7 +102,7 @@
|
|||
},
|
||||
|
||||
//
|
||||
// Zoom on hover (called by UI.Hover)
|
||||
// Zoom on hover (called by MathEvents.Hover)
|
||||
//
|
||||
Hover: function (event,math) {
|
||||
if (this.settings.zoom === "Hover") {this.Zoom(event,math); return true}
|
||||
|
@ -199,6 +199,11 @@
|
|||
else if (window.attachEvent) {attachEvent("onresize",this.Resize)}
|
||||
else {this.onresize = window.onresize; window.onresize = this.Resize}
|
||||
|
||||
//
|
||||
// Let others know about the zoomed math
|
||||
//
|
||||
HUB.signal.Post(["math zoomed",jax]);
|
||||
|
||||
//
|
||||
// Canel further actions
|
||||
//
|
||||
|
@ -245,6 +250,9 @@
|
|||
Remove: function (event) {
|
||||
var div = document.getElementById("MathJax_ZoomFrame");
|
||||
if (div) {
|
||||
var JAX = MathJax.OutputJax[div.nextSibling.jaxID];
|
||||
var jax = JAX.getJaxFromMath(div.nextSibling);
|
||||
HUB.signal.Post(["math unzoomed",jax]);
|
||||
div.parentNode.removeChild(div);
|
||||
div = document.getElementById("MathJax_ZoomTracker");
|
||||
if (div) {div.parentNode.removeChild(div)}
|
||||
|
|
|
@ -213,7 +213,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
|||
* Handle \cfrac
|
||||
*/
|
||||
CFrac: function (name) {
|
||||
var lr = this.trimSpaces(this.GetBrackets(name)),
|
||||
var lr = this.trimSpaces(this.GetBrackets(name,"")),
|
||||
num = this.GetArgument(name),
|
||||
den = this.GetArgument(name);
|
||||
var frac = MML.mfrac(TEX.Parse('\\strut\\textstyle{'+num+'}',this.stack.env).mml(),
|
||||
|
@ -360,7 +360,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
|||
GetDelimiterArg: function (name) {
|
||||
var c = this.trimSpaces(this.GetArgument(name));
|
||||
if (c == "") {return null}
|
||||
if (!TEXDEF.delimiter[c]) {TEX.Error("Missing or unrecognized delimiter for "+name)}
|
||||
if (TEXDEF.delimiter[c] == null) {TEX.Error("Missing or unrecognized delimiter for "+name)}
|
||||
return this.convertDelimiter(c);
|
||||
},
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
|||
|
||||
TEX.Parse.Augment({
|
||||
BBox: function (name) {
|
||||
var bbox = this.GetBrackets(name),
|
||||
var bbox = this.GetBrackets(name,""),
|
||||
math = this.ParseArg(name);
|
||||
var parts = bbox.split(/,/), def, background, style;
|
||||
for (var i in parts) {
|
||||
|
|
|
@ -79,7 +79,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
|||
// \xcancel[attributes]{math}
|
||||
//
|
||||
Cancel: function(name,notation) {
|
||||
var attr = this.GetBrackets(name), math = this.ParseArg(name);
|
||||
var attr = this.GetBrackets(name,""), math = this.ParseArg(name);
|
||||
var def = CANCEL.setAttributes({notation: notation},attr);
|
||||
this.Push(MML.menclose(math).With(def));
|
||||
},
|
||||
|
@ -89,7 +89,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
|||
//
|
||||
CancelTo: function(name,notation) {
|
||||
var value = this.ParseArg(name),
|
||||
attr = this.GetBrackets(name),
|
||||
attr = this.GetBrackets(name,""),
|
||||
math = this.ParseArg(name);
|
||||
var def = CANCEL.setAttributes({notation: MML.NOTATION.UPDIAGONALSTRIKE, arrow:true},attr);
|
||||
value = MML.mpadded(value).With({depth:"-.1em",height:"+.1em",voffset:".1em"});
|
||||
|
|
|
@ -63,7 +63,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
|||
attr = this.GetBrackets(name),
|
||||
math = this.ParseArg(name);
|
||||
var def = {notation: notation.replace(/,/g," ")};
|
||||
if (attr !== "") {
|
||||
if (attr) {
|
||||
attr = attr.replace(/ /g,"").split(/,/);
|
||||
for (var i = 0, m = attr.length; i < m; i++) {
|
||||
var keyvalue = attr[i].split(/[:=]/);
|
||||
|
|
|
@ -49,25 +49,30 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
|||
*/
|
||||
NewCommand: function (name) {
|
||||
var cs = this.trimSpaces(this.GetArgument(name)),
|
||||
n = this.trimSpaces(this.GetBrackets(name)),
|
||||
n = this.GetBrackets(name),
|
||||
opt = this.GetBrackets(name),
|
||||
def = this.GetArgument(name);
|
||||
if (n === '') {n = null}
|
||||
if (cs.charAt(0) === "\\") {cs = cs.substr(1)}
|
||||
if (!cs.match(/^(.|[a-z]+)$/i)) {TEX.Error("Illegal control sequence name for "+name)}
|
||||
if (n != null && !n.match(/^[0-9]+$/)) {TEX.Error("Illegal number of parameters specified in "+name)}
|
||||
this.setDef(cs,['Macro',def,n]);
|
||||
if (n) {
|
||||
n = this.trimSpaces(n);
|
||||
if (!n.match(/^[0-9]+$/)) {TEX.Error("Illegal number of parameters specified in "+name)}
|
||||
}
|
||||
this.setDef(cs,['Macro',def,n,opt]);
|
||||
},
|
||||
|
||||
/*
|
||||
* Implement \newenvironment{name}[n]{begincmd}{endcmd}
|
||||
* Implement \newenvironment{name}[n][default]{begincmd}{endcmd}
|
||||
*/
|
||||
NewEnvironment: function (name) {
|
||||
var env = this.trimSpaces(this.GetArgument(name)),
|
||||
n = this.trimSpaces(this.GetBrackets(name)),
|
||||
n = this.GetBrackets(name),
|
||||
bdef = this.GetArgument(name),
|
||||
edef = this.GetArgument(name);
|
||||
if (n === '') {n = null}
|
||||
if (n != null && !n.match(/^[0-9]+$/)) {TEX.Error("Illegal number of parameters specified in "+name)}
|
||||
if (n) {
|
||||
n = this.trimSpaces(n);
|
||||
if (!n.match(/^[0-9]+$/)) {TEX.Error("Illegal number of parameters specified in "+name)}
|
||||
}
|
||||
this.setEnv(env,['BeginEnv','EndEnv',bdef,edef,n]);
|
||||
},
|
||||
|
||||
|
|
|
@ -99,6 +99,8 @@
|
|||
// multi-line TeX, make spaces non-breakable (to get formatting right)
|
||||
//
|
||||
formatError: function (err,math,displaystyle,script) {
|
||||
var message = err.message.replace(/\n.*/,"");
|
||||
MathJax.Hub.signal.Post(["TeX Jax - parse error",message,math,displaystyle,script]);
|
||||
var delim = CONFIG.inlineDelimiters;
|
||||
var multiLine = (displaystyle || CONFIG.multiLine);
|
||||
if (!displaystyle) {math = delim[0] + math + delim[1]}
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
|
||||
//
|
||||
// The configuration defaults, augmented by the user settings
|
||||
//
|
||||
//
|
||||
MathJax.Extension["TeX/noUndefined"] = {
|
||||
version: "1.1",
|
||||
config: MathJax.Hub.CombineConfig("TeX.noUndefined",{
|
||||
|
@ -55,6 +55,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
|||
|
||||
MathJax.InputJax.TeX.Parse.Augment({
|
||||
csUndefined: function (name) {
|
||||
MathJax.Hub.signal.Post(["TeX Jax - undefined control sequence",name]);
|
||||
this.Push(MML.mtext(name).With(CONFIG.attributes));
|
||||
}
|
||||
});
|
||||
|
|
|
@ -36,6 +36,10 @@ MathJax.Extension.tex2jax = {
|
|||
['\\[','\\]'] // be sure that you don't have an extra comma at the end)
|
||||
],
|
||||
|
||||
balanceBraces: true, // determines whether tex2jax requires braces to be
|
||||
// balanced within math delimiters (allows for nested
|
||||
// dollar signs). Set to false to get pre-v2.0 compatibility.
|
||||
|
||||
skipTags: ["script","noscript","style","textarea","pre","code"],
|
||||
// The names of the tags whose contents will not be
|
||||
// scanned for math delimiters
|
||||
|
@ -58,6 +62,7 @@ MathJax.Extension.tex2jax = {
|
|||
|
||||
processRefs: true, // set to true to process \ref{...} outside of math mode
|
||||
|
||||
|
||||
preview: "TeX" // 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.
|
||||
|
@ -110,7 +115,7 @@ MathJax.Extension.tex2jax = {
|
|||
patternQuote: function (s) {return s.replace(/([\^$(){}+*?\-|\[\]\:\\])/g,'\\$1')},
|
||||
|
||||
endPattern: function (end) {
|
||||
return new RegExp(this.patternQuote(end)+"|\\\\.","g");
|
||||
return new RegExp(this.patternQuote(end)+"|\\\\.|[{}]","g");
|
||||
},
|
||||
|
||||
sortLength: function (a,b) {
|
||||
|
@ -155,7 +160,8 @@ MathJax.Extension.tex2jax = {
|
|||
do {prev = element; element = element.nextSibling}
|
||||
while (element && (element.nodeName.toLowerCase() === 'br' ||
|
||||
element.nodeName.toLowerCase() === '#comment'));
|
||||
if (!element || element.nodeName !== '#text') {return prev}
|
||||
if (!element || element.nodeName !== '#text')
|
||||
{return (this.search.close ? this.prevEndMatch() : prev)}
|
||||
}
|
||||
}
|
||||
return element;
|
||||
|
@ -165,20 +171,20 @@ MathJax.Extension.tex2jax = {
|
|||
var delim = this.match[match[0]];
|
||||
if (delim != null) { // a start delimiter
|
||||
this.search = {
|
||||
end: delim.end, mode: delim.mode,
|
||||
end: delim.end, mode: delim.mode, pcount: 0,
|
||||
open: element, olen: match[0].length, opos: this.pattern.lastIndex - match[0].length
|
||||
};
|
||||
this.switchPattern(delim.pattern);
|
||||
} else if (match[0].substr(0,6) === "\\begin") { // \begin{...}
|
||||
this.search = {
|
||||
end: "\\end{"+match[1]+"}", mode: "; mode=display",
|
||||
end: "\\end{"+match[1]+"}", mode: "; mode=display", pcount: 0,
|
||||
open: element, olen: 0, opos: this.pattern.lastIndex - match[0].length,
|
||||
isBeginEnd: true
|
||||
};
|
||||
this.switchPattern(this.endPattern(this.search.end));
|
||||
} else if (match[0].substr(0,4) === "\\ref" || match[0].substr(0,6) === "\\eqref") {
|
||||
this.search = {
|
||||
mode: "", end: "", open: element,
|
||||
mode: "", end: "", open: element, pcount: 0,
|
||||
olen: 0, opos: this.pattern.lastIndex - match[0].length
|
||||
}
|
||||
return this.endMatch([""],element);
|
||||
|
@ -199,14 +205,27 @@ MathJax.Extension.tex2jax = {
|
|||
},
|
||||
|
||||
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);
|
||||
var search = this.search;
|
||||
if (match[0] == search.end) {
|
||||
if (!search.close || search.pcount === 0) {
|
||||
search.close = element;
|
||||
search.cpos = this.pattern.lastIndex;
|
||||
search.clen = (search.isBeginEnd ? 0 : match[0].length);
|
||||
}
|
||||
if (search.pcount === 0) {
|
||||
search.matched = true;
|
||||
element = this.encloseMath(element);
|
||||
this.switchPattern(this.start);
|
||||
}
|
||||
}
|
||||
else if (match[0] === "{") {search.pcount++}
|
||||
else if (match[0] === "}" && search.pcount) {search.pcount--}
|
||||
return element;
|
||||
},
|
||||
prevEndMatch: function () {
|
||||
this.search.matched = true;
|
||||
var element = this.encloseMath(this.search.close);
|
||||
this.switchPattern(this.start);
|
||||
return element;
|
||||
},
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*************************************************************
|
||||
*
|
||||
* MathJax/extension/v1.0-warning.js
|
||||
* MathJax/extensions/v1.0-warning.js
|
||||
*
|
||||
* This extension file is loaded when no jax are configured
|
||||
* as a backward-compatible measure to help people convert to the
|
||||
|
|
|
@ -66,8 +66,10 @@
|
|||
//
|
||||
MakeMML: function (node) {
|
||||
var type = node.nodeName.toLowerCase().replace(/^[a-z]+:/,"");
|
||||
if (!(MML[type] && MML[type].isa && MML[type].isa(MML.mbase)))
|
||||
{return MML.merror("Unknown node type: "+type)}
|
||||
if (!(MML[type] && MML[type].isa && MML[type].isa(MML.mbase))) {
|
||||
MathJax.Hub.signal.Post(["MathML Jax - unknown node type",type]);
|
||||
return MML.merror("Unknown node type: "+type);
|
||||
}
|
||||
var mml = MML[type](), i, m, name, value;
|
||||
mml.mmlAttributes = [];
|
||||
for (i = 0, m = node.attributes.length; i < m; i++) {
|
||||
|
@ -162,7 +164,9 @@
|
|||
prefilterMath: function (math,script) {return math},
|
||||
prefilterMathML: function (math) {return math},
|
||||
formatError: function (err,math,script) {
|
||||
return MML.merror(err.message.replace(/\n.*/,""));
|
||||
var message = err.message.replace(/\n.*/,"");
|
||||
MathJax.Hub.signal.Post(["MathML Jax - parse error",message,math,script]);
|
||||
return MML.merror(message);
|
||||
},
|
||||
Error: function (message) {
|
||||
throw MathJax.Hub.Insert(Error(message),{mathmlError: true});
|
||||
|
|
|
@ -1239,8 +1239,8 @@
|
|||
var n = this.GetBrackets(name), arg = this.GetArgument(name);
|
||||
if (arg === "\\frac") {arg += "{"+this.GetArgument(arg)+"}{"+this.GetArgument(arg)+"}"}
|
||||
var mml = TEX.Parse(arg,this.stack.env).mml();
|
||||
if (n == "") {mml = MML.msqrt.apply(MML,mml.array())}
|
||||
else {mml = MML.mroot(mml,this.parseRoot(n))}
|
||||
if (!n) {mml = MML.msqrt.apply(MML,mml.array())}
|
||||
else {mml = MML.mroot(mml,this.parseRoot(n))}
|
||||
this.Push(mml);
|
||||
},
|
||||
Root: function (name) {
|
||||
|
@ -1315,15 +1315,16 @@
|
|||
|
||||
MmlToken: function (name) {
|
||||
var type = this.GetArgument(name),
|
||||
attr = this.GetBrackets(name).replace(/^\s+/,""),
|
||||
attr = this.GetBrackets(name,"").replace(/^\s+/,""),
|
||||
data = this.GetArgument(name),
|
||||
def = {}, match;
|
||||
def = {mmlAttributes:[]}, match;
|
||||
if (!MML[type] || !MML[type].prototype.isToken) {TEX.Error(type+" is not a token element")}
|
||||
while (attr !== "") {
|
||||
match = attr.match(/^([a-z]+)\s*=\s*('[^']*'|"[^"]*"|[^ ]*)\s*/i);
|
||||
if (!match) {TEX.Error("Invalid MathML attribute: "+attr)}
|
||||
if (!MML[type].prototype.defaults[match[1]]) {TEX.Error(match[1]+" is not a recognized attribute for "+type)}
|
||||
def[match[1]] = match[2].replace(/^(['"])(.*)\1$/,"$2");
|
||||
def.mmlAttributes.push(match[1]);
|
||||
attr = attr.substr(match[0].length);
|
||||
}
|
||||
this.Push(this.mmlToken(MML[type](data).With(def)));
|
||||
|
@ -1344,7 +1345,7 @@
|
|||
},
|
||||
|
||||
Smash: function (name) {
|
||||
var bt = this.trimSpaces(this.GetBrackets(name));
|
||||
var bt = this.trimSpaces(this.GetBrackets(name,""));
|
||||
var smash = MML.mpadded(this.ParseArg(name));
|
||||
switch (bt) {
|
||||
case "b": smash.depth = 0; break;
|
||||
|
@ -1437,10 +1438,14 @@
|
|||
}
|
||||
},
|
||||
|
||||
Macro: function (name,macro,argcount) {
|
||||
Macro: function (name,macro,argcount,def) {
|
||||
if (argcount) {
|
||||
var args = [];
|
||||
for (var i = 0; i < argcount; i++) {args.push(this.GetArgument(name))}
|
||||
if (def != null) {
|
||||
var optional = this.GetBrackets(name);
|
||||
args.push(optional == null ? def : optional);
|
||||
}
|
||||
for (var i = args.length; i < argcount; i++) {args.push(this.GetArgument(name))}
|
||||
macro = this.SubstituteArgs(args,macro);
|
||||
}
|
||||
this.string = this.AddArgs(macro,this.string.slice(this.i));
|
||||
|
@ -1493,7 +1498,7 @@
|
|||
},
|
||||
|
||||
CrLaTeX: function (name) {
|
||||
var n = this.GetBrackets(name).replace(/ /g,"");
|
||||
var n = this.GetBrackets(name,"").replace(/ /g,"");
|
||||
if (n && !n.match(/^(((\.\d+|\d+(\.\d*)?))(pt|em|ex|mu|mm|cm|in|pc))$/))
|
||||
{TEX.Error("Bracket argument to "+name+" must be a dimension")}
|
||||
this.Push(STACKITEM.cell().With({isCR: TRUE, name: name, linebreak: TRUE}));
|
||||
|
@ -1598,10 +1603,11 @@
|
|||
return this.setArrayAlign(this.Array.apply(this,arguments),align);
|
||||
},
|
||||
setArrayAlign: function (array,align) {
|
||||
align = this.trimSpaces(align||"");
|
||||
if (align === "t") {array.arraydef.align = "baseline 1"}
|
||||
else if (align === "b") {array.arraydef.align = "baseline -1"}
|
||||
else if (align === "c") {array.arraydef.align = "center"}
|
||||
else if (align !== "") {array.arraydef.align = align} // FIXME: should be an error?
|
||||
else if (align) {array.arraydef.align = align} // FIXME: should be an error?
|
||||
return array;
|
||||
},
|
||||
|
||||
|
@ -1687,8 +1693,8 @@
|
|||
/*
|
||||
* Get an optional LaTeX argument in brackets
|
||||
*/
|
||||
GetBrackets: function (name) {
|
||||
if (this.GetNext() != '[') {return ''};
|
||||
GetBrackets: function (name,def) {
|
||||
if (this.GetNext() != '[') {return def};
|
||||
var j = ++this.i, parens = 0;
|
||||
while (this.i < this.string.length) {
|
||||
switch (this.string.charAt(this.i++)) {
|
||||
|
@ -1898,18 +1904,21 @@
|
|||
data.math = mml; this.postfilterHooks.Execute(data);
|
||||
return data.math;
|
||||
},
|
||||
prefilterMath: function (data) {
|
||||
prefilterMath: function (math,displaystyle,script) {
|
||||
// Konqueror incorrectly quotes these characters in script.innerHTML
|
||||
if (HUB.Browser.isKonqueror)
|
||||
{data.math = data.math.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}
|
||||
{math = math.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}
|
||||
// avoid parsing super- and subscript numbers as a unit
|
||||
data.math = data.math.replace(/([_^]\s*\d)([0-9.,])/g,"$1 $2");
|
||||
return math.replace(/([_^]\s*\d)([0-9.,])/g,"$1 $2");
|
||||
},
|
||||
postfilterMath: function (data) {
|
||||
this.combineRelations(data.math.root);
|
||||
postfilterMath: function (math,displaystyle,script) {
|
||||
this.combineRelations(math.root);
|
||||
return math;
|
||||
},
|
||||
formatError: function (err,math,display,script) {
|
||||
return MML.merror(err.message.replace(/\n.*/,""));
|
||||
var message = err.message.replace(/\n.*/,"");
|
||||
HUB.signal.Post(["TeX Jax - parse error",message,math,display,script]);
|
||||
return MML.merror(message);
|
||||
},
|
||||
|
||||
//
|
||||
|
@ -1959,8 +1968,12 @@
|
|||
//
|
||||
// Add the default filters
|
||||
//
|
||||
TEX.prefilterHooks.Add(["prefilterMath",TEX]);
|
||||
TEX.postfilterHooks.Add(["postfilterMath",TEX]);
|
||||
TEX.prefilterHooks.Add(function (data) {
|
||||
data.math = TEX.prefilterMath(data.math,data.displaystyle,data.script);
|
||||
});
|
||||
TEX.postfilterHooks.Add(function (data) {
|
||||
data.math = TEX.postfilterMath(data.math,data.displaystyle,data.script);
|
||||
});
|
||||
|
||||
TEX.loadComplete("jax.js");
|
||||
|
||||
|
|
|
@ -70,8 +70,6 @@ MathJax.OutputJax["HTML-CSS"] = MathJax.OutputJax({
|
|||
"font-size": "90%"
|
||||
},
|
||||
|
||||
".MathJax_Preview": {color: "#888888"},
|
||||
|
||||
"#MathJax_Tooltip": {
|
||||
"background-color": "InfoBackground", color: "InfoText",
|
||||
border: "1px solid black",
|
||||
|
|
|
@ -25,10 +25,10 @@
|
|||
|
||||
|
||||
(function (AJAX,HUB,HTMLCSS) {
|
||||
var MML;
|
||||
var MML, isMobile = HUB.Browser.isMobile;
|
||||
|
||||
var FONTTEST = MathJax.Object.Subclass({
|
||||
timeout: 5*1000, // timeout for loading web fonts
|
||||
timeout: (isMobile? 15:8)*1000, // timeout for loading web fonts
|
||||
|
||||
FontInfo: {
|
||||
STIX: {family: "STIXSizeOneSym", testString: "() {} []"},
|
||||
|
@ -138,7 +138,7 @@
|
|||
},
|
||||
loadComplete: function (font,n,done,status) {
|
||||
MathJax.Message.Clear(n);
|
||||
if (status === AJAX.STATUS.OK) {done(); return}
|
||||
if (status === AJAX.STATUS.OK) {this.webFontLoaded = true; done(); return}
|
||||
this.loadError(font);
|
||||
if (HUB.Browser.isFirefox && HTMLCSS.allowWebFonts) {
|
||||
var host = document.location.protocol + "//" + document.location.hostname;
|
||||
|
@ -147,13 +147,15 @@
|
|||
if (AJAX.fileURL(HTMLCSS.webfontDir).substr(0,host.length) !== host)
|
||||
{this.firefoxFontError(font)}
|
||||
}
|
||||
HTMLCSS.loadWebFontError(font,done);
|
||||
if (!this.webFontLoaded) {HTMLCSS.loadWebFontError(font,done)} else {done()}
|
||||
},
|
||||
loadError: function (font) {
|
||||
MathJax.Message.Set("Can't load web font "+HTMLCSS.fontInUse+"/"+font.directory,null,2000);
|
||||
HUB.Startup.signal.Post(["HTML-CSS Jax - web font error",HTMLCSS.fontInUse+"/"+font.directory,font]);
|
||||
},
|
||||
firefoxFontError: function (font) {
|
||||
MathJax.Message.Set("Firefox can't load web fonts from a remote host",null,3000);
|
||||
HUB.Startup.signal.Post("HTML-CSS Jax - Firefox web fonts on remote host error");
|
||||
},
|
||||
|
||||
checkWebFont: function (check,font,callback) {
|
||||
|
@ -1332,9 +1334,14 @@
|
|||
{this.loadWebFont(font)} else {return font}
|
||||
} else {this.findBlock(font,n)}
|
||||
}
|
||||
return this.unknownChar(variant,n);
|
||||
},
|
||||
|
||||
unknownChar: function (variant,n) {
|
||||
var unknown = (variant.defaultFont || {family:HTMLCSS.config.undefinedFamily});
|
||||
if (variant.bold) {unknown.weight = "bold"}; if (variant.italic) {unknown.style = "italic"}
|
||||
unknown[n] = [800,200,500,0,500,{isUnknown:true}]; // [h,d,w,lw,rw,{data}]
|
||||
HUB.signal.Post(["HTML-CSS Jax - unknown char",n,variant]);
|
||||
return unknown;
|
||||
},
|
||||
|
||||
|
@ -1929,6 +1936,20 @@
|
|||
return span;
|
||||
}
|
||||
});
|
||||
MML.merror.Augment({
|
||||
toHTML: function (span) {
|
||||
//
|
||||
// Width doesn't include padding and border, so use an extra inline block
|
||||
// element to capture it.
|
||||
//
|
||||
var SPAN = MathJax.HTML.addElement(span,"span",{style:{display:"inline-block"}});
|
||||
span = this.SUPER(arguments).toHTML.call(this,SPAN);
|
||||
var HD = HTMLCSS.getHD(SPAN), W = HTMLCSS.getW(SPAN);
|
||||
SPAN.bbox = {h:HD.h, d:HD.d, w:W, lw:0, rw:W, exactW: true};
|
||||
SPAN.id = span.id; span.id = null;
|
||||
return SPAN;
|
||||
}
|
||||
});
|
||||
|
||||
MML.ms.Augment({toHTML: MML.mbase.HTMLautoload});
|
||||
|
||||
|
|
|
@ -520,6 +520,18 @@
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (HUB.Browser.isChrome) {
|
||||
MML.math.Augment({
|
||||
//
|
||||
// Chrome doesn't seem to add the xmlns attribute, so do it by hand.
|
||||
//
|
||||
toNativeMML: function (parent) {
|
||||
this.SUPER(arguments).toNativeMML.call(this,parent);
|
||||
parent.lastChild.setAttribute("xmlns",nMML.MMLnamespace);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
MML.TeXAtom.Augment({
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue
Block a user