2013-10-09 01:15:00 +00:00
/ *
* / M a t h J a x / c o n f i g / M M L _ H T M L o r M M L . j s
*
* Copyright ( c ) 2010 - 2013 The MathJax Consortium
*
* 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 ( { delayJaxRegistration : true } ) ;
MathJax . Ajax . Preloading (
"[MathJax]/jax/input/MathML/config.js" ,
"[MathJax]/jax/output/HTML-CSS/config.js" ,
"[MathJax]/jax/output/NativeMML/config.js" ,
"[MathJax]/config/MMLorHTML.js" ,
"[MathJax]/extensions/mml2jax.js" ,
"[MathJax]/extensions/MathEvents.js" ,
"[MathJax]/extensions/MathZoom.js" ,
"[MathJax]/extensions/MathMenu.js" ,
"[MathJax]/jax/element/mml/jax.js" ,
"[MathJax]/extensions/toMathML.js" ,
"[MathJax]/jax/input/MathML/jax.js"
) ;
MathJax . Hub . Config ( { "v1.0-compatible" : false } ) ;
2013-11-19 22:02:44 +00:00
MathJax . InputJax . MathML = MathJax . InputJax ( { id : "MathML" , version : "2.3" , directory : MathJax . InputJax . directory + "/MathML" , extensionDir : MathJax . InputJax . extensionDir + "/MathML" , entityDir : MathJax . InputJax . directory + "/MathML/entities" , config : { useMathMLspacing : false } } ) ; MathJax . InputJax . MathML . Register ( "math/mml" ) ; MathJax . InputJax . MathML . loadComplete ( "config.js" ) ;
MathJax . OutputJax [ "HTML-CSS" ] = MathJax . OutputJax ( { id : "HTML-CSS" , version : "2.3" , directory : MathJax . OutputJax . directory + "/HTML-CSS" , extensionDir : MathJax . OutputJax . extensionDir + "/HTML-CSS" , autoloadDir : MathJax . OutputJax . directory + "/HTML-CSS/autoload" , fontDir : MathJax . OutputJax . directory + "/HTML-CSS/fonts" , webfontDir : MathJax . OutputJax . fontDir + "/HTML-CSS" , config : { matchFontHeight : true , scale : 100 , minScaleAdjust : 50 , availableFonts : [ "STIX" , "TeX" ] , preferredFont : "TeX" , webFont : "TeX" , imageFont : "TeX" , undefinedFamily : "STIXGeneral,'Arial Unicode MS',serif" , mtextFontInherit : false , EqnChunk : ( MathJax . Hub . Browser . isMobile ? 10 : 50 ) , EqnChunkFactor : 1.5 , EqnChunkDelay : 100 , linebreaks : { automatic : false , width : "container" } , styles : { ".MathJax_Display" : { "text-align" : "center" , margin : "1em 0em" } , ".MathJax .merror" : { "background-color" : "#FFFF88" , color : "#CC0000" , border : "1px solid #CC0000" , padding : "1px 3px" , "font-style" : "normal" , "font-size" : "90%" } , "#MathJax_Tooltip" : { "background-color" : "InfoBackground" , color : "InfoText" , border : "1px solid black" , "box-shadow" : "2px 2px 5px #AAAAAA" , "-webkit-box-shadow" : "2px 2px 5px #AAAAAA" , "-moz-box-shadow" : "2px 2px 5px #AAAAAA" , "-khtml-box-shadow" : "2px 2px 5px #AAAAAA" , filter : "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')" , padding : "3px 4px" , "z-index" : 401 } } } } ) ; 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 ( [ "MathJaxNotSupported" , "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 . NativeMML = MathJax . OutputJax ( { id : "NativeMML" , version : "2.3" , directory : MathJax . OutputJax . directory + "/NativeMML" , extensionDir : MathJax . OutputJax . extensionDir + "/NativeMML" , config : { matchFontHeight : true , scale : 100 , minScaleAdjust : 50 , styles : { "div.MathJax_MathML" : { "text-align" : "center" , margin : ".75em 0px" } } } } ) ; if ( ! MathJax . Hub . config . delayJaxRegistration ) { MathJax . OutputJax . NativeMML . Register ( "jax/mml" ) } MathJax . OutputJax . NativeMML . loadComplete ( "config.js" ) ;
( function ( c , g ) { var f = "2.3" ; var a = MathJax . Hub . CombineConfig ( "MMLorHTML" , { prefer : { MSIE : "MML" , Firefox : "HTML" , Opera : "HTML" , Chrome : "HTML" , Safari : "HTML" , other : "HTML" } } ) ; var e = { Firefox : 3 , Opera : 9.52 , MSIE : 6 , Chrome : 0.3 , Safari : 2 , Konqueror : 4 } ; var b = ( g . version === "0.0" || g . versionAtLeast ( e [ g ] || 0 ) ) ; var d = ( g . isFirefox && g . versionAtLeast ( "1.5" ) ) || ( g . isMSIE && g . hasMathPlayer ) || ( g . isSafari && g . versionAtLeast ( "5.0" ) ) || ( g . isOpera && g . versionAtLeast ( "9.52" ) ) ; c . Register . StartupHook ( "End Config" , function ( ) { var h = ( a . prefer && typeof ( a . prefer ) === "object" ? a . prefer [ MathJax . Hub . Browser ] || a . prefer . other || "HTML" : a . prefer ) ; if ( b || d ) { if ( d && ( h === "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 ( [ "MathJaxNotSupported" , "Your browser does not support MathJax" ] , null , 4000 ) ; c . Startup . signal . Post ( "MathJax not supported" ) } } ) } ) ( MathJax . Hub , MathJax . Hub . Browser ) ; MathJax . Ajax . loadComplete ( "[MathJax]/config/MMLorHTML.js" ) ;
MathJax . Extension . mml2jax = { version : "2.3" , config : { preview : "mathml" } , MMLnamespace : "http://www.w3.org/1998/Math/MathML" , PreProcess : function ( e ) { if ( ! this . configured ) { this . config = MathJax . Hub . CombineConfig ( "mml2jax" , this . config ) ; if ( this . config . Augment ) { MathJax . Hub . Insert ( this , this . config . Augment ) } this . InitBrowser ( ) ; this . configured = true } if ( typeof ( e ) === "string" ) { e = document . getElementById ( e ) } if ( ! e ) { e = document . body } var h = [ ] ; h . push . apply ( h , e . getElementsByTagName ( "math" ) ) ; if ( e . getElementsByTagNameNS ) { h . push . apply ( h , e . getElementsByTagNameNS ( this . MMLnamespace , "math" ) ) } var d , b ; if ( typeof ( document . namespaces ) !== "undefined" ) { try { for ( d = 0 , b = document . namespaces . length ; d < b ; d ++ ) { var f = document . namespaces [ d ] ; if ( f . urn === this . MMLnamespace ) { h . push . apply ( h , e . getElementsByTagName ( f . name + ":math" ) ) } } } catch ( g ) { } } else { var c = document . getElementsByTagName ( "html" ) [ 0 ] ; if ( c ) { for ( d = 0 , b = c . attributes . length ; d < b ; d ++ ) { var a = c . attributes [ d ] ; if ( a . nodeName . substr ( 0 , 6 ) === "xmlns:" && a . nodeValue === this . MMLnamespace ) { h . push . apply ( h , e . getElementsByTagName ( a . nodeName . substr ( 6 ) + ":math" ) ) } } } } this . ProcessMathArray ( h ) } , ProcessMathArray : function ( c ) { var b , a = c . length ; if ( a ) { if ( this . MathTagBug ) { for ( b = 0 ; b < a ; b ++ ) { if ( c [ b ] . nodeName === "MATH" ) { this . ProcessMathFlattened ( c [ b ] ) } else { this . ProcessMath ( c [ b ] ) } } } else { for ( b = 0 ; b < a ; b ++ ) { this . ProcessMath ( c [ b ] ) } } } } , ProcessMath : function ( e ) { var d = e . parentNode ; if ( ! d || d . className === MathJax . Hub . config . preRemoveClass ) { return } var a = document . createElement ( "script" ) ; a . type = "math/mml" ; d . insertBefore ( a , e ) ; if ( this . AttributeBug ) { var b = this . OuterHTML ( e ) ; if ( this . CleanupHTML ) { b = b . replace ( /<\?import .*?>/i , "" ) . replace ( /<\?xml:namespace .*?\/>/i , "" ) ; b = b . replace ( / /g , " " ) } MathJax . HTML . setScript ( a , b ) ; d . removeChild ( e ) } else { var c = MathJax . HTML . Element ( "span" ) ; c . appendChild ( e ) ; MathJax . HTML . setScript ( a , c . innerHTML ) } if ( this . config . preview !== "none" ) { this . createPreview ( e , a ) } } , ProcessMathFlattened : function ( f ) { var d = f . parentNode ; if ( ! d || d . className === MathJax . Hub . config . preRemoveClass ) { return } var b = document . createElement ( "script" ) ; b . type = "math/mml" ; d . insertBefore ( b , f ) ; var c = "" , e , a = f ; while ( f && f . nodeName !== "/MATH" ) { e = f ; f = f . nextSibling ; c += this . NodeHTML ( e ) ; e . parentNode . removeChild ( e ) } if ( f && f . nodeName === "/MATH" ) { f . parentNode . removeChild ( f ) } b . text = c + "</math>" ; if ( this . config . preview !== "none" ) { this . createPreview ( a , b ) } } , NodeHTML : function ( e ) { var c , b , a ; if ( e . nodeName === "#text" ) { c = this . quoteHTML ( e . nodeValue ) } else { if ( e . nodeName === "#comment" ) { c = "<!--" + e . nodeValue + "-->" } else { c = "<" + e . nodeName . toLowerCase ( ) ; for ( b = 0 , a = e . attributes . length ; b < a ; b ++ ) { var d = e . attributes [ b ] ; if ( d . specified ) { c += " " + d . nodeName . toLowerCase ( ) . replace ( /xmlns:xmlns/ , "xmlns" ) + "=" ; var f = d . nodeValue ; if ( f == null && d . nodeName === "style" && e . style ) { f = e . style . cssText } c += '"' + this . quoteHTML ( f ) + '"' } } c += ">" ; if ( e . outerHTML != null && e . outerHTML . match ( /(.<\/[A-Z]+>|\/>)$/ ) ) { for ( b = 0 , a = e . childNodes . length ; b < a ; b ++ ) { c += this . OuterHTML ( e . childNodes [ b ] ) } c += "</" + e . nodeName . toLowerCase ( ) + ">" } } } return c } , OuterHTML : function ( d ) { if ( d . nodeName . charAt ( 0 ) === "#" ) { return this . NodeHTML ( d ) } if ( ! this . AttributeBug ) { return d . outerHTML } var c = this . NodeHTML ( d ) ; for ( var b = 0 , a = d . childNodes . length ; b < a ; b ++ ) { c += this . OuterHTML ( d . childNodes [ b ] ) } c += "</" + d . nodeName . toLowerCase ( ) + ">" ; return c } , quoteHTML : function ( a ) { if ( a == null ) { a = "" } return a . replace ( /&/g , "&" ) . replace ( /</g , "<" ) . replace ( />/g , ">" ) . replace ( /\"/g , """ ) } , createPreview : function ( f , b ) { var g = this . config . preview ; if ( g === "none" ) { return } var a = false ; if ( g === "mathml" ) { a = true ; if ( this . MathTagBug ) { g = "alttext" } else { g = f . cloneNode ( false ) } } if ( g === "alttext" || g === "altimg" ) { a = true ; var c = this . filterPreview ( f . getAttribute ( "alttext" ) ) ; if ( g === "alttext" ) { if ( c != null ) { g = MathJax . HTML . TextNode ( c ) } else { g = null } } else { var h = f . getAttribute ( "altimg" ) ; if ( h != null ) { var e = { width : f . getAttribute ( "altimg-width" ) , height : f . getAttribute ( "altimg-height" ) } ; g = MathJax . HTML . Element ( "img" , { src : h , alt : c , style : e } ) } else { g = null } } } if ( g ) { var d ; if ( a ) { d = MathJax . HTML . Element ( "span" , { className : MathJax . Hub . config . preRemoveClass } ) ; d . appendChild ( g ) } else { d = MathJax . HTML . Element ( "span" , { className : MathJax . Hub . config . preRemoveClass } , g ) } b . parentNode . insertBefore ( d , b ) } } , fil
( function ( d , h , l , g , m , b , j ) { var q = "2.3" ; var i = MathJax . Extension ; var c = i . MathEvents = { version : q } ; var k = d . config . menuSettings ; var p = { hover : 500 , frame : { x : 3.5 , y : 5 , bwidth : 1 , bcolor : "#A6D" , hwidth : "15px" , hcolor : "#83A" } , button : { x : - 4 , y : - 3 , wx : - 2 , src : l . fileURL ( b . imageDir + "/MenuArrow-15.png" ) } , fadeinInc : 0.2 , fadeoutInc : 0.05 , fadeDelay : 50 , fadeoutStart : 400 , fadeoutDelay : 15 * 1000 , styles : { ".MathJax_Hover_Frame" : { "border-radius" : ".25em" , "-webkit-border-radius" : ".25em" , "-moz-border-radius" : ".25em" , "-khtml-border-radius" : ".25em" , "box-shadow" : "0px 0px 15px #83A" , "-webkit-box-shadow" : "0px 0px 15px #83A" , "-moz-box-shadow" : "0px 0px 15px #83A" , "-khtml-box-shadow" : "0px 0px 15px #83A" , border : "1px solid #A6D ! important" , display : "inline-block" , position : "absolute" } , ".MathJax_Hover_Arrow" : { position : "absolute" , width : "15px" , height : "11px" , cursor : "pointer" } } } ; var n = c . Event = { LEFTBUTTON : 0 , RIGHTBUTTON : 2 , MENUKEY : "altKey" , Mousedown : function ( r ) { return n . Handler ( r , "Mousedown" , this ) } , Mouseup : function ( r ) { return n . Handler ( r , "Mouseup" , this ) } , Mousemove : function ( r ) { return n . Handler ( r , "Mousemove" , this ) } , Mouseover : function ( r ) { return n . Handler ( r , "Mouseover" , this ) } , Mouseout : function ( r ) { return n . Handler ( r , "Mouseout" , this ) } , Click : function ( r ) { return n . Handler ( r , "Click" , this ) } , DblClick : function ( r ) { return n . Handler ( r , "DblClick" , this ) } , Menu : function ( r ) { return n . Handler ( r , "ContextMenu" , this ) } , Handler : function ( u , s , t ) { if ( l . loadingMathMenu ) { return n . False ( u ) } var r = b [ t . jaxID ] ; if ( ! u ) { u = window . event } u . isContextMenu = ( s === "ContextMenu" ) ; if ( r [ s ] ) { return r [ s ] ( u , t ) } if ( i . MathZoom ) { return i . MathZoom . HandleEvent ( u , s , t ) } } , False : function ( r ) { if ( ! r ) { r = window . event } if ( r ) { if ( r . preventDefault ) { r . preventDefault ( ) } if ( r . stopPropagation ) { r . stopPropagation ( ) } r . cancelBubble = true ; r . returnValue = false } return false } , ContextMenu : function ( u , F , x ) { var C = b [ F . jaxID ] , w = C . getJaxFromMath ( F ) ; var G = ( C . config . showMathMenu != null ? C : d ) . config . showMathMenu ; if ( ! G || ( k . context !== "MathJax" && ! x ) ) { return } if ( c . msieEventBug ) { u = window . event || u } n . ClearSelection ( ) ; f . ClearHoverTimer ( ) ; if ( w . hover ) { if ( w . hover . remove ) { clearTimeout ( w . hover . remove ) ; delete w . hover . remove } w . hover . nofade = true } var v = MathJax . Menu ; var H , E ; if ( v ) { if ( v . loadingDomain ) { return n . False ( u ) } H = m . loadDomain ( "MathMenu" ) ; if ( ! H ) { v . jax = w ; var s = v . menu . Find ( "Show Math As" ) . menu ; s . items [ 0 ] . name = w . sourceMenuTitle ; s . items [ 0 ] . format = ( w . sourceMenuFormat || "MathML" ) ; s . items [ 1 ] . name = j [ w . inputJax ] . sourceMenuTitle ; var B = s . items [ 2 ] ; B . disabled = true ; var r = B . menu . items ; annotationList = MathJax . Hub . Config . semanticsAnnotations ; for ( var A = 0 , z = r . length ; A < z ; A ++ ) { var t = r [ A ] . name [ 1 ] ; if ( w . root && w . root . getAnnotation ( t ) !== null ) { B . disabled = false ; r [ A ] . hidden = false } else { r [ A ] . hidden = true } } var y = v . menu . Find ( "Math Settings" , "MathPlayer" ) ; y . hidden = ! ( w . outputJax === "NativeMML" && d . Browser . hasMathPlayer ) ; return v . menu . Post ( u ) } v . loadingDomain = true ; E = function ( ) { delete v . loadingDomain } } else { if ( l . loadingMathMenu ) { return n . False ( u ) } l . loadingMathMenu = true ; H = l . Require ( "[MathJax]/extensions/MathMenu.js" ) ; E = function ( ) { delete l . loadingMathMenu ; if ( ! MathJax . Menu ) { MathJax . Menu = { } } } } var D = { pageX : u . pageX , pageY : u . pageY , clientX : u . clientX , clientY : u . clientY } ; g . Queue ( H , E , [ "ContextMenu" , n , D , F , x ] ) ; return n . False ( u ) } , AltContextMenu : function ( t , s ) { var u = b [ s . jaxID ] ; var r = ( u . config . showMathMenu != null ? u : d ) . config . showMathMenu ; if ( r ) { r = ( u . config . showMathMenuMSIE != null ? u : d ) . config . showMathMenuMSIE ; if ( k . context === "MathJax" && ! k . mpContext && r ) { if ( ! c . noContextMenuBug || t . button !== n . RIGHTBUTTON ) { return } } else { if ( ! t [ n . MENUKEY ] || t . button !== n . LEFTBUTTON ) { return } } return u . ContextMenu ( t , s , true ) } } , ClearSelection : function ( ) { if ( c . safariContextMenuBug ) { setTimeout ( "window.getSelection().empty()" , 0 ) } if ( document . selection ) { setTimeout ( "document.selection.empty()" , 0 ) } } , getBBox : function ( t ) { t . appendChild ( c . topImg ) ; var s = c . topImg . offsetTop , u = t . offsetHeight - s , r = t . offsetWidth ; t . removeChild ( c . topImg ) ; return { w : r , h : s , d : u } } } ; var f = c . Hover = { Mouseover : function ( t , s ) { if ( k . discoverable || k . zoom === "Hover" ) { var v = t . fromElement || t . relatedTarget , u = t . toElement || t . target ; if ( v && u && ( v . isMathJax != u . isMathJax || d . getJaxFor ( v ) !== d . getJaxFor ( u ) ) ) { var r = this . getJaxFromMath ( s ) ; if ( r . hover ) { f . ReHover ( r ) } else
( function ( a , d , f , c , j ) { var k = "2.3" ; var i = a . CombineConfig ( "MathZoom" , { styles : { "#MathJax_Zoom" : { position : "absolute" , "background-color" : "#F0F0F0" , overflow : "auto" , display : "block" , "z-index" : 301 , padding : ".5em" , border : "1px solid black" , margin : 0 , "font-weight" : "normal" , "font-style" : "normal" , "text-align" : "left" , "text-indent" : 0 , "text-transform" : "none" , "line-height" : "normal" , "letter-spacing" : "normal" , "word-spacing" : "normal" , "word-wrap" : "normal" , "white-space" : "nowrap" , "float" : "none" , "box-shadow" : "5px 5px 15px #AAAAAA" , "-webkit-box-shadow" : "5px 5px 15px #AAAAAA" , "-moz-box-shadow" : "5px 5px 15px #AAAAAA" , "-khtml-box-shadow" : "5px 5px 15px #AAAAAA" , filter : "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')" } , "#MathJax_ZoomOverlay" : { position : "absolute" , left : 0 , top : 0 , "z-index" : 300 , display : "inline-block" , width : "100%" , height : "100%" , border : 0 , padding : 0 , margin : 0 , "background-color" : "white" , opacity : 0 , filter : "alpha(opacity=0)" } , "#MathJax_ZoomFrame" : { position : "relative" , display : "inline-block" , height : 0 , width : 0 } , "#MathJax_ZoomEventTrap" : { position : "absolute" , left : 0 , top : 0 , "z-index" : 302 , display : "inline-block" , border : 0 , padding : 0 , margin : 0 , "background-color" : "white" , opacity : 0 , filter : "alpha(opacity=0)" } } } ) ; var e , b , g ; MathJax . Hub . Register . StartupHook ( "MathEvents Ready" , function ( ) { g = MathJax . Extension . MathEvents . Event ; e = MathJax . Extension . MathEvents . Event . False ; b = MathJax . Extension . MathEvents . Hover } ) ; var h = MathJax . Extension . MathZoom = { version : k , settings : a . config . menuSettings , scrollSize : 18 , HandleEvent : function ( n , l , m ) { if ( h . settings . CTRL && ! n . ctrlKey ) { return true } if ( h . settings . ALT && ! n . altKey ) { return true } if ( h . settings . CMD && ! n . metaKey ) { return true } if ( h . settings . Shift && ! n . shiftKey ) { return true } if ( ! h [ l ] ) { return true } return h [ l ] ( n , m ) } , Click : function ( m , l ) { if ( this . settings . zoom === "Click" ) { return this . Zoom ( m , l ) } } , DblClick : function ( m , l ) { if ( this . settings . zoom === "Double-Click" || this . settings . zoom === "DoubleClick" ) { return this . Zoom ( m , l ) } } , Hover : function ( m , l ) { if ( this . settings . zoom === "Hover" ) { this . Zoom ( m , l ) ; return true } return false } , Zoom : function ( n , s ) { this . Remove ( ) ; b . ClearHoverTimer ( ) ; g . ClearSelection ( ) ; var q = MathJax . OutputJax [ s . jaxID ] ; var o = q . getJaxFromMath ( s ) ; if ( o . hover ) { b . UnHover ( o ) } var l = Math . floor ( 0.85 * document . body . clientWidth ) , r = Math . floor ( 0.85 * Math . max ( document . body . clientHeight , document . documentElement . clientHeight ) ) ; var m = d . Element ( "span" , { id : "MathJax_ZoomFrame" } , [ [ "span" , { id : "MathJax_ZoomOverlay" , onmousedown : this . Remove } ] , [ "span" , { id : "MathJax_Zoom" , onclick : this . Remove , style : { visibility : "hidden" , fontSize : this . settings . zscale , "max-width" : l + "px" , "max-height" : r + "px" } } , [ [ "span" , { style : { display : "inline-block" , "white-space" : "nowrap" } } ] ] ] ] ) ; var x = m . lastChild , u = x . firstChild , p = m . firstChild ; s . parentNode . insertBefore ( m , s ) ; s . parentNode . insertBefore ( s , m ) ; if ( u . addEventListener ) { u . addEventListener ( "mousedown" , this . Remove , true ) } if ( this . msieTrapEventBug ) { var w = d . Element ( "span" , { id : "MathJax_ZoomEventTrap" , onmousedown : this . Remove } ) ; m . insertBefore ( w , x ) } if ( this . msieZIndexBug ) { var t = d . addElement ( document . body , "img" , { src : "about:blank" , id : "MathJax_ZoomTracker" , width : 0 , height : 0 , style : { width : 0 , height : 0 , position : "relative" } } ) ; m . style . position = "relative" ; m . style . zIndex = i . styles [ "#MathJax_ZoomOverlay" ] [ "z-index" ] ; m = t } var v = q . Zoom ( o , u , s , l , r ) ; if ( this . msiePositionBug ) { if ( this . msieSizeBug ) { x . style . height = v . zH + "px" ; x . style . width = v . zW + "px" } if ( x . offsetHeight > r ) { x . style . height = r + "px" ; x . style . width = ( v . zW + this . scrollSize ) + "px" } if ( x . offsetWidth > l ) { x . style . width = l + "px" ; x . style . height = ( v . zH + this . scrollSize ) + "px" } } if ( this . operaPositionBug ) { x . style . width = Math . min ( l , v . zW ) + "px" } if ( x . offsetWidth && x . offsetWidth < l && x . offsetHeight < r ) { x . style . overflow = "visible" } this . Position ( x , v ) ; if ( this . msieTrapEventBug ) { w . style . height = x . clientHeight + "px" ; w . style . width = x . clientWidth + "px" ; w . style . left = ( parseFloat ( x . style . left ) + x . clientLeft ) + "px" ; w . style . top = ( parseFloat ( x . style . top ) + x . clientTop ) + "px" } x . style . visibility = "" ; if ( this . settings . zoom === "Hover" ) { p . onmouseover = this . Remove } if ( window . addEventListener ) { addEventListener ( "resize" , this . Resize , false ) } else { if ( window . attachEvent ) { attachEvent ( "onresize" ,
( function ( c , g , k , f , b ) { var q = "2.3" ; var j = MathJax . Callback . Signal ( "menu" ) ; MathJax . Extension . MathMenu = { version : q , signal : j } ; var o = function ( r ) { return MathJax . Localization . _ . apply ( MathJax . Localization , [ [ "MathMenu" , r ] ] . concat ( [ ] . slice . call ( arguments , 1 ) ) ) } ; var n = c . Browser . isPC , l = c . Browser . isMSIE , e = ( ( document . documentMode || 0 ) > 8 ) ; var i = ( n ? null : "5px" ) ; var p = c . CombineConfig ( "MathMenu" , { delay : 150 , closeImg : k . fileURL ( b . imageDir + "/CloseX-31.png" ) , showRenderer : true , showMathPlayer : true , showFontMenu : false , showContext : false , showDiscoverable : false , showLocale : true , showLocaleURL : false , semanticsAnnotations : { TeX : [ "TeX" , "LaTeX" , "application/x-tex" ] , StarMath : [ "StarMath 5.0" ] , Maple : [ "Maple" ] , ContentMathML : [ "MathML-Content" , "application/mathml-content+xml" ] , OpenMath : [ "OpenMath" ] } , windowSettings : { status : "no" , toolbar : "no" , locationbar : "no" , menubar : "no" , directories : "no" , personalbar : "no" , resizable : "yes" , scrollbars : "yes" , width : 400 , height : 300 , left : Math . round ( ( screen . width - 400 ) / 2 ) , top : Math . round ( ( screen . height - 300 ) / 3 ) } , styles : { "#MathJax_About" : { position : "fixed" , left : "50%" , width : "auto" , "text-align" : "center" , border : "3px outset" , padding : "1em 2em" , "background-color" : "#DDDDDD" , color : "black" , cursor : "default" , "font-family" : "message-box" , "font-size" : "120%" , "font-style" : "normal" , "text-indent" : 0 , "text-transform" : "none" , "line-height" : "normal" , "letter-spacing" : "normal" , "word-spacing" : "normal" , "word-wrap" : "normal" , "white-space" : "nowrap" , "float" : "none" , "z-index" : 201 , "border-radius" : "15px" , "-webkit-border-radius" : "15px" , "-moz-border-radius" : "15px" , "-khtml-border-radius" : "15px" , "box-shadow" : "0px 10px 20px #808080" , "-webkit-box-shadow" : "0px 10px 20px #808080" , "-moz-box-shadow" : "0px 10px 20px #808080" , "-khtml-box-shadow" : "0px 10px 20px #808080" , filter : "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')" } , ".MathJax_Menu" : { position : "absolute" , "background-color" : "white" , color : "black" , width : "auto" , padding : ( n ? "2px" : "5px 0px" ) , border : "1px solid #CCCCCC" , margin : 0 , cursor : "default" , font : "menu" , "text-align" : "left" , "text-indent" : 0 , "text-transform" : "none" , "line-height" : "normal" , "letter-spacing" : "normal" , "word-spacing" : "normal" , "word-wrap" : "normal" , "white-space" : "nowrap" , "float" : "none" , "z-index" : 201 , "border-radius" : i , "-webkit-border-radius" : i , "-moz-border-radius" : i , "-khtml-border-radius" : i , "box-shadow" : "0px 10px 20px #808080" , "-webkit-box-shadow" : "0px 10px 20px #808080" , "-moz-box-shadow" : "0px 10px 20px #808080" , "-khtml-box-shadow" : "0px 10px 20px #808080" , filter : "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')" } , ".MathJax_MenuItem" : { padding : ( n ? "2px 2em" : "1px 2em" ) , background : "transparent" } , ".MathJax_MenuArrow" : { position : "absolute" , right : ".5em" , color : "#666666" , "font-family" : ( l ? "'Arial unicode MS'" : null ) } , ".MathJax_MenuActive .MathJax_MenuArrow" : { color : "white" } , ".MathJax_MenuCheck" : { position : "absolute" , left : ".7em" , "font-family" : ( l ? "'Arial unicode MS'" : null ) } , ".MathJax_MenuRadioCheck" : { position : "absolute" , left : ( n ? "1em" : ".7em" ) } , ".MathJax_MenuLabel" : { padding : ( n ? "2px 2em 4px 1.33em" : "1px 2em 3px 1.33em" ) , "font-style" : "italic" } , ".MathJax_MenuRule" : { "border-top" : ( n ? "1px solid #CCCCCC" : "1px solid #DDDDDD" ) , margin : ( n ? "4px 1px 0px" : "4px 3px" ) } , ".MathJax_MenuDisabled" : { color : "GrayText" } , ".MathJax_MenuActive" : { "background-color" : ( n ? "Highlight" : "#606872" ) , color : ( n ? "HighlightText" : "white" ) } , ".MathJax_Menu_Close" : { position : "absolute" , width : "31px" , height : "31px" , top : "-15px" , left : "-15px" } } } ) ; var h , d ; c . Register . StartupHook ( "MathEvents Ready" , function ( ) { h = MathJax . Extension . MathEvents . Event . False ; d = MathJax . Extension . MathEvents . Hover } ) ; var a = MathJax . Menu = MathJax . Object . Subclass ( { version : q , items : [ ] , posted : false , title : null , margin : 5 , Init : function ( r ) { this . items = [ ] . slice . call ( arguments , 0 ) } , With : function ( r ) { if ( r ) { c . Insert ( this , r ) } return this } , Post : function ( s , B ) { if ( ! s ) { s = window . event } var r = document . getElementById ( "MathJax_MenuFrame" ) ; if ( ! r ) { r = a . Background ( this ) ; delete m . lastItem ; delete m . lastMenu ; delete a . skipUp ; j . Post ( [ "post" , a . jax ] ) } var t = g . addElement ( r , "div" , { onmouseup : a . Mouseup , ondblclick : h , ondragstart : h , onselectstart : h , oncontext
MathJax . ElementJax . mml = MathJax . ElementJax ( { mimeType : "jax/mml" } , { id : "mml" , version : "2.3" , directory : MathJax . ElementJax . directory + "/mml" , extensionDir : MathJax . ElementJax . extensionDir + "/mml" , optableDir : MathJax . ElementJax . directory + "/mml/optable" } ) ; MathJax . ElementJax . mml . Augment ( { Init : function ( ) { if ( arguments . length === 1 && arguments [ 0 ] . type === "math" ) { this . root = arguments [ 0 ] } else { this . root = MathJax . ElementJax . mml . math . apply ( this , arguments ) } if ( this . root . attr && this . root . attr . mode ) { if ( ! this . root . display && this . root . attr . mode === "display" ) { this . root . display = "block" ; this . root . attrNames . push ( "display" ) } delete this . root . attr . mode ; for ( var b = 0 , a = this . root . attrNames . length ; b < a ; b ++ ) { if ( this . root . attrNames [ b ] === "mode" ) { this . root . attrNames . splice ( b , 1 ) ; break } } } } } , { INHERIT : "_inherit_" , AUTO : "_auto_" , SIZE : { INFINITY : "infinity" , SMALL : "small" , NORMAL : "normal" , BIG : "big" } , COLOR : { TRANSPARENT : "transparent" } , VARIANT : { NORMAL : "normal" , BOLD : "bold" , ITALIC : "italic" , BOLDITALIC : "bold-italic" , DOUBLESTRUCK : "double-struck" , FRAKTUR : "fraktur" , BOLDFRAKTUR : "bold-fraktur" , SCRIPT : "script" , BOLDSCRIPT : "bold-script" , SANSSERIF : "sans-serif" , BOLDSANSSERIF : "bold-sans-serif" , SANSSERIFITALIC : "sans-serif-italic" , SANSSERIFBOLDITALIC : "sans-serif-bold-italic" , MONOSPACE : "monospace" , INITIAL : "inital" , TAILED : "tailed" , LOOPED : "looped" , STRETCHED : "stretched" , CALIGRAPHIC : "-tex-caligraphic" , OLDSTYLE : "-tex-oldstyle" } , FORM : { PREFIX : "prefix" , INFIX : "infix" , POSTFIX : "postfix" } , LINEBREAK : { AUTO : "auto" , NEWLINE : "newline" , NOBREAK : "nobreak" , GOODBREAK : "goodbreak" , BADBREAK : "badbreak" } , LINEBREAKSTYLE : { BEFORE : "before" , AFTER : "after" , DUPLICATE : "duplicate" , INFIXLINBREAKSTYLE : "infixlinebreakstyle" } , INDENTALIGN : { LEFT : "left" , CENTER : "center" , RIGHT : "right" , AUTO : "auto" , ID : "id" , INDENTALIGN : "indentalign" } , INDENTSHIFT : { INDENTSHIFT : "indentshift" } , LINETHICKNESS : { THIN : "thin" , MEDIUM : "medium" , THICK : "thick" } , NOTATION : { LONGDIV : "longdiv" , ACTUARIAL : "actuarial" , RADICAL : "radical" , BOX : "box" , ROUNDEDBOX : "roundedbox" , CIRCLE : "circle" , LEFT : "left" , RIGHT : "right" , TOP : "top" , BOTTOM : "bottom" , UPDIAGONALSTRIKE : "updiagonalstrike" , DOWNDIAGONALSTRIKE : "downdiagonalstrike" , UPDIAGONALARROW : "updiagonalarrow" , VERTICALSTRIKE : "verticalstrike" , HORIZONTALSTRIKE : "horizontalstrike" , MADRUWB : "madruwb" } , ALIGN : { TOP : "top" , BOTTOM : "bottom" , CENTER : "center" , BASELINE : "baseline" , AXIS : "axis" , LEFT : "left" , RIGHT : "right" } , LINES : { NONE : "none" , SOLID : "solid" , DASHED : "dashed" } , SIDE : { LEFT : "left" , RIGHT : "right" , LEFTOVERLAP : "leftoverlap" , RIGHTOVERLAP : "rightoverlap" } , WIDTH : { AUTO : "auto" , FIT : "fit" } , ACTIONTYPE : { TOGGLE : "toggle" , STATUSLINE : "statusline" , TOOLTIP : "tooltip" , INPUT : "input" } , LENGTH : { VERYVERYTHINMATHSPACE : "veryverythinmathspace" , VERYTHINMATHSPACE : "verythinmathspace" , THINMATHSPACE : "thinmathspace" , MEDIUMMATHSPACE : "mediummathspace" , THICKMATHSPACE : "thickmathspace" , VERYTHICKMATHSPACE : "verythickmathspace" , VERYVERYTHICKMATHSPACE : "veryverythickmathspace" , NEGATIVEVERYVERYTHINMATHSPACE : "negativeveryverythinmathspace" , NEGATIVEVERYTHINMATHSPACE : "negativeverythinmathspace" , NEGATIVETHINMATHSPACE : "negativethinmathspace" , NEGATIVEMEDIUMMATHSPACE : "negativemediummathspace" , NEGATIVETHICKMATHSPACE : "negativethickmathspace" , NEGATIVEVERYTHICKMATHSPACE : "negativeverythickmathspace" , NEGATIVEVERYVERYTHICKMATHSPACE : "negativeveryverythickmathspace" } , OVERFLOW : { LINBREAK : "linebreak" , SCROLL : "scroll" , ELIDE : "elide" , TRUNCATE : "truncate" , SCALE : "scale" } , UNIT : { EM : "em" , EX : "ex" , PX : "px" , IN : "in" , CM : "cm" , MM : "mm" , PT : "pt" , PC : "pc" } , TEXCLASS : { ORD : 0 , OP : 1 , BIN : 2 , REL : 3 , OPEN : 4 , CLOSE : 5 , PUNCT : 6 , INNER : 7 , VCENTER : 8 , NONE : - 1 } , TEXCLASSNAMES : [ "ORD" , "OP" , "BIN" , "REL" , "OPEN" , "CLOSE" , "PUNCT" , "INNER" , "VCENTER" ] , copyAttributes : { fontfamily : true , fontsize : true , fontweight : true , fontstyle : true , color : true , background : true , id : true , "class" : true , href : true , style : true } , skipAttributes : { texClass : true , useHeight : true , texprimestyle : true } , copyAttributeNames : [ "fontfamily" , "fontsize" , "fontweight" , "fontstyle" , "color" , "background" , "id" , "class" , "href" , "style" ] , Error : function ( d , e ) { var c = this . merror ( d ) , b = MathJax . Localization . fontDirection ( ) , a = MathJax . Localization . fontFamily ( ) ; if ( e ) { c = c . With ( e ) } if ( b || a ) { c = this . mstyle ( c ) ; if ( b ) { c . dir = b } if ( a ) { c . style . fontFamily = "font-family: " + a } } retur
MathJax . Hub . Register . LoadHook ( "[MathJax]/jax/element/mml/jax.js" , function ( ) { var b = "2.3" ; var a = MathJax . ElementJax . mml ; SETTINGS = MathJax . Hub . config . menuSettings ; a . mbase . Augment ( { toMathML : function ( k ) { var g = ( this . inferred && this . parent . inferRow ) ; if ( k == null ) { k = "" } var e = this . type , d = this . toMathMLattributes ( ) ; if ( e === "mspace" ) { return k + "<" + e + d + " />" } var j = [ ] ; var h = ( this . isToken ? "" : k + ( g ? "" : " " ) ) ; for ( var f = 0 , c = this . data . length ; f < c ; f ++ ) { if ( this . data [ f ] ) { j . push ( this . data [ f ] . toMathML ( h ) ) } else { if ( ! this . isToken ) { j . push ( h + "<mrow />" ) } } } if ( this . isToken ) { return k + "<" + e + d + ">" + j . join ( "" ) + "</" + e + ">" } if ( g ) { return j . join ( "\n" ) } if ( j . length === 0 || ( j . length === 1 && j [ 0 ] === "" ) ) { return k + "<" + e + d + " />" } return k + "<" + e + d + ">\n" + j . join ( "\n" ) + "\n" + k + "</" + e + ">" } , toMathMLattributes : function ( ) { var j = [ ] , g = this . defaults ; var c = ( this . attrNames || a . copyAttributeNames ) , l = a . skipAttributes ; if ( this . type === "math" && ( ! this . attr || ! this . attr . xmlns ) ) { j . push ( 'xmlns="http://www.w3.org/1998/Math/MathML"' ) } if ( ! this . attrNames ) { if ( this . type === "mstyle" ) { g = a . math . prototype . defaults } for ( var d in g ) { if ( ! l [ d ] && g . hasOwnProperty ( d ) ) { var e = ( d === "open" || d === "close" ) ; if ( this [ d ] != null && ( e || this [ d ] !== g [ d ] ) ) { var k = this [ d ] ; delete this [ d ] ; if ( e || this . Get ( d ) !== k ) { j . push ( d + '="' + this . toMathMLattribute ( k ) + '"' ) } this [ d ] = k } } } } for ( var h = 0 , f = c . length ; h < f ; h ++ ) { if ( c [ h ] === "class" ) { continue } k = ( this . attr || { } ) [ c [ h ] ] ; if ( k == null ) { k = this [ c [ h ] ] } if ( k != null ) { j . push ( c [ h ] + '="' + this . toMathMLquote ( k ) + '"' ) } } this . toMathMLclass ( j ) ; if ( j . length ) { return " " + j . join ( " " ) } else { return "" } } , toMathMLclass : function ( c ) { var e = [ ] ; if ( this [ "class" ] ) { e . push ( this [ "class" ] ) } if ( this . isa ( a . TeXAtom ) && SETTINGS . texHints ) { var d = [ "ORD" , "OP" , "BIN" , "REL" , "OPEN" , "CLOSE" , "PUNCT" , "INNER" , "VCENTER" ] [ this . texClass ] ; if ( d ) { e . push ( "MJX-TeXAtom-" + d ) } } if ( this . mathvariant && this . toMathMLvariants [ this . mathvariant ] ) { e . push ( "MJX" + this . mathvariant ) } if ( this . variantForm ) { e . push ( "MJX-variant" ) } if ( e . length ) { c . unshift ( 'class="' + e . join ( " " ) + '"' ) } } , toMathMLattribute : function ( c ) { if ( typeof ( c ) === "string" && c . replace ( / /g , "" ) . match ( /^(([-+])?(\d+(\.\d*)?|\.\d+))mu$/ ) ) { return RegExp . $2 + ( ( 1 / 18 ) * RegExp . $3 ) . toFixed ( 3 ) . replace ( /\.?0+$/ , "" ) + "em" } else { if ( this . toMathMLvariants [ c ] ) { return this . toMathMLvariants [ c ] } } return this . toMathMLquote ( c ) } , toMathMLvariants : { "-tex-caligraphic" : a . VARIANT . SCRIPT , "-tex-caligraphic-bold" : a . VARIANT . BOLDSCRIPT , "-tex-oldstyle" : a . VARIANT . NORMAL , "-tex-oldstyle-bold" : a . VARIANT . BOLD , "-tex-mathit" : a . VARIANT . ITALIC } , toMathMLquote : function ( f ) { f = String ( f ) . split ( "" ) ; for ( var g = 0 , d = f . length ; g < d ; g ++ ) { var k = f [ g ] . charCodeAt ( 0 ) ; if ( k <= 55295 || 57344 <= k ) { if ( k < 32 || k > 126 ) { f [ g ] = "&#x" + k . toString ( 16 ) . toUpperCase ( ) + ";" } else { var j = { "&" : "&" , "<" : "<" , ">" : ">" , '"' : """ } [ f [ g ] ] ; if ( j ) { f [ g ] = j } } } else { if ( g + 1 < d ) { var h = f [ g + 1 ] . charCodeAt ( 0 ) ; var e = ( ( ( k - 55296 ) << 10 ) + ( h - 56320 ) + 65536 ) ; f [ g ] = "&#x" + e . toString ( 16 ) . toUpperCase ( ) + ";" ; f [ g + 1 ] = "" ; g ++ } else { f [ g ] = "" } } } return f . join ( "" ) } } ) ; a . msubsup . Augment ( { toMathML : function ( h ) { var e = this . type ; if ( this . data [ this . sup ] == null ) { e = "msub" } if ( this . data [ this . sub ] == null ) { e = "msup" } var d = this . toMathMLattributes ( ) ; delete this . data [ 0 ] . inferred ; var g = [ ] ; for ( var f = 0 , c = this . data . length ; f < c ; f ++ ) { if ( this . data [ f ] ) { g . push ( this . data [ f ] . toMathML ( h + " " ) ) } } return h + "<" + e + d + ">\n" + g . join ( "\n" ) + "\n" + h + "</" + e + ">" } } ) ; a . munderover . Augment ( { toMathML : function ( h ) { var e = this . type ; if ( this . data [ this . under ] == null ) { e = "mover" } if ( this . data [ this . over ] == null ) { e = "munder" } var d = this . toMathMLattributes ( ) ; delete this . data [ 0 ] . inferred ; var g = [ ] ; for ( var f = 0 , c = this . data . length ; f < c ; f ++ ) { if ( this . data [ f ] ) { g . push ( this . data [ f ] . toMathML ( h + " " ) ) } } return h + "<" + e + d + ">\n" + g . join ( "\n" ) + "\n" + h + "</" + e + ">" } } ) ; a . TeXAtom . Augment ( { toMathML : function ( d ) { var c = this . toMathMLattributes ( ) ; if ( ! c && this . data [ 0 ] . data . length === 1 ) { return d . substr ( 2 ) + this . data [ 0 ] . toMathML ( d ) } return d + "<mrow" + c + ">\n" + this . data [ 0 ] . toMathML ( d + " " ) + "\n" + d + "</mrow>" } } ) ; a . chars . Augment ( { toMathML : function ( c ) { return ( c || "" ) + this . toMathMLquote ( this . toString ( ) ) } } ) ; a . entity . Augment ( { toMathML : function ( c ) { return ( c || "" ) + "&" + this . data [ 0 ] + ";<!-- " + this . toString ( ) + " -->" } } ) ; a . xml . Augment ( { toMathML : function ( c ) { return ( c || "" ) + this . toString ( ) } } ) ; MathJax . Hub . Register . St
( function ( c , d ) { var a ; var b = function ( e ) { return MathJax . Localization . _ . apply ( MathJax . Localization , [ [ "MathML" , e ] ] . concat ( [ ] . slice . call ( arguments , 1 ) ) ) } ; c . Parse = MathJax . Object . Subclass ( { Init : function ( e ) { this . Parse ( e ) } , Parse : function ( g ) { var h ; if ( typeof g !== "string" ) { h = g . parentNode } else { h = c . ParseXML ( this . preProcessMath . call ( this , g ) ) ; if ( h == null ) { c . Error ( [ "ErrorParsingMathML" , "Error parsing MathML" ] ) } } var f = h . getElementsByTagName ( "parsererror" ) [ 0 ] ; if ( f ) { c . Error ( [ "ParsingError" , "Error parsing MathML: %1" , f . textContent . replace ( /This page.*?errors:|XML Parsing Error: |Below is a rendering of the page.*/g , "" ) ] ) } if ( h . childNodes . length !== 1 ) { c . Error ( [ "MathMLSingleElement" , "MathML must be formed by a single element" ] ) } if ( h . firstChild . nodeName . toLowerCase ( ) === "html" ) { var e = h . getElementsByTagName ( "h1" ) [ 0 ] ; if ( e && e . textContent === "XML parsing error" && e . nextSibling ) { c . Error ( [ "ParsingError" , "Error parsing MathML: %1" , String ( e . nextSibling . nodeValue ) . replace ( /fatal parsing error: / , "" ) ] ) } } if ( h . firstChild . nodeName . toLowerCase ( ) . replace ( /^[a-z]+:/ , "" ) !== "math" ) { c . Error ( [ "MathMLRootElement" , "MathML must be formed by a <math> element, not %1" , "<" + h . firstChild . nodeName + ">" ] ) } this . mml = this . MakeMML ( h . firstChild ) } , MakeMML : function ( h ) { var i = String ( h . getAttribute ( "class" ) || "" ) ; var f , g = h . nodeName . toLowerCase ( ) . replace ( /^[a-z]+:/ , "" ) ; var e = ( i . match ( /(^| )MJX-TeXAtom-([^ ]*)/ ) ) ; if ( e ) { f = this . TeXAtom ( e [ 2 ] ) } else { if ( ! ( a [ g ] && a [ g ] . isa && a [ g ] . isa ( a . mbase ) ) ) { MathJax . Hub . signal . Post ( [ "MathML Jax - unknown node type" , g ] ) ; return a . Error ( b ( "UnknownNodeType" , "Unknown node type: %1" , g ) ) } else { f = a [ g ] ( ) } } this . AddAttributes ( f , h ) ; this . CheckClass ( f , f [ "class" ] ) ; this . AddChildren ( f , h ) ; if ( c . config . useMathMLspacing ) { f . useMMLspacing = 8 } return f } , TeXAtom : function ( f ) { var e = a . TeXAtom ( ) . With ( { texClass : a . TEXCLASS [ f ] } ) ; if ( e . texClass === a . TEXCLASS . OP ) { e . movesupsub = e . movablelimits = true } return e } , CheckClass : function ( f , h ) { h = ( h || "" ) . split ( / / ) ; var j = [ ] ; for ( var g = 0 , e = h . length ; g < e ; g ++ ) { if ( h [ g ] . substr ( 0 , 4 ) === "MJX-" ) { if ( h [ g ] === "MJX-arrow" ) { if ( ! f . notation . match ( "/" + a . NOTATION . UPDIAGONALARROW + "/" ) ) { f . notation += " " + a . NOTATION . UPDIAGONALARROW } } else { if ( h [ g ] === "MJX-variant" ) { f . variantForm = true ; if ( ! MathJax . Extension [ "TeX/AMSsymbols" ] ) { MathJax . Hub . RestartAfter ( MathJax . Ajax . Require ( "[MathJax]/extensions/TeX/AMSsymbols.js" ) ) } } else { if ( h [ g ] . substr ( 0 , 11 ) !== "MJX-TeXAtom" ) { f . mathvariant = h [ g ] . substr ( 3 ) ; if ( f . mathvariant === "-tex-caligraphic-bold" || f . mathvariant === "-tex-oldstyle-bold" ) { if ( ! MathJax . Extension [ "TeX/boldsymbol" ] ) { MathJax . Hub . RestartAfter ( MathJax . Ajax . Require ( "[MathJax]/extensions/TeX/boldsymbol.js" ) ) } } } } } } else { j . push ( h [ g ] ) } } if ( j . length ) { f [ "class" ] = j . join ( " " ) } else { delete f [ "class" ] } } , AddAttributes : function ( g , j ) { g . attr = { } ; g . attrNames = [ ] ; for ( var h = 0 , e = j . attributes . length ; h < e ; h ++ ) { var f = j . attributes [ h ] . name ; if ( f == "xlink:href" ) { f = "href" } if ( f . match ( /:/ ) ) { continue } if ( f . match ( /^_moz-math-((column|row)(align|line)|font-style)$/ ) ) { continue } var k = j . attributes [ h ] . value ; k = this . filterAttribute ( f , k ) ; if ( k != null ) { if ( k . toLowerCase ( ) === "true" ) { k = true } else { if ( k . toLowerCase ( ) === "false" ) { k = false } } if ( g . defaults [ f ] != null || a . copyAttributes [ f ] ) { g [ f ] = k } else { g . attr [ f ] = k } g . attrNames . push ( f ) } } } , filterAttribute : function ( e , f ) { return f } , AddChildren : function ( e , g ) { for ( var k = 0 , j = g . childNodes . length ; k < j ; k ++ ) { var f = g . childNodes [ k ] ; if ( f . nodeName === "#comment" ) { continue } if ( f . nodeName === "#text" ) { if ( e . isToken && ! e . mmlSelfClosing ) { var o = f . nodeValue . replace ( /&([a-z][a-z0-9]*);/ig , this . replaceEntity ) ; e . Append ( a . chars ( this . trimSpace ( o ) ) ) } else { if ( f . nodeValue . match ( /\S/ ) ) { c . Error ( [ "UnexpectedTextNode" , "Unexpected text node: %1" , "'" + f . nodeValue + "'" ] ) } } } else { if ( e . type === "annotation-xml" ) { e . Append ( a . xml ( f ) ) } else { var h = this . MakeMML ( f ) ; e . Append ( h ) ; if ( h . mmlSelfClosing && h . data . length ) { e . Append . apply ( e , h . data ) ; h . data = [ ] } } } } if ( e . type === "mrow" && e . data . length >= 2 ) { var l = e . data [ 0 ] , n = e . data [ e . data . length - 1 ] ; if ( l . type === "mo" && l . Get ( "fence" ) && n . type === "mo" && n . Get ( "fence" ) ) { if ( l . data [ 0 ] ) { e . open = l . data . join ( "" ) } if ( n . data [ 0 ] ) { e . close = n . data . join ( "" ) } } } } , preProcessMath : function ( f ) { if ( f . match ( /^<[a-z]+:/i ) && ! f . match ( /^<[^<>]* xmlns:/ ) ) { f = f . replace ( /^<([a-z]+)(:math)/i , ' < $1$2
2013-10-09 01:15:00 +00:00
MathJax . Ajax . loadComplete ( "[MathJax]/config/MML_HTMLorMML.js" ) ;