2012-03-01 01:21:20 +00:00
/ *
2012-03-12 20:54:04 +00:00
* / M a t h J a x / c o n f i g / A M _ H T M L o r M M L - f u l l . j s
2012-03-01 01:21:20 +00:00
*
* Copyright ( c ) 2010 - 11 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
* /
2012-03-12 20:54:04 +00:00
MathJax . Hub . Config ( { delayJaxRegistration : true } ) ;
MathJax . Ajax . Preloading (
"[MathJax]/jax/input/AsciiMath/config.js" ,
"[MathJax]/jax/output/HTML-CSS/config.js" ,
"[MathJax]/jax/output/NativeMML/config.js" ,
"[MathJax]/config/MMLorHTML.js" ,
"[MathJax]/extensions/asciimath2jax.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/AsciiMath/jax.js" ,
"[MathJax]/jax/output/NativeMML/jax.js" ,
"[MathJax]/jax/output/HTML-CSS/jax.js" ,
"[MathJax]/jax/output/HTML-CSS/autoload/mtable.js"
) ;
MathJax . Hub . Config ( { "v1.0-compatible" : false } ) ;
MathJax . InputJax . AsciiMath = MathJax . InputJax ( { id : "AsciiMath" , version : "2.0" , directory : MathJax . InputJax . directory + "/AsciiMath" , extensionDir : MathJax . InputJax . extensionDir + "/AsciiMath" , config : { displaystyle : true , decimal : "." } } ) ; MathJax . InputJax . AsciiMath . Register ( "math/asciimath" ) ; MathJax . InputJax . AsciiMath . loadComplete ( "config.js" ) ;
MathJax . OutputJax [ "HTML-CSS" ] = MathJax . OutputJax ( { id : "HTML-CSS" , version : "2.0.1" , directory : MathJax . OutputJax . directory + "/HTML-CSS" , extensionDir : MathJax . OutputJax . extensionDir + "/HTML-CSS" , autoloadDir : MathJax . OutputJax . directory + "/HTML-CSS/autoload" , fontDir : MathJax . OutputJax . directory + "/HTML-CSS/fonts" , webfontDir : MathJax . OutputJax . fontDir + "/HTML-CSS" , config : { scale : 100 , minScaleAdjust : 50 , availableFonts : [ "STIX" , "TeX" ] , preferredFont : "TeX" , webFont : "TeX" , imageFont : "TeX" , undefinedFamily : "STIXGeneral,'Arial Unicode MS',serif" , mtextFontInherit : false , EqnChunk : ( MathJax . Hub . Browser . isMobile ? 10 : 50 ) , EqnChunkFactor : 1.5 , EqnChunkDelay : 100 , linebreaks : { automatic : false , width : "container" } , styles : { ".MathJax_Display" : { "text-align" : "center" , margin : "1em 0em" } , ".MathJax .merror" : { "background-color" : "#FFFF88" , color : "#CC0000" , border : "1px solid #CC0000" , padding : "1px 3px" , "font-style" : "normal" , "font-size" : "90%" } , "#MathJax_Tooltip" : { "background-color" : "InfoBackground" , color : "InfoText" , border : "1px solid black" , "box-shadow" : "2px 2px 5px #AAAAAA" , "-webkit-box-shadow" : "2px 2px 5px #AAAAAA" , "-moz-box-shadow" : "2px 2px 5px #AAAAAA" , "-khtml-box-shadow" : "2px 2px 5px #AAAAAA" , filter : "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')" , padding : "3px 4px" } } } } ) ; if ( MathJax . Hub . Browser . isMSIE && document . documentMode >= 9 ) { delete MathJax . OutputJax [ "HTML-CSS" ] . config . styles [ "#MathJax_Tooltip" ] . filter } if ( ! MathJax . Hub . config . delayJaxRegistration ) { MathJax . OutputJax [ "HTML-CSS" ] . Register ( "jax/mml" ) } MathJax . Hub . Register . StartupHook ( "End Config" , [ function ( b , c ) { var a = b . Insert ( { minBrowserVersion : { Firefox : 3 , Opera : 9.52 , MSIE : 6 , Chrome : 0.3 , Safari : 2 , Konqueror : 4 } , inlineMathDelimiters : [ "$" , "$" ] , displayMathDelimiters : [ "$$" , "$$" ] , multilineDisplay : true , minBrowserTranslate : function ( f ) { var e = b . getJaxFor ( f ) , k = [ "[Math]" ] , j ; var h = document . createElement ( "span" , { className : "MathJax_Preview" } ) ; if ( e . inputJax === "TeX" ) { if ( e . root . Get ( "displaystyle" ) ) { j = a . displayMathDelimiters ; k = [ j [ 0 ] + e . originalText + j [ 1 ] ] ; if ( a . multilineDisplay ) { k = k [ 0 ] . split ( /\n/ ) } } else { j = a . inlineMathDelimiters ; k = [ j [ 0 ] + e . originalText . replace ( /^\s+/ , "" ) . replace ( /\s+$/ , "" ) + j [ 1 ] ] } } for ( var g = 0 , d = k . length ; g < d ; g ++ ) { h . appendChild ( document . createTextNode ( k [ g ] ) ) ; if ( g < d - 1 ) { h . appendChild ( document . createElement ( "br" ) ) } } f . parentNode . insertBefore ( h , f ) } } , ( b . config [ "HTML-CSS" ] || { } ) ) ; if ( b . Browser . version !== "0.0" && ! b . Browser . versionAtLeast ( a . minBrowserVersion [ b . Browser ] || 0 ) ) { c . Translate = a . minBrowserTranslate ; b . Config ( { showProcessingMessages : false } ) ; MathJax . Message . Set ( "Your browser does not support MathJax" , null , 4000 ) ; b . Startup . signal . Post ( "MathJax not supported" ) } } , MathJax . Hub , MathJax . OutputJax [ "HTML-CSS" ] ] ) ; MathJax . OutputJax [ "HTML-CSS" ] . loadComplete ( "config.js" ) ;
MathJax . OutputJax . NativeMML = MathJax . OutputJax ( { id : "NativeMML" , version : "2.0.1" , directory : MathJax . OutputJax . directory + "/NativeMML" , extensionDir : MathJax . OutputJax . extensionDir + "/NativeMML" , config : { scale : 100 , minScaleAdjust : 50 , styles : { "DIV.MathJax_MathML" : { "text-align" : "center" , margin : ".75em 0px" } } } } ) ; if ( ! MathJax . Hub . config . delayJaxRegistration ) { MathJax . OutputJax . NativeMML . Register ( "jax/mml" ) } MathJax . OutputJax . NativeMML . loadComplete ( "config.js" ) ;
( function ( c , g ) { var f = "2.0" ; 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 ( "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 . asciimath2jax = { version : "2.0" , config : { delimiters : [ [ "`" , "`" ] ] , skipTags : [ "script" , "noscript" , "style" , "textarea" , "pre" , "code" ] , ignoreClass : "asciimath2jax_ignore" , processClass : "asciimath2jax_process" , preview : "AsciiMath" } , PreProcess : function ( a ) { if ( ! this . configured ) { this . config = MathJax . Hub . CombineConfig ( "asciimath2jax" , this . config ) ; if ( this . config . Augment ) { MathJax . Hub . Insert ( this , this . config . Augment ) } this . configured = true } if ( typeof ( a ) === "string" ) { a = document . getElementById ( a ) } if ( ! a ) { a = document . body } if ( this . createPatterns ( ) ) { this . scanElement ( a , a . nextSibling ) } } , createPatterns : function ( ) { var d = [ ] , c , a , b = this . config ; this . match = { } ; if ( b . delimiters . length === 0 ) { return false } for ( c = 0 , a = b . delimiters . length ; c < a ; c ++ ) { d . push ( this . patternQuote ( b . delimiters [ c ] [ 0 ] ) ) ; this . match [ b . delimiters [ c ] [ 0 ] ] = { mode : "" , end : b . delimiters [ c ] [ 1 ] , pattern : this . endPattern ( b . delimiters [ c ] [ 1 ] ) } } this . start = new RegExp ( d . sort ( this . sortLength ) . join ( "|" ) , "g" ) ; this . skipTags = new RegExp ( "^(" + b . skipTags . join ( "|" ) + ")$" , "i" ) ; this . ignoreClass = new RegExp ( "(^| )(" + b . ignoreClass + ")( |$)" ) ; this . processClass = new RegExp ( "(^| )(" + b . processClass + ")( |$)" ) ; return true } , patternQuote : function ( a ) { return a . replace ( /([\^$(){}+*?\-|\[\]\:\\])/g , "\\$1" ) } , endPattern : function ( a ) { return new RegExp ( this . patternQuote ( a ) + "|\\\\." , "g" ) } , sortLength : function ( d , c ) { if ( d . length !== c . length ) { return c . length - d . length } return ( d == c ? 0 : ( d < c ? - 1 : 1 ) ) } , scanElement : function ( c , b , g ) { var a , e , d , f ; while ( c && c != b ) { if ( c . nodeName . toLowerCase ( ) === "#text" ) { if ( ! g ) { c = this . scanText ( c ) } } else { a = ( typeof ( c . className ) === "undefined" ? "" : c . className ) ; e = ( typeof ( c . tagName ) === "undefined" ? "" : c . tagName ) ; if ( typeof ( a ) !== "string" ) { a = String ( a ) } f = this . processClass . exec ( a ) ; if ( c . firstChild && ! a . match ( /(^| )MathJax/ ) && ( f || ! this . skipTags . exec ( e ) ) ) { d = ( g || this . ignoreClass . exec ( a ) ) && ! f ; this . scanElement ( c . firstChild , b , d ) } } if ( c ) { c = c . nextSibling } } } , scanText : function ( b ) { if ( b . nodeValue . replace ( /\s+/ , "" ) == "" ) { return b } var a , c ; this . search = { start : true } ; this . pattern = this . start ; while ( b ) { this . pattern . lastIndex = 0 ; while ( b && b . nodeName . toLowerCase ( ) === "#text" && ( a = this . pattern . exec ( b . nodeValue ) ) ) { if ( this . search . start ) { b = this . startMatch ( a , b ) } else { b = this . endMatch ( a , b ) } } if ( this . search . matched ) { b = this . encloseMath ( b ) } if ( b ) { do { c = b ; b = b . nextSibling } while ( b && ( b . nodeName . toLowerCase ( ) === "br" || b . nodeName . toLowerCase ( ) === "#comment" ) ) ; if ( ! b || b . nodeName !== "#text" ) { return c } } } return b } , startMatch : function ( a , b ) { var c = this . match [ a [ 0 ] ] ; if ( c != null ) { this . search = { end : c . end , mode : c . mode , open : b , olen : a [ 0 ] . length , opos : this . pattern . lastIndex - a [ 0 ] . length } ; this . switchPattern ( c . pattern ) } return b } , endMatch : function ( a , b ) { if ( a [ 0 ] == this . search . end ) { this . search . close = b ; this . search . cpos = this . pattern . lastIndex ; this . search . clen = ( this . search . isBeginEnd ? 0 : a [ 0 ] . length ) ; this . search . matched = true ; b = this . encloseMath ( b ) ; this . switchPattern ( this . start ) } return b } , switchPattern : function ( a ) { a . lastIndex = this . pattern . lastIndex ; this . pattern = a ; this . search . start = ( a === this . start ) } , encloseMath : function ( b ) { var a = this . search , f = a . close , e , c ; if ( a . cpos === f . length ) { f = f . nextSibling } else { f = f . splitText ( a . cpos ) } if ( ! f ) { e = f = MathJax . HTML . addText ( a . close . parentNode , "" ) } a . close = f ; c = ( a . opos ? a . open . splitText ( a . opos ) : a . open ) ; while ( c . nextSibling && c . nextSibling !== f ) { if ( c . nextSibling . nodeValue !== null ) { if ( c . nextSibling . nodeName === "#comment" ) { c . nodeValue += c . nextSibling . nodeValue . replace ( /^\[CDATA\[((.|\n|\r)*)\]\]$/ , "$1" ) } else { c . nodeValue += c . nextSibling . nodeValue } } else { if ( this . msieNewlineBug ) { c . nodeValue += ( c . nextSibling . nodeName . toLowerCase ( ) === "br" ? "\n" : " " ) } else { c . nodeValue += " " } } c . parentNode . removeChild ( c . nextSibling ) } var d = c . nodeValue . substr ( a . olen , c . nodeValue . length - a . olen - a . clen ) ; c . parentNode . removeChild ( c ) ; if ( this . config . preview !== "none" ) { this . createPreview ( a . mode , d ) } c = this . createMathTag ( a . mode , d ) ; this . search = { } ; this . pattern . lastIndex = 0 ; if ( e ) { e . parentNode . removeChild ( e ) } return c } , insertNode : function ( b ) { var a = this . search ; a . close . parentNode . insertBefore ( b , a . close ) } , createPreview : function ( c , a ) { var b ; if ( this . config . preview === "AsciiMath" ) { b = [ this . filterPreview ( a ) ] } else { if ( this . config . preview instanceof Array ) { b = this . config . preview } } if ( b )
( function ( d , h , l , g , b , j ) { var p = "2.0.1" ; var i = MathJax . Extension ; var c = i . MathEvents = { version : p } ; var k = d . config . menuSettings ; var o = { 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 m = c . Event = { LEFTBUTTON : 0 , RIGHTBUTTON : 2 , MENUKEY : "altKey" , Mousedown : function ( q ) { return m . Handler ( q , "Mousedown" , this ) } , Mouseup : function ( q ) { return m . Handler ( q , "Mouseup" , this ) } , Mousemove : function ( q ) { return m . Handler ( q , "Mousemove" , this ) } , Mouseover : function ( q ) { return m . Handler ( q , "Mouseover" , this ) } , Mouseout : function ( q ) { return m . Handler ( q , "Mouseout" , this ) } , Click : function ( q ) { return m . Handler ( q , "Click" , this ) } , DblClick : function ( q ) { return m . Handler ( q , "DblClick" , this ) } , Menu : function ( q ) { return m . Handler ( q , "ContextMenu" , this ) } , Handler : function ( t , r , s ) { if ( l . loadingMathMenu ) { return m . False ( t ) } var q = b [ s . jaxID ] ; if ( ! t ) { t = window . event } t . isContextMenu = ( r === "ContextMenu" ) ; if ( q [ r ] ) { return q [ r ] ( t , s ) } if ( i . MathZoom ) { return i . MathZoom . HandleEvent ( t , r , s ) } } , False : function ( q ) { if ( ! q ) { q = window . event } if ( q ) { if ( q . preventDefault ) { q . preventDefault ( ) } if ( q . stopPropagation ) { q . stopPropagation ( ) } q . cancelBubble = true ; q . returnValue = false } return false } , ContextMenu : function ( r , y , u ) { var w = b [ y . jaxID ] , t = w . getJaxFromMath ( y ) ; var z = ( w . config . showMathMenu != null ? w : d ) . config . showMathMenu ; if ( ! z || ( k . context !== "MathJax" && ! u ) ) { return } if ( c . msieEventBug ) { r = window . event || r } m . ClearSelection ( ) ; f . ClearHoverTimer ( ) ; if ( t . hover ) { if ( t . hover . remove ) { clearTimeout ( t . hover . remove ) ; delete t . hover . remove } t . hover . nofade = true } var s = MathJax . Menu ; if ( s ) { s . jax = t ; var q = s . menu . Find ( "Show Math As" ) . menu ; q . items [ 1 ] . name = ( j [ t . inputJax ] . sourceMenuTitle || "Original Form" ) ; q . items [ 0 ] . hidden = ( t . inputJax === "Error" ) ; var v = s . menu . Find ( "Math Settings" , "MathPlayer" ) ; v . hidden = ! ( t . outputJax === "NativeMML" && d . Browser . hasMathPlayer ) ; return s . menu . Post ( r ) } else { if ( ! l . loadingMathMenu ) { l . loadingMathMenu = true ; var x = { pageX : r . pageX , pageY : r . pageY , clientX : r . clientX , clientY : r . clientY } ; g . Queue ( l . Require ( "[MathJax]/extensions/MathMenu.js" ) , function ( ) { delete l . loadingMathMenu ; if ( ! MathJax . Menu ) { MathJax . Menu = { } } } , [ "ContextMenu" , this , x , y , u ] ) } return m . False ( r ) } } , AltContextMenu : function ( s , r ) { var t = b [ r . jaxID ] ; var q = ( t . config . showMathMenu != null ? t : d ) . config . showMathMenu ; if ( q ) { q = ( t . config . showMathMenuMSIE != null ? t : d ) . config . showMathMenuMSIE ; if ( k . context === "MathJax" && ! k . mpContext && q ) { if ( ! c . noContextMenuBug || s . button !== m . RIGHTBUTTON ) { return } } else { if ( ! s [ m . MENUKEY ] || s . button !== m . LEFTBUTTON ) { return } } return t . ContextMenu ( s , r , true ) } } , ClearSelection : function ( ) { if ( c . safariContextMenuBug ) { setTimeout ( "window.getSelection().empty()" , 0 ) } if ( document . selection ) { setTimeout ( "document.selection.empty()" , 0 ) } } , getBBox : function ( s ) { s . appendChild ( c . topImg ) ; var r = c . topImg . offsetTop , t = s . offsetHeight - r , q = s . offsetWidth ; s . removeChild ( c . topImg ) ; return { w : q , h : r , d : t } } } ; var f = c . Hover = { Mouseover : function ( s , r ) { if ( k . discoverable || k . zoom === "Hover" ) { var u = s . fromElement || s . relatedTarget , t = s . toElement || s . target ; if ( u && t && ( u . isMathJax != t . isMathJax || d . getJaxFor ( u ) !== d . getJaxFor ( t ) ) ) { var q = this . getJaxFromMath ( r ) ; if ( q . hover ) { f . ReHover ( q ) } else { f . HoverTimer ( q , r ) } return m . False ( s ) } } } , Mouseout : function ( s , r ) { if ( k . discoverable || k . zoom === "Hover" ) { var u = s . fromElement || s . relatedTarget , t = s . toElement || s . target ; if ( u && t && ( u . isMathJax != t . isMathJax || d . getJaxFor ( u ) !== d . getJaxFor ( t ) ) ) { var q = this . getJaxFromMath ( r ) ; if ( q . hover ) { f . UnHover ( q ) } else { f . ClearHoverTimer ( ) } return m . False ( s ) } } } , Mousemove : function ( s , r ) { if ( k . discoverable || k . zoom === "Hover" ) { var q = this . getJaxFromMath ( r ) ; if ( q . hover ) { return } i
( function ( a , d , f , c , j ) { var k = "2.0" ; 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_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" ) { 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" , { style : { position : "relative" , display : "inline-block" , height : 0 , width : 0 } , 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 ) ; 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 < 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" , this . Resize ) } else { this . onresize = window . onresize ; window . onresize = this . Resize } } a . signal . Post ( [ " math
( function ( c , g , k , f , b ) { var p = "2.0.1" ; var j = MathJax . Callback . Signal ( "menu" ) ; MathJax . Extension . MathMenu = { version : p , signal : j } ; var n = c . Browser . isPC , l = c . Browser . isMSIE , e = ( ( document . documentMode || 0 ) > 8 ) ; var i = ( n ? null : "5px" ) ; var o = c . CombineConfig ( "MathMenu" , { delay : 150 , helpURL : "http://www.mathjax.org/help-v2/user/" , closeImg : k . fileURL ( b . imageDir + "/CloseX-31.png" ) , showRenderer : true , showMathPlayer : true , showFontMenu : false , showContext : false , showDiscoverable : false , windowSettings : { status : "no" , toolbar : "no" , locationbar : "no" , menubar : "no" , directories : "no" , personalbar : "no" , resizable : "yes" , scrollbars : "yes" , width : 100 , height : 50 } , 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_MenuTitle" : { "background-color" : "#CCCCCC" , margin : ( n ? "-1px -1px 1px -1px" : "-5px 0 0 0" ) , "text-align" : "center" , "font-style" : "italic" , "font-size" : "80%" , color : "#444444" , padding : "2px 0" , overflow : "hidden" } , ".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 : p , items : [ ] , posted : false , title : null , margin : 5 , Init : function ( q ) { this . items = [ ] . slice . call ( arguments , 0 ) } , With : function ( q ) { if ( q ) { c . Insert ( this , q ) } return this } , Post : function ( r , B ) { if ( ! r ) { r = window . event } var z = ( ! this . title ? null : [ [ "div" , { className : "MathJax_MenuTitle" } , [ this . title ] ] ] ) ; var q = document . getElementById ( "MathJax_MenuFrame" ) ; if ( ! q ) { q = a . Background ( this ) ; delete m . lastItem ; delete m . lastMenu ; delete a . skipUp ; j . Post ( [ "post" , a . jax ] ) } var s = g . addElement ( q , "div" , { onmouseup : a . Mouseup , ondblclick : h , ondragstart : h , onselectstart : h , oncontextmenu : h , menuItem : this , className : "MathJax_Menu" } , z ) ; for ( var u = 0 , t = this . items . length ; u < t ; u ++ ) { this . i
MathJax . ElementJax . mml = MathJax . ElementJax ( { mimeType : "jax/mml" } , { id : "mml" , version : "2.0" , 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" , 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" ] } ) ; ( function ( a ) { a . mbase = MathJax . Object . Subclass ( { type : "base" , isToken : false , defaults : { mathbackground : a . INHERIT , mathcolor : a . INHERIT } , noInherit : { } , noInheritAttribute : { texClass : true } , linebreakContainer : false , Init : function ( ) { this . data = [ ] ; if ( this . inferRow && ! ( argum
MathJax . Hub . Register . LoadHook ( "[MathJax]/jax/element/mml/jax.js" , function ( ) { var b = "2.0" ; 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" ) { 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 . arrow ) { e . push ( "MJX-arrow" ) } 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 ( ( 1 / 18 ) * RegExp . $1 ) . 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 ( e ) { e = String ( e ) . split ( "" ) ; for ( var f = 0 , d = e . length ; f < d ; f ++ ) { var h = e [ f ] . charCodeAt ( 0 ) ; if ( h < 32 || h > 126 ) { e [ f ] = "&#x" + h . toString ( 16 ) . toUpperCase ( ) + ";" } else { var g = { "&" : "&" , "<" : "<" , ">" : ">" , '"' : """ } [ e [ f ] ] ; if ( g ) { e [ f ] = g } } } return e . 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 . StartupHook ( "TeX mathchoice Ready" , function ( ) { a . TeXmathchoice . Augment ( { toMathML : function ( c ) { return this . Core ( ) . toMathML ( c ) } } ) } ) ; MathJax . Hub . Startup . signal . Post ( "toMathML Ready" ) } ) ; MathJax .
( function ( ag ) { var k ; var aa = MathJax . Object . Subclass ( { firstChild : null , lastChild : null , Init : function ( ) { this . childNodes = [ ] } , appendChild : function ( i ) { if ( i . parent ) { i . parent . removeChild ( i ) } if ( this . lastChild ) { this . lastChild . nextSibling = i } if ( ! this . firstChild ) { this . firstChild = i } this . childNodes . push ( i ) ; i . parent = this ; this . lastChild = i ; return i } , removeChild : function ( ak ) { for ( var aj = 0 , ai = this . childNodes . length ; aj < ai ; aj ++ ) { if ( this . childNodes [ aj ] === ak ) { break } } if ( aj === ai ) { return } this . childNodes . splice ( aj , 1 ) ; if ( ak === this . firstChild ) { this . firstChild = ak . nextSibling } if ( ak === this . lastChild ) { if ( ! this . childNodes . length ) { this . lastChild = null } else { this . lastChild = this . childNodes [ this . childNodes . length - 1 ] } } if ( aj ) { this . childNodes [ aj - 1 ] . nextSibling = ak . nextSibling } ak . nextSibling = ak . parent = null ; return ak } , replaceChild : function ( al , aj ) { for ( var ak = 0 , ai = this . childNodes . length ; ak < ai ; ak ++ ) { if ( this . childNodes [ ak ] === aj ) { break } } if ( ak ) { this . childNodes [ ak - 1 ] . nextSibling = al } else { this . firstChild = al } if ( ak >= ai - 1 ) { this . lastChild = al } this . childNodes [ ak ] = al ; al . nextSibling = aj . nextSibling ; aj . nextSibling = aj . parent = null ; return aj } , toString : function ( ) { return "{" + this . childNodes . join ( "" ) + "}" } } ) ; var E = function ( ) { k = MathJax . ElementJax . mml ; var i = k . mbase . prototype . Init ; k . mbase . Augment ( { firstChild : null , lastChild : null , nodeValue : "" , nextSibling : null , Init : function ( ) { var ai = i . apply ( this , arguments ) || this ; ai . childNodes = ai . data ; ai . nodeName = ai . type ; return ai } , appendChild : function ( al ) { if ( al . parent ) { al . parent . removeChild ( al ) } var aj = arguments ; if ( al . isa ( aa ) ) { aj = al . childNodes ; al . data = al . childNodes = [ ] ; al . firstChild = al . lastChild = null } for ( var ak = 0 , ai = aj . length ; ak < ai ; ak ++ ) { al = aj [ ak ] ; if ( this . lastChild ) { this . lastChild . nextSibling = al } if ( ! this . firstChild ) { this . firstChild = al } this . Append ( al ) ; this . lastChild = al ; this . nodeValue += al . nodeValue } return al } , removeChild : function ( ak ) { for ( var aj = 0 , ai = this . childNodes . length ; aj < ai ; aj ++ ) { if ( this . childNodes [ aj ] === ak ) { break } } if ( aj === ai ) { return } this . childNodes . splice ( aj , 1 ) ; if ( ak === this . firstChild ) { this . firstChild = ak . nextSibling } if ( ak === this . lastChild ) { if ( ! this . childNodes . length ) { this . lastChild = null } else { this . lastChild = this . childNodes [ this . childNodes . length - 1 ] } } if ( aj ) { this . childNodes [ aj - 1 ] . nextSibling = ak . nextSibling } this . nodeValue = "" ; for ( aj = 0 , ai = this . childNodes . length ; aj < ai ; aj ++ ) { this . nodeValue += this . childNodes [ aj ] . nodeValue } ak . nextSibling = ak . parent = null ; return ak } , replaceChild : function ( al , aj ) { for ( var ak = 0 , ai = this . childNodes . length ; ak < ai ; ak ++ ) { if ( this . childNodes [ ak ] === aj ) { break } } if ( ak ) { this . childNodes [ ak - 1 ] . nextSibling = al } else { this . firstChild = al } if ( ak >= ai - 1 ) { this . lastChild = al } this . SetData ( ak , al ) ; al . nextSibling = aj . nextSibling ; this . nodeValue = "" ; for ( ak = 0 , ai = this . childNodes . length ; ak < ai ; ak ++ ) { this . nodeValue += this . childNodes [ ak ] . nodeValue } aj . nextSibling = aj . parent = null ; return aj } , setAttribute : function ( ai , aj ) { this [ ai ] = aj } } ) } ; var S = { } ; var g = { getElementById : true , createElementNS : function ( ai , i ) { return k [ i ] ( ) } , createTextNode : function ( i ) { return k . chars ( i ) . With ( { nodeValue : i } ) } , createDocumentFragment : function ( ) { return aa ( ) } } ; var O = { appName : "MathJax" } ; var ac ; var I = "red" ; var ad = "serif" ; var t = true ; var C = true ; var f = "." ; var q = g . createElementNS == null ; function V ( i ) { if ( q ) { return g . createElement ( i ) } else { return g . createElementNS ( "http://www.w3.org/1999/xhtml" , i ) } } var J = [ 61237 , 8492 , 61238 , 61239 , 8496 , 8497 , 61240 , 8459 , 8464 , 61241 , 61242 , 8466 , 8499 , 61243 , 61244 , 61245 , 61246 , 8475 , 61247 , 61248 , 61249 , 61250 , 61251 , 61252 , 61253 , 61254 ] ; var N = [ 61277 , 61278 , 8493 , 61279 , 61280 , 61281 , 61282 , 8460 , 8465 , 61283 , 61284 , 61285 , 61286 , 61287 , 61288 , 61289 , 61290 , 8476 , 61291 , 61292 , 61293 , 61294 , 61295 , 61296 , 61297 , 8488 ] ; var D = [ 61324 , 61325 , 8450 , 61326 , 61327 , 61328 , 61329 , 8461 , 61330 , 61331 , 61332 , 61333 , 61334 , 8469 , 61335 , 8473 , 8474 , 8477 , 61336 , 61337 , 61338 , 61339 , 61340 , 61341 , 61342 , 8484 ] ; var d = 0 , H = 1 , X = 2 , m = 3 , b = 4 , l = 5 , a = 6 , P = 7 , Z = 8 , r = 9 , ab = 10 ; var j = { input : "sqrt" , tag : "msqrt" , output : "sqrt" , tex : null , ttype : H } , af = { input : "root" , tag : "mroot" , output : "root" , tex : null , ttype : X } , A = { input : "frac" , tag : "mfrac" , output : "/" , tex : null , ttype : X } , Q = { input : "/" , tag : "mfrac" , output : "/" , tex : null , ttype : m } , o = { input : "stackrel" , tag : "mover" , output : "stackrel" , tex : null , ttype : X } , s = { input : "_" , tag : "msub" , output :
( function ( j , b , f , d ) { var e , h = b . Browser . isMSIE ; var g , a , c , i ; b . Register . StartupHook ( "MathZoom Ready" , function ( ) { i = MathJax . Extension . MathZoom } ) ; j . Augment ( { config : { styles : { ".MathJax_mmlExBox" : { display : "block" , overflow : "hidden" , height : "1px" , width : "60ex" , padding : 0 , border : 0 , margin : 0 } } } , settings : b . config . menuSettings , Config : function ( ) { this . SUPER ( arguments ) . Config . call ( this ) ; if ( this . settings . scale ) { this . config . scale = this . settings . scale } if ( b . config . displayAlign !== "center" ) { var m = b . config . displayAlign , k = b . config . displayIndent ; var l = { "text-align" : m + "!important" } ; l [ "margin-" + m ] = k + "!important" ; MathJax . Hub . Insert ( this . config . styles , { "div.MathJax_MathML" : l , "div.MathJax_MathML math" : { "text-align" : m } , "div.MathJax_MathContainer > span" : { "text-align" : m + "!important" } } ) } if ( ! this . require ) { this . require = [ ] } this . require . push ( MathJax . OutputJax . extensionDir + "/MathEvents.js" ) } , Startup : function ( ) { g = MathJax . Extension . MathEvents . Event ; a = MathJax . Extension . MathEvents . Touch ; c = MathJax . Extension . MathEvents . Hover ; this . ContextMenu = g . ContextMenu ; this . Mousedown = g . AltContextMenu ; this . Mouseover = c . Mouseover ; this . Mouseout = c . Mouseout ; this . Mousemove = c . Mousemove ; if ( ! h ) { this . EmExSpan = d . Element ( "span" , { style : { position : "absolute" , "font-size-adjust" : "none" } } , [ [ "div" , { className : "MathJax_mmlExBox" } ] , [ "span" , { className : "MathJax_MathML" } ] ] ) ; e . math ( e . mspace ( ) . With ( { width : "60ex" } ) ) . toNativeMML ( this . EmExSpan . lastChild ) } return f . Styles ( this . config . styles ) } , InitializeMML : function ( ) { this . initialized = true ; if ( h ) { try { if ( ! b . Browser . hasMathPlayer ) { var k = document . createElement ( "object" ) ; k . id = "mathplayer" ; k . classid = "clsid:32F66A20-7614-11D4-BD11-00104BD3F987" ; document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( k ) ; document . namespaces . add ( "m" , "http://www.w3.org/1998/Math/MathML" ) ; b . Browser . hasMathPlayer = true } if ( ! b . Browser . mpImported ) { document . namespaces . m . doImport ( "#mathplayer" ) ; b . Browser . mpImported = true } } catch ( l ) { alert ( "MathJax was not able to set up MathPlayer.\n\nIf MathPlayer is not installed, you need to install it first.\nOtherwise, your security settings may be preventing ActiveX \ncontrols from running. Use the Internet Options item under\nthe Tools menu and select the Security tab, then press the\nCustom Level button. Check that the settings for\n'Run ActiveX Controls', and 'Binary and script behaviors'\nare enabled.\n\nCurrently you will see error messages rather than\ntypeset mathematics." ) } } else { document . body . appendChild ( this . EmExSpan ) ; this . defaultEx = this . EmExSpan . firstChild . offsetWidth / 60 ; this . defaultMEx = this . EmExSpan . lastChild . offsetWidth / 60 ; document . body . removeChild ( this . EmExSpan ) } } , preTranslate : function ( l ) { var r = l . jax [ this . id ] , s , n = r . length , w , p , y , u , x , k , t , q , o ; for ( s = 0 ; s < n ; s ++ ) { w = r [ s ] ; if ( ! w . parentNode ) { continue } if ( ! this . initialized ) { this . InitializeMML ( ) } p = w . previousSibling ; if ( p && p . className === "MathJax_MathML" ) { p . parentNode . removeChild ( p ) } k = w . MathJax . elementJax ; x = k . root ; k . NativeMML = { } ; var v = ( x . Get ( "display" ) === "block" ? "div" : "span" ) ; y = d . Element ( v , { className : "MathJax_MathML" , id : k . inputID + "-Frame" } , [ [ "span" , { className : "MathJax_MathContainer" , isMathJax : true , jaxID : this . id , style : { position : "relative" , display : "inline-block" , "white-space" : "nowrap" } } , [ [ "span" , { isMathJax : true , style : { display : "inline-block" } } ] ] ] ] ) ; w . parentNode . insertBefore ( y , w ) ; if ( ! h ) { w . parentNode . insertBefore ( this . EmExSpan . cloneNode ( true ) , w ) } } for ( s = 0 ; s < n ; s ++ ) { w = r [ s ] ; if ( ! w . parentNode ) { continue } k = w . MathJax . elementJax ; if ( ! h ) { u = w . previousSibling ; y = u . previousSibling ; t = u . firstChild . offsetWidth / 60 ; q = u . lastChild . offsetWidth / 60 ; if ( t === 0 || t === "NaN" ) { t = this . defaultEx ; q = this . defaultMEx } o = ( q > 1 ? t / q : 1 ) * this . config . scale ; o = Math . floor ( Math . max ( this . config . minScaleAdjust / 100 , o ) ) } else { o = 100 } k . NativeMML . fontSize = o + "%" } if ( ! h ) { for ( s = 0 ; s < n ; s ++ ) { w = r [ s ] ; if ( ! w . parentNode ) { continue } u = r [ s ] . previousSibling ; u . parentNode . removeChild ( u ) } } } , Translate : function ( q ) { if ( ! q . parentNode ) { return } var k = q . MathJax . elementJax , r = k . root ; var s = document . getElementById ( k . inputID + "-Frame" ) , l = s . firstChild , o = l . firstChild ; s . style . fontSize = k . NativeMML . fontSize ; try { r . toNativeMML ( o ) } catch ( p ) { if ( p . restart ) { while ( o . firstChild ) { o . removeChild ( o . firstChild ) } } throw p } if ( h ) { if ( l . addEv
( function ( g , b , d ) { var f , h = b . Browser . isMobile ; var e = MathJax . Object . Subclass ( { timeout : ( h ? 15 : 8 ) * 1000 , FontInfo : { STIX : { family : "STIXSizeOneSym" , testString : "() {} []" } , TeX : { family : "MathJax_Size1" , testString : "() {} []" } } , comparisonFont : [ "sans-serif" , "monospace" , "script" , "Times" , "Courier" , "Arial" , "Helvetica" ] , testSize : [ "40px" , "50px" , "60px" , "30px" , "20px" ] , Init : function ( ) { this . div = MathJax . HTML . addElement ( document . body , "div" , { id : "MathJax_Font_Test" , style : { position : "absolute" , visibility : "hidden" , top : 0 , left : 0 , width : "auto" , padding : 0 , border : 0 , margin : 0 , whiteSpace : "nowrap" , textAlign : "left" , textIndent : 0 , textTransform : "none" , lineHeight : "normal" , letterSpacing : "normal" , wordSpacing : "normal" , fontSize : this . testSize [ 0 ] , fontWeight : "normal" , fontStyle : "normal" , fontSizeAdjust : "none" } } , [ "" ] ) ; this . text = this . div . firstChild } , findFont : function ( n , k ) { if ( k && this . testCollection ( k ) ) { return k } for ( var l = 0 , j = n . length ; l < j ; l ++ ) { if ( n [ l ] === k ) { continue } if ( this . testCollection ( n [ l ] ) ) { return n [ l ] } } return null } , testCollection : function ( j ) { return this . testFont ( this . FontInfo [ j ] ) } , testFont : function ( l ) { if ( l . isWebFont && d . FontFaceBug ) { this . div . style . fontWeight = this . div . style . fontStyle = "normal" } else { this . div . style . fontWeight = ( l . weight || "normal" ) ; this . div . style . fontStyle = ( l . style || "normal" ) } var k = this . getComparisonWidths ( l . testString , l . noStyleChar ) ; if ( k ) { this . div . style . fontFamily = "'" + l . family + "'," + this . comparisonFont [ 0 ] ; if ( this . div . offsetWidth == k [ 0 ] ) { this . div . style . fontFamily = "'" + l . family + "'," + this . comparisonFont [ k [ 2 ] ] ; if ( this . div . offsetWidth == k [ 1 ] ) { return false } } if ( this . div . offsetWidth != k [ 3 ] || this . div . offsetHeight != k [ 4 ] ) { if ( l . noStyleChar || ! d . FONTDATA || ! d . FONTDATA . hasStyleChar ) { return true } for ( var n = 0 , j = this . testSize . length ; n < j ; n ++ ) { if ( this . testStyleChar ( l , this . testSize [ n ] ) ) { return true } } } } return false } , styleChar : "\uEFFD" , versionChar : "\uEFFE" , compChar : "\uEFFF" , testStyleChar : function ( l , o ) { var r = 3 + ( l . weight ? 2 : 0 ) + ( l . style ? 4 : 0 ) ; var k = "" , m = 0 ; var q = this . div . style . fontSize ; this . div . style . fontSize = o ; if ( d . msieItalicWidthBug && l . style === "italic" ) { this . text . nodeValue = k = this . compChar ; m = this . div . offsetWidth } if ( d . safariTextNodeBug ) { this . div . innerHTML = this . compChar + k } else { this . text . nodeValue = this . compChar + k } var j = this . div . offsetWidth - m ; if ( d . safariTextNodeBug ) { this . div . innerHTML = this . styleChar + k } else { this . text . nodeValue = this . styleChar + k } var p = Math . floor ( ( this . div . offsetWidth - m ) / j + 0.5 ) ; if ( p === r ) { if ( d . safariTextNodeBug ) { this . div . innerHTML = this . versionChar + k } else { this . text . nodeValue = this . versionChar + k } l . version = Math . floor ( ( this . div . offsetWidth - m ) / j + 1.5 ) / 2 } this . div . style . fontSize = q ; return ( p === r ) } , getComparisonWidths : function ( o , l ) { if ( d . FONTDATA && d . FONTDATA . hasStyleChar && ! l ) { o += this . styleChar + " " + this . compChar } if ( d . safariTextNodeBug ) { this . div . innerHTML = o } else { this . text . nodeValue = o } this . div . style . fontFamily = this . comparisonFont [ 0 ] ; var k = this . div . offsetWidth ; this . div . style . fontFamily = d . webFontDefault ; var q = this . div . offsetWidth , n = this . div . offsetHeight ; for ( var p = 1 , j = this . comparisonFont . length ; p < j ; p ++ ) { this . div . style . fontFamily = this . comparisonFont [ p ] ; if ( this . div . offsetWidth != k ) { return [ k , this . div . offsetWidth , p , q , n ] } } return null } , loadWebFont : function ( k ) { b . Startup . signal . Post ( "HTML-CSS Jax - Web-Font " + d . fontInUse + "/" + k . directory ) ; var m = MathJax . Message . File ( "Web-Font " + d . fontInUse + "/" + k . directory ) ; var j = MathJax . Callback ( { } ) ; var l = MathJax . Callback ( [ "loadComplete" , this , k , m , j ] ) ; g . timer . start ( g , [ this . checkWebFont , k , l ] , 0 , this . timeout ) ; return j } , loadComplete : function ( l , o , k , j ) { MathJax . Message . Clear ( o ) ; if ( j === g . STATUS . OK ) { this . webFontLoaded = true ; k ( ) ; return } this . loadError ( l ) ; if ( b . Browser . isFirefox && d . allowWebFonts ) { var m = document . location . protocol + "//" + document . location . hostname ; if ( document . location . port != "" ) { m += ":" + document . location . port } m += "/" ; if ( g . fileURL ( d . webfontDir ) . substr ( 0 , m . length ) !== m ) { this . firefoxFontError ( l ) } } if ( ! this . webFontLoaded ) { d . loadWebFontError ( l , k ) } else { k ( ) } } , loadError : function ( j ) { MathJax . Message . Set ( "Can't load web font " + d . fontInUse + "/" + j . directory , null , 2000 ) ; b . Startup . signal . Post ( [ "HTML-CSS Jax - web font error" , d . fontInUse + "/" + j . directory , j ] ) } , firefoxFontError : function ( j ) { MathJax . Message . Set ( " Fire
MathJax . Hub . Register . StartupHook ( "HTML-CSS Jax Ready" , function ( ) { var c = "2.0" ; var a = MathJax . ElementJax . mml , b = MathJax . OutputJax [ "HTML-CSS" ] ; a . mtable . Augment ( { toHTML : function ( r ) { r = this . HTMLcreateSpan ( r ) ; if ( this . data . length === 0 ) { return r } var G = this . getValues ( "columnalign" , "rowalign" , "columnspacing" , "rowspacing" , "columnwidth" , "equalcolumns" , "equalrows" , "columnlines" , "rowlines" , "frame" , "framespacing" , "align" , "useHeight" , "width" , "side" , "minlabelspacing" ) ; var aF = G . width . match ( /%$/ ) ; var av = b . createStack ( r ) ; var aC = this . HTMLgetScale ( ) , ax = this . HTMLgetMu ( r ) , ay = - 1 ; var ao = [ ] , ar = [ ] , ai = [ ] , au = [ ] , at = [ ] , ad , ac , an = - 1 , ab , am , V , aB , aJ = [ ] ; var aj = b . FONTDATA . baselineskip * aC * G . useHeight , E = b . FONTDATA . lineH * aC , L = b . FONTDATA . lineD * aC ; for ( ad = 0 , ab = this . data . length ; ad < ab ; ad ++ ) { aB = this . data [ ad ] ; V = ( aB . type === "mlabeledtr" ? ay : 0 ) ; au [ ad ] = [ ] ; ao [ ad ] = ar [ ad ] = 0 ; for ( ac = V , am = aB . data . length + V ; ac < am ; ac ++ ) { if ( ai [ ac ] == null ) { if ( ac > an ) { an = ac } at [ ac ] = b . createStack ( b . createBox ( av ) ) ; ai [ ac ] = - b . BIGDIMEN } au [ ad ] [ ac ] = b . createBox ( at [ ac ] ) ; aJ . push ( aB . data [ ac - V ] . toHTML ( au [ ad ] [ ac ] ) ) } } b . MeasureSpans ( aJ ) ; for ( ad = 0 , ab = this . data . length ; ad < ab ; ad ++ ) { aB = this . data [ ad ] ; V = ( aB . type === "mlabeledtr" ? ay : 0 ) ; for ( ac = V , am = aB . data . length + V ; ac < am ; ac ++ ) { if ( aB . data [ ac - V ] . isMultiline ) { au [ ad ] [ ac ] . style . width = "100%" } if ( au [ ad ] [ ac ] . bbox . h > ao [ ad ] ) { ao [ ad ] = au [ ad ] [ ac ] . bbox . h } if ( au [ ad ] [ ac ] . bbox . d > ar [ ad ] ) { ar [ ad ] = au [ ad ] [ ac ] . bbox . d } if ( au [ ad ] [ ac ] . bbox . w > ai [ ac ] ) { ai [ ac ] = au [ ad ] [ ac ] . bbox . w } } } if ( ao [ 0 ] + ar [ 0 ] ) { ao [ 0 ] = Math . max ( ao [ 0 ] , E ) } if ( ao [ au . length - 1 ] + ar [ au . length - 1 ] ) { ar [ au . length - 1 ] = Math . max ( ar [ au . length - 1 ] , L ) } var aw = G . columnspacing . split ( / / ) , aL = G . rowspacing . split ( / / ) , e = G . columnalign . split ( / / ) , z = G . rowalign . split ( / / ) , d = G . columnlines . split ( / / ) , v = G . rowlines . split ( / / ) , aH = G . columnwidth . split ( / / ) , T = [ ] ; for ( ad = 0 , ab = aw . length ; ad < ab ; ad ++ ) { aw [ ad ] = b . length2em ( aw [ ad ] , ax ) } for ( ad = 0 , ab = aL . length ; ad < ab ; ad ++ ) { aL [ ad ] = b . length2em ( aL [ ad ] , ax ) } while ( aw . length < an ) { aw . push ( aw [ aw . length - 1 ] ) } while ( e . length <= an ) { e . push ( e [ e . length - 1 ] ) } while ( d . length < an ) { d . push ( d [ d . length - 1 ] ) } while ( aH . length <= an ) { aH . push ( aH [ aH . length - 1 ] ) } while ( aL . length < au . length ) { aL . push ( aL [ aL . length - 1 ] ) } while ( z . length <= au . length ) { z . push ( z [ z . length - 1 ] ) } while ( v . length < au . length ) { v . push ( v [ v . length - 1 ] ) } if ( at [ ay ] ) { e [ ay ] = ( G . side . substr ( 0 , 1 ) === "l" ? "left" : "right" ) ; aw [ ay ] = - ai [ ay ] } for ( ad = 0 , ab = au . length ; ad < ab ; ad ++ ) { aB = this . data [ ad ] ; T [ ad ] = [ ] ; if ( aB . rowalign ) { z [ ad ] = aB . rowalign } if ( aB . columnalign ) { T [ ad ] = aB . columnalign . split ( / / ) ; while ( T [ ad ] . length <= an ) { T [ ad ] . push ( T [ ad ] [ T [ ad ] . length - 1 ] ) } } } if ( G . equalrows ) { var aA = Math . max . apply ( Math , ao ) , U = Math . max . apply ( Math , ar ) ; for ( ad = 0 , ab = au . length ; ad < ab ; ad ++ ) { V = ( ( aA + U ) - ( ao [ ad ] + ar [ ad ] ) ) / 2 ; ao [ ad ] += V ; ar [ ad ] += V } } var aN = ao [ 0 ] + ar [ au . length - 1 ] ; for ( ad = 0 , ab = au . length - 1 ; ad < ab ; ad ++ ) { aN += Math . max ( ( ao [ ad ] + ar [ ad ] ? aj : 0 ) , ar [ ad ] + ao [ ad + 1 ] + aL [ ad ] ) } var aE = 0 , aD = 0 , aP , g = aN ; if ( G . frame !== "none" || ( G . columnlines + G . rowlines ) . match ( /solid|dashed/ ) ) { aE = b . length2em ( G . framespacing . split ( /[, ]+/ ) [ 0 ] , ax ) ; aD = b . length2em ( G . framespacing . split ( /[, ]+/ ) [ 1 ] , ax ) ; g = aN + 2 * aD } var ah , aO , Z = "" ; if ( typeof ( G . align ) !== "string" ) { G . align = String ( G . align ) } if ( G . align . match ( /(top|bottom|center|baseline|axis)( +(-?\d+))?/ ) ) { Z = RegExp . $3 ; G . align = RegExp . $1 } else { G . align = this . defaults . align } if ( Z !== "" ) { Z = parseInt ( Z ) ; if ( Z < 0 ) { Z = au . length + 1 + Z } if ( Z < 1 ) { Z = 1 } else { if ( Z > au . length ) { Z = au . length } } ah = 0 ; aO = - ( aN + aD ) + ao [ 0 ] ; for ( ad = 0 , ab = Z - 1 ; ad < ab ; ad ++ ) { var K = Math . max ( ( ao [ ad ] + ar [ ad ] ? aj : 0 ) , ar [ ad ] + ao [ ad + 1 ] + aL [ ad ] ) ; ah += K ; aO += K } } else { ah = ( { top : - ( ao [ 0 ] + aD ) , bottom : aN + aD - ao [ 0 ] , center : aN / 2 - ao [ 0 ] , baseline : aN / 2 - ao [ 0 ] , axis : aN / 2 + b . TeX . axis _height * aC - ao [ 0 ] } ) [ G . align ] ; aO = ( { top : - ( aN + 2 * aD ) , bottom : 0 , center : - ( aN / 2 + aD ) , baseline : - ( aN / 2 + aD ) , axis : b . TeX . axis _height * aC - aN / 2 - aD } ) [ G . align ] } var aa , ae = 0 , w = 0 , I = 0 , X = 0 , af = 0 , al = [ ] , aq = [ ] , Q = 1 ; if ( G . equalcolumns && G . width !== "auto" ) { if ( aF ) { aa = ( 100 / ( an + 1 ) ) . toFixed ( 2 ) . replace ( /\.?0+$/ , "" ) + "%" ; for ( ad = 0 , ab = Math . min ( an + 1 , aH . length ) ; ad < ab ; ad ++ ) { aH [ ad ] = aa } aa = 0 ; ae = 1 ; af = an + 1 ; for ( ad = 0 , ab = Math . min ( an + 1 , aw . length ) ; ad < ab ; ad ++ ) { aa += aw [ ad ] } } else { aa = b . length2em ( G . width , ax ) ; for ( ad = 0 , ab = Math . min ( an + 1 , aw . length ) ; ad < ab ; ad ++ ) { aa -= aw [ ad ] } aa /= an + 1 ; for ( ad = 0 , ab = Math . min ( an + 1 , aH . length ) ; ad < ab ; ad ++ ) { ai [ ad ] = aa } } } else { for ( ad = 0 , ab = Math . min ( an + 1 , aH . length ) ; ad < ab ; ad ++ ) {
2012-03-01 01:21:20 +00:00
MathJax . Ajax . loadComplete ( "[MathJax]/config/AM_HTMLorMML-full.js" ) ;