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 / T e X - A M S - M M L _ S V G - 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 . Ajax . Preloading (
"[MathJax]/jax/input/TeX/config.js" ,
"[MathJax]/jax/input/MathML/config.js" ,
"[MathJax]/jax/output/SVG/config.js" ,
"[MathJax]/extensions/tex2jax.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]/extensions/TeX/noErrors.js" ,
"[MathJax]/extensions/TeX/noUndefined.js" ,
"[MathJax]/jax/input/TeX/jax.js" ,
"[MathJax]/extensions/TeX/AMSmath.js" ,
"[MathJax]/extensions/TeX/AMSsymbols.js" ,
"[MathJax]/jax/input/MathML/jax.js" ,
"[MathJax]/jax/output/SVG/jax.js" ,
"[MathJax]/jax/output/SVG/autoload/mtable.js"
) ;
MathJax . Hub . Config ( { "v1.0-compatible" : false } ) ;
MathJax . InputJax . TeX = MathJax . InputJax ( { id : "TeX" , version : "2.0" , directory : MathJax . InputJax . directory + "/TeX" , extensionDir : MathJax . InputJax . extensionDir + "/TeX" , config : { TagSide : "right" , TagIndent : "0.8em" , MultLineWidth : "85%" , equationNumbers : { autoNumber : "none" , formatNumber : function ( a ) { return a } , formatTag : function ( a ) { return "(" + a + ")" } , formatID : function ( a ) { return "mjx-eqn-" + String ( a ) . replace ( /[:"'<>&]/g , "" ) } , formatURL : function ( a ) { return "#" + escape ( a ) } , useLabelIds : true } } } ) ; MathJax . InputJax . TeX . Register ( "math/tex" ) ; MathJax . InputJax . TeX . loadComplete ( "config.js" ) ;
MathJax . InputJax . MathML = MathJax . InputJax ( { id : "MathML" , version : "2.0" , 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 . SVG = MathJax . OutputJax ( { id : "SVG" , version : "2.0" , directory : MathJax . OutputJax . directory + "/SVG" , extensionDir : MathJax . OutputJax . extensionDir + "/SVG" , autoloadDir : MathJax . OutputJax . directory + "/SVG/autoload" , fontDir : MathJax . OutputJax . directory + "/SVG/fonts" , config : { scale : 100 , minScaleAdjust : 50 , font : "TeX" , blacker : 10 , mtextFontInherit : false , undefinedFamily : "STIXGeneral,'Arial Unicode MS',serif" , addMMLclasses : false , EqnChunk : ( MathJax . Hub . Browser . isMobile ? 10 : 50 ) , EqnChunkFactor : 1.5 , EqnChunkDelay : 100 , linebreaks : { automatic : false , width : "container" } , styles : { ".MathJax_SVG_Display" : { "text-align" : "center" , margin : "1em 0em" } , "#MathJax_SVG_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" , padding : "3px 4px" } } } } ) ; if ( ! MathJax . Hub . config . delayJaxRegistration ) { MathJax . OutputJax . SVG . Register ( "jax/mml" ) } MathJax . OutputJax . SVG . loadComplete ( "config.js" ) ;
MathJax . Extension . tex2jax = { version : "2.0" , config : { inlineMath : [ [ "\\(" , "\\)" ] ] , displayMath : [ [ "$$" , "$$" ] , [ "\\[" , "\\]" ] ] , balanceBraces : true , skipTags : [ "script" , "noscript" , "style" , "textarea" , "pre" , "code" ] , ignoreClass : "tex2jax_ignore" , processClass : "tex2jax_process" , processEscapes : false , processEnvironments : true , processRefs : true , preview : "TeX" } , PreProcess : function ( a ) { if ( ! this . configured ) { this . config = MathJax . Hub . CombineConfig ( "tex2jax" , this . config ) ; if ( this . config . Augment ) { MathJax . Hub . Insert ( this , this . config . Augment ) } if ( typeof ( this . config . previewTeX ) !== "undefined" && ! this . config . previewTeX ) { this . config . preview = "none" } 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 = [ ] , e = [ ] , c , a , b = this . config ; this . match = { } ; for ( c = 0 , a = b . inlineMath . length ; c < a ; c ++ ) { d . push ( this . patternQuote ( b . inlineMath [ c ] [ 0 ] ) ) ; this . match [ b . inlineMath [ c ] [ 0 ] ] = { mode : "" , end : b . inlineMath [ c ] [ 1 ] , pattern : this . endPattern ( b . inlineMath [ c ] [ 1 ] ) } } for ( c = 0 , a = b . displayMath . length ; c < a ; c ++ ) { d . push ( this . patternQuote ( b . displayMath [ c ] [ 0 ] ) ) ; this . match [ b . displayMath [ c ] [ 0 ] ] = { mode : "; mode=display" , end : b . displayMath [ c ] [ 1 ] , pattern : this . endPattern ( b . displayMath [ c ] [ 1 ] ) } } if ( d . length ) { e . push ( d . sort ( this . sortLength ) . join ( "|" ) ) } if ( b . processEnvironments ) { e . push ( "\\\\begin\\{([^}]*)\\}" ) } if ( b . processEscapes ) { e . push ( "\\\\*\\\\\\$" ) } if ( b . processRefs ) { e . push ( "\\\\(eq)?ref\\{[^}]*\\}" ) } this . start = new RegExp ( e . join ( "|" ) , "g" ) ; this . skipTags = new RegExp ( "^(" + b . skipTags . join ( "|" ) + ")$" , "i" ) ; this . ignoreClass = new RegExp ( "(^| )(" + b . ignoreClass + ")( |$)" ) ; this . processClass = new RegExp ( "(^| )(" + b . processClass + ")( |$)" ) ; return ( e . length > 0 ) } , 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 ( this . search . close ? this . prevEndMatch ( ) : c ) } } } return b } , startMatch : function ( a , b ) { var f = this . match [ a [ 0 ] ] ; if ( f != null ) { this . search = { end : f . end , mode : f . mode , pcount : 0 , open : b , olen : a [ 0 ] . length , opos : this . pattern . lastIndex - a [ 0 ] . length } ; this . switchPattern ( f . pattern ) } else { if ( a [ 0 ] . substr ( 0 , 6 ) === "\\begin" ) { this . search = { end : "\\end{" + a [ 1 ] + "}" , mode : "; mode=display" , pcount : 0 , open : b , olen : 0 , opos : this . pattern . lastIndex - a [ 0 ] . length , isBeginEnd : true } ; this . switchPattern ( this . endPattern ( this . search . end ) ) } else { if ( a [ 0 ] . substr ( 0 , 4 ) === "\\ref" || a [ 0 ] . substr ( 0 , 6 ) === "\\eqref" ) { this . search = { mode : "" , end : "" , open : b , pcount : 0 , olen : 0 , opos : this . pattern . lastIndex - a [ 0 ] . length } ; return this . endMatch ( [ "" ] , b ) } else { var d = a [ 0 ] . substr ( 0 , a [ 0 ] . length - 1 ) , g , c ; if ( d . length % 2 === 0 ) { c = [ d . replace ( /\\\\/g , "\\" ) ] ; g = 1 } else { c = [ d . substr ( 1 ) . replace ( /\\\\/g , "\\" ) , "$" ] ; g = 0 } c = MathJax . HTML . Element ( "span" , null , c ) ; var e = MathJax . HTML . TextNode ( b . nodeValue . substr ( 0 , a . index ) ) ; b . nodeValue = b . nodeValue . substr ( a . index + a [ 0 ] . length - g ) ; b . parentNode . insertBefore ( c , b ) ; b . parentNode . insertBefore ( e , c ) ; this . pattern . lastIndex = g } } } return b } , endMatch : function ( a , c ) { var b = this . search ; if ( a [ 0 ] == b . end ) { if ( ! b . close || b . pcount === 0 ) { b . close = c ; b . cpo
MathJax . Extension . mml2jax = { version : "2.0" , config : { preview : "alttext" } , 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 } this . ProcessMathArray ( e . getElementsByTagName ( "math" ) ) ; if ( e . getElementsByTagNameNS ) { this . ProcessMathArray ( e . getElementsByTagNameNS ( this . MMLnamespace , "math" ) ) } var d , b ; if ( document . namespaces ) { for ( d = 0 , b = document . namespaces . length ; d < b ; d ++ ) { var f = document . namespaces [ d ] ; if ( f . urn === this . MMLnamespace ) { this . ProcessMathArray ( e . getElementsByTagName ( f . name + ":math" ) ) } } } 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 ) { this . ProcessMathArray ( e . getElementsByTagName ( a . nodeName . substr ( 6 ) + ":math" ) ) } } } } } , ProcessMathArray : function ( b ) { var a ; if ( b . length ) { if ( this . MathTagBug ) { for ( a = b . length - 1 ; a >= 0 ; a -- ) { if ( b [ a ] . nodeName === "MATH" ) { this . ProcessMathFlattened ( b [ a ] ) } else { this . ProcessMath ( b [ a ] ) } } } else { for ( a = b . length - 1 ; a >= 0 ; a -- ) { this . ProcessMath ( b [ a ] ) } } } } , ProcessMath : function ( e ) { var d = e . parentNode ; 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 ; 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 ( b , a ) { var c ; if ( this . config . preview === "alttext" ) { var d = b . getAttribute ( "alttext" ) ; if ( d != null ) { c = [ this . filterPreview ( d ) ] } } else { if ( this . config . preview instanceof Array ) { c = this . config . preview } } if ( c ) { c = MathJax . HTML . Element ( "span" , { className : MathJax . Hub . config . preRemoveClass } , c ) ; a . parentNode . insertBefore ( c , a ) } } , filterPreview : function ( a ) { return a } , InitBrowser : function ( ) { var b = MathJax . HTML . Element ( "span" , { id : "<" , className : "mathjax" , innerHTML : "<math><mi>x</mi><mspace /></math>" } ) ; var a = b . outerHTML || "" ; this . AttributeBug = a !== "" && ! ( a . match ( /id="<"/ ) && a . match ( /class="mathjax"/ ) && a . match ( /<\/math>/ ) ) ; this . MathTagBug = b . childNodes . length > 1 ; this . CleanupHTML = MathJax . Hub . Browser . isMSIE } } ; MathJax . Hub . Register . PreProcessor ( [ "PreProcess" , MathJax . Extension . mml2jax ] ) ; MathJax . Ajax . loadComplete ( "[MathJax]/extensions/mml2jax.js" ) ;
( 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 ( b , e ) { var d = "2.0" ; var a = b . CombineConfig ( "TeX.noErrors" , { disabled : false , multiLine : true , inlineDelimiters : [ "" , "" ] , style : { "font-size" : "90%" , "text-align" : "left" , color : "black" , padding : "1px 3px" , border : "1px solid" } } ) ; var c = "\u00A0" ; MathJax . Extension [ "TeX/noErrors" ] = { version : d , config : a } ; b . Register . StartupHook ( "TeX Jax Ready" , function ( ) { var f = MathJax . InputJax . TeX . formatError ; MathJax . InputJax . TeX . Augment ( { formatError : function ( j , i , k , g ) { if ( a . disabled ) { return f . apply ( this , arguments ) } var h = j . message . replace ( /\n.*/ , "" ) ; b . signal . Post ( [ "TeX Jax - parse error" , h , i , k , g ] ) ; var m = a . inlineDelimiters ; var l = ( k || a . multiLine ) ; if ( ! k ) { i = m [ 0 ] + i + m [ 1 ] } if ( l ) { i = i . replace ( / /g , c ) } else { i = i . replace ( /\n/g , " " ) } return MathJax . ElementJax . mml . merror ( i ) . With ( { isError : true , multiLine : l } ) } } ) } ) ; b . Register . StartupHook ( "HTML-CSS Jax Config" , function ( ) { b . Config ( { "HTML-CSS" : { styles : { ".MathJax .noError" : b . Insert ( { "vertical-align" : ( b . Browser . isMSIE && a . multiLine ? "-2px" : "" ) } , a . style ) } } } ) } ) ; b . Register . StartupHook ( "HTML-CSS Jax Ready" , function ( ) { var g = MathJax . ElementJax . mml ; var h = MathJax . OutputJax [ "HTML-CSS" ] ; var f = g . math . prototype . toHTML , i = g . merror . prototype . toHTML ; g . math . Augment ( { toHTML : function ( j , k ) { var l = this . data [ 0 ] ; if ( l && l . data [ 0 ] && l . data [ 0 ] . isError ) { j . style . fontSize = "" ; j = this . HTMLcreateSpan ( j ) ; j . bbox = l . data [ 0 ] . toHTML ( j ) . bbox } else { j = f . call ( this , j , k ) } return j } } ) ; g . merror . Augment ( { toHTML : function ( p ) { if ( ! this . isError ) { return i . call ( this , p ) } p = this . HTMLcreateSpan ( p ) ; p . className = "noError" ; if ( this . multiLine ) { p . style . display = "inline-block" } var r = this . data [ 0 ] . data [ 0 ] . data . join ( "" ) . split ( /\n/ ) ; for ( var o = 0 , l = r . length ; o < l ; o ++ ) { h . addText ( p , r [ o ] ) ; if ( o !== l - 1 ) { h . addElement ( p , "br" , { isMathJax : true } ) } } var q = h . getHD ( p . parentNode ) , k = h . getW ( p . parentNode ) ; if ( l > 1 ) { var n = ( q . h + q . d ) / 2 , j = h . TeX . x _height / 2 ; p . parentNode . style . verticalAlign = h . Em ( q . d + ( j - n ) ) ; q . h = j + n ; q . d = n - j } p . bbox = { h : q . h , d : q . d , w : k , lw : 0 , rw : k } ; return p } } ) } ) ; b . Register . StartupHook ( "SVG Jax Config" , function ( ) { b . Config ( { SVG : { styles : { ".MathJax_SVG .noError" : b . Insert ( { "vertical-align" : ( b . Browser . isMSIE && a . multiLine ? "-2px" : "" ) } , a . style ) } } } ) } ) ; b . Register . StartupHook ( "SVG Jax Ready" , function ( ) { var g = MathJax . ElementJax . mml ; var f = g . math . prototype . toSVG , h = g . merror . prototype . toSVG ; g . math . Augment ( { toSVG : function ( i , j ) { var k = this . data [ 0 ] ; if ( k && k . data [ 0 ] && k . data [ 0 ] . isError ) { i = k . data [ 0 ] . toSVG ( i ) } else { i = f . call ( this , i , j ) } return i } } ) ; g . merror . Augment ( { toSVG : function ( n ) { if ( ! this . isError || this . Parent ( ) . type !== "math" ) { return h . call ( this , n ) } n = e . addElement ( n , "span" , { className : "noError" , isMathJax : true } ) ; if ( this . multiLine ) { n . style . display = "inline-block" } var o = this . data [ 0 ] . data [ 0 ] . data . join ( "" ) . split ( /\n/ ) ; for ( var l = 0 , j = o . length ; l < j ; l ++ ) { e . addText ( n , o [ l ] ) ; if ( l !== j - 1 ) { e . addElement ( n , "br" , { isMathJax : true } ) } } if ( j > 1 ) { var k = n . offsetHeight / 2 ; n . style . verticalAlign = ( - k + ( k / j ) ) + "px" } return n } } ) } ) ; b . Register . StartupHook ( "NativeMML Jax Ready" , function ( ) { var h = MathJax . ElementJax . mml ; var g = MathJax . Extension [ "TeX/noErrors" ] . config ; var f = h . math . prototype . toNativeMML , i = h . merror . prototype . toNativeMML ; h . math . Augment ( { toNativeMML : function ( j ) { var k = this . data [ 0 ] ; if ( k && k . data [ 0 ] && k . data [ 0 ] . isError ) { j = k . data [ 0 ] . toNativeMML ( j ) } else { j = f . call ( this , j ) } return j } } ) ; h . merror . Augment ( { toNativeMML : function ( n ) { if ( ! this . isError ) { return i . call ( this , n ) } n = n . appendChild ( document . createElement ( "span" ) ) ; var o = this . data [ 0 ] . data [ 0 ] . data . join ( "" ) . split ( /\n/ ) ; for ( var l = 0 , k = o . length ; l < k ; l ++ ) { n . appendChild ( document . createTextNode ( o [ l ] ) ) ; if ( l !== k - 1 ) { n . appendChild ( document . createElement ( "br" ) ) } } if ( this . multiLine ) { n . style . display = "inline-block" ; if ( k > 1 ) { n . style . verticalAlign = "middle" } } for ( var p in g . style ) { if ( g . style . hasOwnProperty ( p ) ) { var j = p . replace ( /-./g , function ( m ) { return m . charAt ( 1 ) . toUpperCase ( ) } ) ; n . style [ j ] = g . style [ p ] } } return n } } ) } ) ; b . Startup . signal . Post ( "TeX noErrors Ready" ) } ) ( MathJax . Hub , MathJax . HTML ) ; MathJax . Ajax . loadComplete ( "[MathJax]/extensions/TeX/noErrors.js" ) ;
MathJax . Extension [ "TeX/noUndefined" ] = { version : "2.0" , config : MathJax . Hub . CombineConfig ( "TeX.noUndefined" , { disabled : false , attributes : { mathcolor : "red" } } ) } ; MathJax . Hub . Register . StartupHook ( "TeX Jax Ready" , function ( ) { var b = MathJax . Extension [ "TeX/noUndefined" ] . config ; var a = MathJax . ElementJax . mml ; var c = MathJax . InputJax . TeX . Parse . prototype . csUndefined ; MathJax . InputJax . TeX . Parse . Augment ( { csUndefined : function ( d ) { if ( b . disabled ) { return c . apply ( this , arguments ) } MathJax . Hub . signal . Post ( [ "TeX Jax - undefined control sequence" , d ] ) ; this . Push ( a . mtext ( d ) . With ( b . attributes ) ) } } ) ; MathJax . Hub . Startup . signal . Post ( "TeX noUndefined Ready" ) } ) ; MathJax . Ajax . loadComplete ( "[MathJax]/extensions/TeX/noUndefined.js" ) ;
( function ( d , c , i ) { var h , g = "\u00A0" ; var e = MathJax . Object . Subclass ( { Init : function ( l , k ) { this . global = { isInner : k } ; this . data = [ b . start ( this . global ) ] ; if ( l ) { this . data [ 0 ] . env = l } this . env = this . data [ 0 ] . env } , Push : function ( ) { var l , k , n , o ; for ( l = 0 , k = arguments . length ; l < k ; l ++ ) { n = arguments [ l ] ; if ( n instanceof h . mbase ) { n = b . mml ( n ) } n . global = this . global ; o = ( this . data . length ? this . Top ( ) . checkItem ( n ) : true ) ; if ( o instanceof Array ) { this . Pop ( ) ; this . Push . apply ( this , o ) } else { if ( o instanceof b ) { this . Pop ( ) ; this . Push ( o ) } else { if ( o ) { this . data . push ( n ) ; if ( n . env ) { for ( var p in this . env ) { if ( this . env . hasOwnProperty ( p ) ) { n . env [ p ] = this . env [ p ] } } this . env = n . env } else { n . env = this . env } } } } } } , Pop : function ( ) { var k = this . data . pop ( ) ; if ( ! k . isOpen ) { delete k . env } this . env = ( this . data . length ? this . Top ( ) . env : { } ) ; return k } , Top : function ( k ) { if ( k == null ) { k = 1 } if ( this . data . length < k ) { return null } return this . data [ this . data . length - k ] } , Prev : function ( k ) { var l = this . Top ( ) ; if ( k ) { return l . data [ l . data . length - 1 ] } else { return l . Pop ( ) } } , toString : function ( ) { return "stack[\n " + this . data . join ( "\n " ) + "\n]" } } ) ; var b = e . Item = MathJax . Object . Subclass ( { type : "base" , closeError : "Extra close brace or missing open brace" , rightError : "Missing \\left or extra \\right" , Init : function ( ) { if ( this . isOpen ) { this . env = { } } this . data = [ ] ; this . Push . apply ( this , arguments ) } , Push : function ( ) { this . data . push . apply ( this . data , arguments ) } , Pop : function ( ) { return this . data . pop ( ) } , mmlData : function ( k , l ) { if ( k == null ) { k = true } if ( this . data . length === 1 && ! l ) { return this . data [ 0 ] } return h . mrow . apply ( h , this . data ) . With ( ( k ? { inferred : true } : { } ) ) } , checkItem : function ( k ) { if ( k . type === "over" && this . isOpen ) { k . num = this . mmlData ( false ) ; this . data = [ ] } if ( k . type === "cell" && this . isOpen ) { if ( k . linebreak ) { return false } d . Error ( "Misplaced " + k . name ) } if ( k . isClose && this [ k . type + "Error" ] ) { d . Error ( this [ k . type + "Error" ] ) } if ( ! k . isNotStack ) { return true } this . Push ( k . data [ 0 ] ) ; return false } , With : function ( k ) { for ( var l in k ) { if ( k . hasOwnProperty ( l ) ) { this [ l ] = k [ l ] } } return this } , toString : function ( ) { return this . type + "[" + this . data . join ( "; " ) + "]" } } ) ; b . start = b . Subclass ( { type : "start" , isOpen : true , Init : function ( k ) { this . SUPER ( arguments ) . Init . call ( this ) ; this . global = k } , checkItem : function ( k ) { if ( k . type === "stop" ) { return b . mml ( this . mmlData ( ) ) } return this . SUPER ( arguments ) . checkItem . call ( this , k ) } } ) ; b . stop = b . Subclass ( { type : "stop" , isClose : true } ) ; b . open = b . Subclass ( { type : "open" , isOpen : true , stopError : "Extra open brace or missing close brace" , checkItem : function ( l ) { if ( l . type === "close" ) { var k = this . mmlData ( ) ; return b . mml ( h . TeXAtom ( k ) ) } return this . SUPER ( arguments ) . checkItem . call ( this , l ) } } ) ; b . close = b . Subclass ( { type : "close" , isClose : true } ) ; b . subsup = b . Subclass ( { type : "subsup" , stopError : "Missing superscript or subscript argument" , checkItem : function ( l ) { var k = [ "" , "subscript" , "superscript" ] [ this . position ] ; if ( l . type === "open" || l . type === "left" ) { return true } if ( l . type === "mml" ) { this . data [ 0 ] . SetData ( this . position , l . data [ 0 ] ) ; return b . mml ( this . data [ 0 ] ) } if ( this . SUPER ( arguments ) . checkItem . call ( this , l ) ) { d . Error ( "Missing open brace for " + k ) } } , Pop : function ( ) { } } ) ; b . over = b . Subclass ( { type : "over" , isClose : true , name : "\\over" , checkItem : function ( m , k ) { if ( m . type === "over" ) { d . Error ( "Ambiguous use of " + m . name ) } if ( m . isClose ) { var l = h . mfrac ( this . num , this . mmlData ( false ) ) ; if ( this . thickness != null ) { l . linethickness = this . thickness } if ( this . open || this . close ) { l . texClass = h . TEXCLASS . INNER ; l . texWithDelims = true ; l = h . mfenced ( l ) . With ( { open : this . open , close : this . close } ) } return [ b . mml ( l ) , m ] } return this . SUPER ( arguments ) . checkItem . call ( this , m ) } , toString : function ( ) { return "over[" + this . num + " / " + this . data . join ( "; " ) + "]" } } ) ; b . left = b . Subclass ( { type : "left" , isOpen : true , delim : "(" , stopError : "Extra \\left or missing \\right" , checkItem : function ( l ) { if ( l . type === "right" ) { var k = h . mfenced ( this . data . length === 1 ? this . data [ 0 ] : h . mrow . apply ( h , this . data ) ) ; return b . mml ( k . With ( { open : this . delim , close : l . delim } ) ) } return this . SUPER ( arguments ) . checkItem . call ( this , l ) } } ) ; b . right = b . Subclass ( { type : "right" , isClose : true , delim : ")" } ) ; b . begin = b . Subclass ( { type : "begin" , isOpen : true , checkItem : function ( k ) { if ( k . type === "end" ) { if ( k . name !== this . name ) { d . Error ( "\\begin{" + this . name + "} ended with \\end{" + k . name + "}" ) } if ( ! this . end ) { return b . mml ( this . m
MathJax . Extension [ "TeX/AMSmath" ] = { version : "2.0" , number : 0 , startNumber : 0 , labels : { } , eqlabels : { } , refs : [ ] } ; MathJax . Hub . Register . StartupHook ( "TeX Jax Ready" , function ( ) { var b = MathJax . ElementJax . mml , g = MathJax . InputJax . TeX , f = MathJax . Extension [ "TeX/AMSmath" ] ; var d = g . Definitions , e = g . Stack . Item , a = g . config . equationNumbers ; var c = function ( h ) { return h . join ( "em " ) + "em" } ; d . Add ( { macros : { mathring : [ "Accent" , "2DA" ] , nobreakspace : "Tilde" , negmedspace : [ "Spacer" , b . LENGTH . NEGATIVEMEDIUMMATHSPACE ] , negthickspace : [ "Spacer" , b . LENGTH . NEGATIVETHICKMATHSPACE ] , intI : [ "Macro" , "\\mathchoice{\\!}{}{}{}\\!\\!\\int" ] , iiiint : [ "MultiIntegral" , "\\int\\intI\\intI\\intI" ] , idotsint : [ "MultiIntegral" , "\\int\\cdots\\int" ] , dddot : [ "Macro" , "\\mathop{#1}\\limits^{\\textstyle \\mathord{.}\\mathord{.}\\mathord{.}}" , 1 ] , ddddot : [ "Macro" , "\\mathop{#1}\\limits^{\\textstyle \\mathord{.}\\mathord{.}\\mathord{.}\\mathord{.}}" , 1 ] , sideset : [ "Macro" , "\\mathop{\\mathop{\\rlap{\\phantom{#3}}}\\nolimits#1\\!\\mathop{#3}\\nolimits#2}" , 3 ] , boxed : [ "Macro" , "\\fbox{$\\displaystyle{#1}$}" , 1 ] , tag : "HandleTag" , notag : "HandleNoTag" , label : "HandleLabel" , ref : "HandleRef" , eqref : [ "HandleRef" , true ] , substack : [ "Macro" , "\\begin{subarray}{c}#1\\end{subarray}" , 1 ] , injlim : [ "Macro" , "\\mathop{\\rm inj\\,lim}" ] , projlim : [ "Macro" , "\\mathop{\\rm proj\\,lim}" ] , varliminf : [ "Macro" , "\\mathop{\\underline{\\rm lim}}" ] , varlimsup : [ "Macro" , "\\mathop{\\overline{\\rm lim}}" ] , varinjlim : [ "Macro" , "\\mathop{\\underrightarrow{\\rm lim\\Rule{-1pt}{0pt}{1pt}}\\Rule{0pt}{0pt}{.45em}}" ] , varprojlim : [ "Macro" , "\\mathop{\\underleftarrow{\\rm lim\\Rule{-1pt}{0pt}{1pt}}\\Rule{0pt}{0pt}{.45em}}" ] , DeclareMathOperator : "HandleDeclareOp" , operatorname : "HandleOperatorName" , genfrac : "Genfrac" , frac : [ "Genfrac" , "" , "" , "" , "" ] , tfrac : [ "Genfrac" , "" , "" , "" , 1 ] , dfrac : [ "Genfrac" , "" , "" , "" , 0 ] , binom : [ "Genfrac" , "(" , ")" , "0em" , "" ] , tbinom : [ "Genfrac" , "(" , ")" , "0em" , 1 ] , dbinom : [ "Genfrac" , "(" , ")" , "0em" , 0 ] , cfrac : "CFrac" , shoveleft : [ "HandleShove" , b . ALIGN . LEFT ] , shoveright : [ "HandleShove" , b . ALIGN . RIGHT ] , xrightarrow : [ "xArrow" , 8594 , 5 , 6 ] , xleftarrow : [ "xArrow" , 8592 , 7 , 3 ] } , environment : { align : [ "AMSarray" , null , true , true , "rlrlrlrlrlrl" , c ( [ 5 / 18 , 2 , 5 / 18 , 2 , 5 / 18 , 2 , 5 / 18 , 2 , 5 / 18 , 2 , 5 / 18 ] ) ] , "align*" : [ "AMSarray" , null , false , true , "rlrlrlrlrlrl" , c ( [ 5 / 18 , 2 , 5 / 18 , 2 , 5 / 18 , 2 , 5 / 18 , 2 , 5 / 18 , 2 , 5 / 18 ] ) ] , multline : [ "Multline" , null , true ] , "multline*" : [ "Multline" , null , false ] , split : [ "AMSarray" , null , false , false , "rl" , c ( [ 5 / 18 ] ) ] , gather : [ "AMSarray" , null , true , true , "c" ] , "gather*" : [ "AMSarray" , null , false , true , "c" ] , alignat : [ "AlignAt" , null , true , true ] , "alignat*" : [ "AlignAt" , null , false , true ] , alignedat : [ "AlignAt" , null , false , false ] , aligned : [ "AlignedArray" , null , null , null , "rlrlrlrlrlrl" , c ( [ 5 / 18 , 2 , 5 / 18 , 2 , 5 / 18 , 2 , 5 / 18 , 2 , 5 / 18 , 2 , 5 / 18 ] ) , ".5em" , "D" ] , gathered : [ "AlignedArray" , null , null , null , "c" , null , ".5em" , "D" ] , subarray : [ "Array" , null , null , null , null , c ( [ 0 , 0 , 0 , 0 ] ) , "0.1em" , "S" , 1 ] , smallmatrix : [ "Array" , null , null , null , "c" , c ( [ 1 / 3 ] ) , ".2em" , "S" , 1 ] , equation : [ "EquationBegin" , "Equation" , true ] , "equation*" : [ "EquationBegin" , "EquationStar" , false ] } , delimiter : { "\\lvert" : [ "2223" , { texClass : b . TEXCLASS . OPEN } ] , "\\rvert" : [ "2223" , { texClass : b . TEXCLASS . CLOSE } ] , "\\lVert" : [ "2225" , { texClass : b . TEXCLASS . OPEN } ] , "\\rVert" : [ "2225" , { texClass : b . TEXCLASS . CLOSE } ] } } , null , true ) ; g . Parse . Augment ( { HandleTag : function ( j ) { var l = this . GetStar ( ) ; var i = this . trimSpaces ( this . GetArgument ( j ) ) , h = i ; if ( ! l ) { i = a . formatTag ( i ) } var k = this . stack . global ; k . tagID = h ; if ( k . notags ) { g . Error ( j + " not allowed in " + k . notags + " environment" ) } if ( k . tag ) { g . Error ( "Multiple " + j ) } k . tag = b . mtd . apply ( b , this . InternalMath ( i ) ) . With ( { id : a . formatID ( h ) } ) } , HandleNoTag : function ( h ) { if ( this . stack . global . tag ) { delete this . stack . global . tag } this . stack . global . notag = true } , HandleLabel : function ( i ) { var j = this . stack . global , h = this . GetArgument ( i ) ; if ( ! f . refUpdate ) { if ( j . label ) { g . Error ( "Multiple " + i + "'s" ) } j . label = h ; if ( f . labels [ h ] || f . eqlabels [ h ] ) { g . Error ( "Label '" + h + "' mutiply defined" ) } f . eqlabels [ h ] = "???" } } , HandleRef : function ( j , l ) { var i = this . GetArgument ( j ) ; var k = f . labels [ i ] || f . eqlabels [ i ] ; if ( ! k ) { k = "??" ; f . badref = ! f . refUpdate } var h = k ; if ( l ) { h = a . formatTag ( h ) } if ( a . useLabelIds ) { k = i } this . Push ( b . mrow . apply ( b , this . InternalMath ( h ) ) . With ( { href : a . formatURL ( a . formatID ( k ) ) , " clas
MathJax . Extension [ "TeX/AMSsymbols" ] = { version : "2.0" } ; MathJax . Hub . Register . StartupHook ( "TeX Jax Ready" , function ( ) { var a = MathJax . ElementJax . mml , b = MathJax . InputJax . TeX . Definitions ; b . Add ( { mathchar0mi : { digamma : "03DD" , varkappa : "03F0" , varGamma : [ "0393" , { mathvariant : a . VARIANT . ITALIC } ] , varDelta : [ "0394" , { mathvariant : a . VARIANT . ITALIC } ] , varTheta : [ "0398" , { mathvariant : a . VARIANT . ITALIC } ] , varLambda : [ "039B" , { mathvariant : a . VARIANT . ITALIC } ] , varXi : [ "039E" , { mathvariant : a . VARIANT . ITALIC } ] , varPi : [ "03A0" , { mathvariant : a . VARIANT . ITALIC } ] , varSigma : [ "03A3" , { mathvariant : a . VARIANT . ITALIC } ] , varUpsilon : [ "03A5" , { mathvariant : a . VARIANT . ITALIC } ] , varPhi : [ "03A6" , { mathvariant : a . VARIANT . ITALIC } ] , varPsi : [ "03A8" , { mathvariant : a . VARIANT . ITALIC } ] , varOmega : [ "03A9" , { mathvariant : a . VARIANT . ITALIC } ] , beth : "2136" , gimel : "2137" , daleth : "2138" , backprime : [ "2035" , { variantForm : true } ] , hslash : [ "210F" , { variantForm : true } ] , varnothing : [ "2205" , { variantForm : true } ] , blacktriangle : "25B2" , triangledown : "25BD" , blacktriangledown : "25BC" , square : "25A1" , Box : "25A1" , blacksquare : "25A0" , lozenge : "25CA" , Diamond : "25CA" , blacklozenge : "29EB" , circledS : [ "24C8" , { mathvariant : a . VARIANT . NORMAL } ] , bigstar : "2605" , sphericalangle : "2222" , measuredangle : "2221" , nexists : "2204" , complement : "2201" , mho : "2127" , eth : [ "00F0" , { mathvariant : a . VARIANT . NORMAL } ] , Finv : "2132" , diagup : "2571" , Game : "2141" , diagdown : "2572" , Bbbk : [ "006B" , { mathvariant : a . VARIANT . DOUBLESTRUCK } ] , yen : "00A5" , circledR : "00AE" , checkmark : "2713" , maltese : "2720" } , mathchar0mo : { dotplus : "2214" , ltimes : "22C9" , smallsetminus : [ "2216" , { variantForm : true } ] , rtimes : "22CA" , Cap : "22D2" , doublecap : "22D2" , leftthreetimes : "22CB" , Cup : "22D3" , doublecup : "22D3" , rightthreetimes : "22CC" , barwedge : "22BC" , curlywedge : "22CF" , veebar : "22BB" , curlyvee : "22CE" , doublebarwedge : "2A5E" , boxminus : "229F" , circleddash : "229D" , boxtimes : "22A0" , circledast : "229B" , boxdot : "22A1" , circledcirc : "229A" , boxplus : "229E" , centerdot : "22C5" , divideontimes : "22C7" , intercal : "22BA" , leqq : "2266" , geqq : "2267" , leqslant : "2A7D" , geqslant : "2A7E" , eqslantless : "2A95" , eqslantgtr : "2A96" , lesssim : "2272" , gtrsim : "2273" , lessapprox : "2A85" , gtrapprox : "2A86" , approxeq : "224A" , lessdot : "22D6" , gtrdot : "22D7" , lll : "22D8" , llless : "22D8" , ggg : "22D9" , gggtr : "22D9" , lessgtr : "2276" , gtrless : "2277" , lesseqgtr : "22DA" , gtreqless : "22DB" , lesseqqgtr : "2A8B" , gtreqqless : "2A8C" , doteqdot : "2251" , Doteq : "2251" , eqcirc : "2256" , risingdotseq : "2253" , circeq : "2257" , fallingdotseq : "2252" , triangleq : "225C" , backsim : "223D" , thicksim : [ "223C" , { variantForm : true } ] , backsimeq : "22CD" , thickapprox : [ "2248" , { variantForm : true } ] , subseteqq : "2AC5" , supseteqq : "2AC6" , Subset : "22D0" , Supset : "22D1" , sqsubset : "228F" , sqsupset : "2290" , preccurlyeq : "227C" , succcurlyeq : "227D" , curlyeqprec : "22DE" , curlyeqsucc : "22DF" , precsim : "227E" , succsim : "227F" , precapprox : "2AB7" , succapprox : "2AB8" , vartriangleleft : "22B2" , lhd : "22B2" , vartriangleright : "22B3" , rhd : "22B3" , trianglelefteq : "22B4" , unlhd : "22B4" , trianglerighteq : "22B5" , unrhd : "22B5" , vDash : "22A8" , Vdash : "22A9" , Vvdash : "22AA" , smallsmile : "2323" , shortmid : [ "2223" , { variantForm : true } ] , smallfrown : "2322" , shortparallel : [ "2225" , { variantForm : true } ] , bumpeq : "224F" , between : "226C" , Bumpeq : "224E" , pitchfork : "22D4" , varpropto : "221D" , backepsilon : "220D" , blacktriangleleft : "25C0" , blacktriangleright : "25B6" , therefore : "2234" , because : "2235" , eqsim : "2242" , vartriangle : [ "25B3" , { variantForm : true } ] , Join : "22C8" , nless : "226E" , ngtr : "226F" , nleq : "2270" , ngeq : "2271" , nleqslant : [ "2A87" , { variantForm : true } ] , ngeqslant : [ "2A88" , { variantForm : true } ] , nleqq : [ "2270" , { variantForm : true } ] , ngeqq : [ "2271" , { variantForm : true } ] , lneq : "2A87" , gneq : "2A88" , lneqq : "2268" , gneqq : "2269" , lvertneqq : [ "2268" , { variantForm : true } ] , gvertneqq : [ "2269" , { variantForm : true } ] , lnsim : "22E6" , gnsim : "22E7" , lnapprox : "2A89" , gnapprox : "2A8A" , nprec : "2280" , nsucc : "2281" , npreceq : [ "22E0" , { variantForm : true } ] , nsucceq : [ "22E1" , { variantForm : true } ] , precneqq : "2AB5" , succneqq : "2AB6" , precnsim : "22E8" , succnsim : "22E9" , precnapprox : "2AB9" , succnapprox : "2ABA" , nsim : "2241" , ncong : "2246" , nshortmid : [ "2224" , { variantForm : true } ] , nshortparallel : [ "2226" , { variantForm : true } ] , nmid : "2224" , nparallel : "2226" , nvdash : "22AC" , nvDash : "22AD" , nVdash : "22AE" , nVDash : "22AF" , ntriangleleft : "22EA" , ntriangleright : "22EB" , ntrianglelefteq : "22EC" , ntrianglerighteq : "22ED" , n
( function ( b , c ) { var a ; b . Parse = MathJax . Object . Subclass ( { Init : function ( d ) { this . Parse ( d ) } , Parse : function ( g ) { var h ; if ( typeof g !== "string" ) { h = g . parentNode } else { if ( g . match ( /^<[a-z]+:/i ) && ! g . match ( /^<[^<>]* xmlns:/ ) ) { g = g . replace ( /^<([a-z]+)(:math)/i , '<$1$2 xmlns:$1="http://www.w3.org/1998/Math/MathML"' ) } var d = g . match ( /^(<math( ('.*?'|".*?"|[^>])+)>)/i ) ; if ( d && d [ 2 ] . match ( / (?!xmlns=)[a-z]+=\"http:/i ) ) { g = d [ 1 ] . replace ( / (?!xmlns=)([a-z]+=(['"])http:.*?\2)/ig , " xmlns:$1 $1" ) + g . substr ( d [ 0 ] . length ) } g = g . replace ( /^\s*(?:\/\/)?<!(--)?\[CDATA\[((.|\n)*)(\/\/)?\]\]\1>\s*$/ , "$2" ) ; g = g . replace ( /&([a-z][a-z0-9]*);/ig , this . replaceEntity ) ; h = b . ParseXML ( g ) ; if ( h == null ) { b . Error ( "Error parsing MathML" ) } } var f = h . getElementsByTagName ( "parsererror" ) [ 0 ] ; if ( f ) { b . Error ( "Error parsing MathML: " + f . textContent . replace ( /This page.*?errors:|XML Parsing Error: |Below is a rendering of the page.*/g , "" ) ) } if ( h . childNodes . length !== 1 ) { b . Error ( "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 ) { b . Error ( "Error parsing MathML: " + String ( e . nextSibling . nodeValue ) . replace ( /fatal parsing error: / , "" ) ) } } if ( h . firstChild . nodeName . toLowerCase ( ) . replace ( /^[a-z]+:/ , "" ) !== "math" ) { b . Error ( "MathML must be formed by a <math> element, not <" + h . firstChild . nodeName + ">" ) } this . mml = this . MakeMML ( h . firstChild ) } , MakeMML : function ( g ) { var h = String ( g . getAttribute ( "class" ) || "" ) ; var e , f = g . nodeName . toLowerCase ( ) . replace ( /^[a-z]+:/ , "" ) ; var d = ( h . match ( /(^| )MJX-TeXAtom-([^ ]*)/ ) ) ; if ( d ) { e = this . TeXAtom ( d [ 2 ] ) } else { if ( ! ( a [ f ] && a [ f ] . isa && a [ f ] . isa ( a . mbase ) ) ) { MathJax . Hub . signal . Post ( [ "MathML Jax - unknown node type" , f ] ) ; return a . merror ( "Unknown node type: " + f ) } else { e = a [ f ] ( ) } } this . AddAttributes ( e , g ) ; this . CheckClass ( e , h ) ; this . AddChildren ( e , g ) ; if ( b . config . useMathMLspacing ) { e . useMMLspacing = 8 } return e } , TeXAtom : function ( e ) { var d = a . TeXAtom ( ) . With ( { texClass : a . TEXCLASS [ e ] } ) ; if ( d . texClass === a . TEXCLASS . OP ) { d . movesupsub = d . movablelimits = true } return d } , CheckClass : function ( e , g ) { g = g . split ( / / ) ; var h = [ ] ; for ( var f = 0 , d = g . length ; f < d ; f ++ ) { if ( g [ f ] . substr ( 0 , 4 ) === "MJX-" ) { if ( g [ f ] === "MJX-arrow" ) { e . arrow = true } else { if ( g [ f ] === "MJX-variant" ) { e . variantForm = true ; if ( ! MathJax . Extension [ "TeX/AMSsymbols" ] ) { MathJax . Hub . RestartAfter ( MathJax . Ajax . Require ( "[MathJax]/extensions/TeX/AMSsymbols.js" ) ) } } else { if ( g [ f ] . substr ( 0 , 11 ) !== "MJX-TeXAtom" ) { e . mathvariant = g [ f ] . substr ( 3 ) ; if ( e . mathvariant === "-tex-caligraphic-bold" || e . mathvariant === "-tex-oldstyle-bold" ) { if ( ! MathJax . Extension [ "TeX/boldsymbol" ] ) { MathJax . Hub . RestartAfter ( MathJax . Ajax . Require ( "[MathJax]/extensions/TeX/boldsymbol.js" ) ) } } } } } } else { h . push ( g [ f ] ) } } if ( h . length ) { e [ "class" ] = h . join ( " " ) } else { delete e [ "class" ] } } , AddAttributes : function ( f , h ) { f . attr = { } ; f . attrNames = [ ] ; for ( var g = 0 , d = h . attributes . length ; g < d ; g ++ ) { var e = h . attributes [ g ] . name ; if ( e == "xlink:href" ) { e = "href" } if ( e . match ( /:/ ) ) { continue } var j = h . attributes [ g ] . value ; if ( j . toLowerCase ( ) === "true" ) { j = true } else { if ( j . toLowerCase ( ) === "false" ) { j = false } } if ( f . defaults [ e ] != null || a . copyAttributes [ e ] ) { f [ e ] = j } else { f . attr [ e ] = j } f . attrNames . push ( e ) } } , AddChildren : function ( f , h ) { for ( var g = 0 , d = h . childNodes . length ; g < d ; g ++ ) { var k = h . childNodes [ g ] ; if ( k . nodeName === "#comment" ) { continue } if ( k . nodeName === "#text" ) { if ( f . isToken && ! f . mmlSelfClosing ) { var j = k . nodeValue . replace ( /&([a-z][a-z0-9]*);/ig , this . replaceEntity ) ; f . Append ( a . chars ( this . trimSpace ( j ) ) ) } else { if ( k . nodeValue . match ( /\S/ ) ) { b . Error ( "Unexpected text node: '" + k . nodeValue + "'" ) } } } else { if ( f . type === "annotation-xml" ) { f . Append ( a . xml ( k ) ) } else { var e = this . MakeMML ( k ) ; f . Append ( e ) ; if ( e . mmlSelfClosing && e . data . length ) { f . Append . apply ( f , e . data ) ; e . data = [ ] } } } } } , trimSpace : function ( d ) { return d . replace ( /[\t\n\r]/g , " " ) . replace ( /^ +/ , "" ) . replace ( / +$/ , "" ) . replace ( / +/g , " " ) } , replaceEntity : function ( f , e ) { if ( e . match ( /^(lt|amp|quot)$/ ) ) { return f } if ( b . Parse . Entity [ e ] ) { return b . Parse . Entity [ e ] } var g = e . charAt ( 0 ) . toLowerCase ( ) ; var d = e . match ( /^[a-zA-Z](fr|scr|opf)$/ ) ; if ( d ) { g = d [ 1 ] } if ( ! b . Parse . loaded [ g ] ) { b . Parse . loaded [ g ] = true ; MathJax . Hub . RestartAfter ( MathJax . Ajax . Require ( b . entityDir + "/" + g + ".js" ) ) } return f } } , { loaded : [ ] } ) ; b
( function ( h , c , e , a ) { var g ; var b = "http://www.w3.org/2000/svg" ; var j = "http://www.w3.org/1999/xlink" ; a . Augment ( { config : { styles : { ".MathJax_SVG" : { display : "inline" , "font-style" : "normal" , "font-weight" : "normal" , "line-height" : "normal" , "font-size" : "100%" , "font-size-adjust" : "none" , "text-indent" : 0 , "text-align" : "left" , "text-transform" : "none" , "letter-spacing" : "normal" , "word-spacing" : "normal" , "word-wrap" : "normal" , "white-space" : "nowrap" , "float" : "none" , direction : "ltr" , border : 0 , padding : 0 , margin : 0 } , ".MathJax_SVG_Display" : { position : "relative" , display : "block" , width : "100%" } , ".MathJax_SVG_Processing" : { visibility : "hidden" , position : "absolute" , top : 0 , left : 0 , width : 0 , height : 0 , overflow : "hidden" , display : "block" } , ".MathJax_SVG_Processed" : { display : "none!important" } , ".MathJax_SVG_ExBox" : { display : "block" , overflow : "hidden" , width : "1px" , height : "60ex" } , "#MathJax_SVG_Tooltip" : { position : "absolute" , left : 0 , top : 0 , width : "auto" , height : "auto" , display : "none" } } } , hideProcessedMath : true , Config : function ( ) { var k = c . config . menuSettings ; if ( k . scale ) { this . config . scale = k . scale } this . SUPER ( arguments ) . Config . apply ( this , arguments ) ; this . fontInUse = this . config . font ; this . fontDir += "/" + this . config . font ; if ( ! this . require ) { this . require = [ ] } this . require . push ( this . fontDir + "/fontdata.js" ) ; this . require . push ( MathJax . OutputJax . extensionDir + "/MathEvents.js" ) } , Startup : function ( ) { EVENT = MathJax . Extension . MathEvents . Event ; TOUCH = MathJax . Extension . MathEvents . Touch ; HOVER = MathJax . Extension . MathEvents . Hover ; this . ContextMenu = EVENT . ContextMenu ; this . Mousedown = EVENT . AltContextMenu ; this . Mouseover = HOVER . Mouseover ; this . Mouseout = HOVER . Mouseout ; this . Mousemove = HOVER . Mousemove ; this . hiddenDiv = e . Element ( "div" , { style : { visibility : "hidden" , overflow : "hidden" , position : "absolute" , top : 0 , height : "1px" , width : "auto" , padding : 0 , border : 0 , margin : 0 , textAlign : "left" , textIndent : 0 , textTransform : "none" , lineHeight : "normal" , letterSpacing : "normal" , wordSpacing : "normal" } } ) ; if ( ! document . body . firstChild ) { document . body . appendChild ( this . hiddenDiv ) } else { document . body . insertBefore ( this . hiddenDiv , document . body . firstChild ) } this . hiddenDiv = e . addElement ( this . hiddenDiv , "div" , { id : "MathJax_SVG_Hidden" } ) ; var k = e . addElement ( this . hiddenDiv , "div" , { style : { width : "5in" } } ) ; this . pxPerInch = k . offsetWidth / 5 ; this . hiddenDiv . removeChild ( k ) ; this . textSVG = this . Element ( "svg" ) ; d = this . addElement ( this . addElement ( this . hiddenDiv . parentNode , "svg" ) , "defs" , { id : "MathJax_SVG_glyphs" } ) ; f = { } ; this . ExSpan = e . Element ( "span" , { style : { position : "absolute" , "font-size-adjust" : "none" } } , [ [ "span" , { className : "MathJax_SVG_ExBox" } ] ] ) ; this . linebreakSpan = e . Element ( "span" , null , [ [ "hr" , { style : { width : "auto" , size : 1 , padding : 0 , border : 0 , margin : 0 } } ] ] ) ; return h . Styles ( this . config . styles , [ "InitializeSVG" , this ] ) } , InitializeSVG : function ( ) { document . body . appendChild ( this . ExSpan ) ; document . body . appendChild ( this . linebreakSpan ) ; this . defaultEx = this . ExSpan . firstChild . offsetHeight / 60 ; this . defaultWidth = this . linebreakSpan . firstChild . offsetWidth ; document . body . removeChild ( this . linebreakSpan ) ; document . body . removeChild ( this . ExSpan ) } , preTranslate : function ( o ) { var t = o . jax [ this . id ] , u , r = t . length , z , s , A , n , y , l , x , q , k , w = false , v , B = this . config . linebreaks . automatic , p = this . config . linebreaks . width ; if ( B ) { w = ( p . match ( /^\s*(\d+(\.\d*)?%\s*)?container\s*$/ ) != null ) ; if ( w ) { p = p . replace ( /\s*container\s*/ , "" ) } else { k = this . defaultWidth } if ( p === "" ) { p = "100%" } } else { k = 100000 } for ( u = 0 ; u < r ; u ++ ) { z = t [ u ] ; if ( ! z . parentNode ) { continue } s = z . previousSibling ; if ( s && String ( s . className ) . match ( /^MathJax(_SVG)?(_Display)?$/ ) ) { s . parentNode . removeChild ( s ) } l = z . MathJax . elementJax ; l . SVG = { display : ( l . root . Get ( "display" ) === "block" ) } ; A = n = e . Element ( "span" , { style : { "font-size" : this . scale + "%" , display : "inline-block" } , className : "MathJax_SVG" , id : l . inputID + "-Frame" , isMathJax : true , jaxID : this . id , oncontextmenu : EVENT . Menu , onmousedown : EVENT . Mousedown , onmouseover : EVENT . Mouseover , onmouseout : EVENT . Mouseout , onmousemove : EVENT . Mousemove , onclick : EVENT . Click , ondblclick : EVENT . DblClick } ) ; if ( c . Browser . noContextMenu ) { A . ontouchstart = TOUCH . start ; A . ontouchend = TOUCH . end } if ( l . SVG . display ) { n = e . Element ( "div" , { className : "MathJax_SVG_Display" } ) ; n . appendChild ( A ) } n . setAttribute ( "role" , "textbox" ) ; n . setAttribute ( "aria-readonly" , " tr
MathJax . Hub . Register . StartupHook ( "SVG Jax Ready" , function ( ) { var c = "2.0" ; var a = MathJax . ElementJax . mml , d = MathJax . OutputJax . SVG , b = d . BBOX ; a . mtable . Augment ( { toSVG : function ( U ) { var l = this . SVG ( ) ; if ( this . data . length === 0 ) { return l } var aF = this . getValues ( "columnalign" , "rowalign" , "columnspacing" , "rowspacing" , "columnwidth" , "equalcolumns" , "equalrows" , "columnlines" , "rowlines" , "frame" , "framespacing" , "align" , "useHeight" , "width" , "side" , "minlabelspacing" ) ; if ( aF . width . match ( /%$/ ) ) { l . width = aF . width = Math . floor ( d . cwidth * parseFloat ( aF . width ) / 100 ) + "px" } var aj = this . SVGgetScale ( ) , r = this . SVGgetMu ( l ) ; var aD = - 1 ; var u = [ ] , B = [ ] , h = [ ] , K = [ ] , E = [ ] , aB , aA , t = - 1 , ay , q , at , N ; var aH = d . FONTDATA . baselineskip * aj * aF . useHeight , V = d . FONTDATA . lineH * aj , ac = d . FONTDATA . lineD * aj ; for ( aB = 0 , ay = this . data . length ; aB < ay ; aB ++ ) { N = this . data [ aB ] ; at = ( N . type === "mlabeledtr" ? aD : 0 ) ; K [ aB ] = [ ] ; u [ aB ] = B [ aB ] = 0 ; for ( aA = at , q = N . data . length + at ; aA < q ; aA ++ ) { if ( h [ aA ] == null ) { if ( aA > t ) { t = aA } E [ aA ] = b . G ( ) ; h [ aA ] = - d . BIGDIMEN } K [ aB ] [ aA ] = N . data [ aA - at ] . toSVG ( ) ; if ( K [ aB ] [ aA ] . h > u [ aB ] ) { u [ aB ] = K [ aB ] [ aA ] . h } if ( K [ aB ] [ aA ] . d > B [ aB ] ) { B [ aB ] = K [ aB ] [ aA ] . d } if ( K [ aB ] [ aA ] . w > h [ aA ] ) { h [ aA ] = K [ aB ] [ aA ] . w } } } if ( u [ 0 ] + B [ 0 ] ) { u [ 0 ] = Math . max ( u [ 0 ] , V ) } if ( u [ K . length - 1 ] + B [ K . length - 1 ] ) { B [ K . length - 1 ] = Math . max ( B [ K . length - 1 ] , ac ) } var ai = aF . columnspacing . split ( / / ) , O = aF . rowspacing . split ( / / ) , ae = aF . columnalign . split ( / / ) , G = aF . rowalign . split ( / / ) , I = aF . columnlines . split ( / / ) , g = aF . rowlines . split ( / / ) , al = aF . columnwidth . split ( / / ) , ap = [ ] ; for ( aB = 0 , ay = ai . length ; aB < ay ; aB ++ ) { ai [ aB ] = d . length2em ( ai [ aB ] , r ) } for ( aB = 0 , ay = O . length ; aB < ay ; aB ++ ) { O [ aB ] = d . length2em ( O [ aB ] , r ) } while ( ai . length < t ) { ai . push ( ai [ ai . length - 1 ] ) } while ( ae . length <= t ) { ae . push ( ae [ ae . length - 1 ] ) } while ( I . length < t ) { I . push ( I [ I . length - 1 ] ) } while ( al . length <= t ) { al . push ( al [ al . length - 1 ] ) } while ( O . length < K . length ) { O . push ( O [ O . length - 1 ] ) } while ( G . length <= K . length ) { G . push ( G [ G . length - 1 ] ) } while ( g . length < K . length ) { g . push ( g [ g . length - 1 ] ) } if ( E [ aD ] ) { ae [ aD ] = ( aF . side . substr ( 0 , 1 ) === "l" ? "left" : "right" ) ; ai [ aD ] = - h [ aD ] } for ( aB = 0 , ay = K . length ; aB < ay ; aB ++ ) { N = this . data [ aB ] ; ap [ aB ] = [ ] ; if ( N . rowalign ) { G [ aB ] = N . rowalign } if ( N . columnalign ) { ap [ aB ] = N . columnalign . split ( / / ) ; while ( ap [ aB ] . length <= t ) { ap [ aB ] . push ( ap [ aB ] [ ap [ aB ] . length - 1 ] ) } } } if ( aF . equalrows ) { var Q = Math . max . apply ( Math , u ) , ak = Math . max . apply ( Math , B ) ; for ( aB = 0 , ay = K . length ; aB < ay ; aB ++ ) { at = ( ( Q + ak ) - ( u [ aB ] + B [ aB ] ) ) / 2 ; u [ aB ] += at ; B [ aB ] += at } } var au = u [ 0 ] + B [ K . length - 1 ] ; for ( aB = 0 , ay = K . length - 1 ; aB < ay ; aB ++ ) { au += Math . max ( ( u [ aB ] + B [ aB ] ? aH : 0 ) , B [ aB ] + u [ aB + 1 ] + O [ aB ] ) } var aa = 0 , X = 0 , av , aE = au ; if ( aF . frame !== "none" || ( aF . columnlines + aF . rowlines ) . match ( /solid|dashed/ ) ) { aa = d . length2em ( aF . framespacing . split ( /[, ]+/ ) [ 0 ] , r ) ; X = d . length2em ( aF . framespacing . split ( /[, ]+/ ) [ 1 ] , r ) ; aE = au + 2 * X } var e , ar , ax = "" ; if ( typeof ( aF . align ) !== "string" ) { aF . align = String ( aF . align ) } if ( aF . align . match ( /(top|bottom|center|baseline|axis)( +(-?\d+))?/ ) ) { ax = RegExp . $3 ; aF . align = RegExp . $1 } else { aF . align = this . defaults . align } if ( ax !== "" ) { ax = parseInt ( ax ) ; if ( ax < 0 ) { ax = K . length + 1 + ax } if ( ax < 1 ) { ax = 1 } else { if ( ax > K . length ) { ax = K . length } } e = 0 ; ar = - ( au + X ) + u [ 0 ] ; for ( aB = 0 , ay = ax - 1 ; aB < ay ; aB ++ ) { var T = Math . max ( ( u [ aB ] + B [ aB ] ? aH : 0 ) , B [ aB ] + u [ aB + 1 ] + O [ aB ] ) ; e += T ; ar += T } } else { e = ( { top : - ( u [ 0 ] + X ) , bottom : au + X - u [ 0 ] , center : au / 2 - u [ 0 ] , baseline : au / 2 - u [ 0 ] , axis : au / 2 + d . TeX . axis _height * aj - u [ 0 ] } ) [ aF . align ] ; ar = ( { top : - ( au + 2 * X ) , bottom : 0 , center : - ( au / 2 + X ) , baseline : - ( au / 2 + X ) , axis : d . TeX . axis _height * aj - au / 2 - X } ) [ aF . align ] } var am , aq = 0 , R = 0 , S = 0 , aw = 0 , aC = 0 , o = [ ] , w = [ ] , af = 1 ; if ( aF . equalcolumns && aF . width !== "auto" ) { am = d . length2em ( aF . width , r ) ; for ( aB = 0 , ay = Math . min ( t + 1 , ai . length ) ; aB < ay ; aB ++ ) { am -= ai [ aB ] } am /= t + 1 ; for ( aB = 0 , ay = Math . min ( t + 1 , al . length ) ; aB < ay ; aB ++ ) { h [ aB ] = am } } else { for ( aB = 0 , ay = Math . min ( t + 1 , al . length ) ; aB < ay ; aB ++ ) { if ( al [ aB ] === "auto" ) { R += h [ aB ] } else { if ( al [ aB ] === "fit" ) { w [ aC ] = aB ; aC ++ ; R += h [ aB ] } else { if ( al [ aB ] . match ( /%$/ ) ) { o [ aw ] = aB ; aw ++ ; S += h [ aB ] ; aq += d . length2em ( al [ aB ] , r , 1 ) } else { h [ aB ] = d . length2em ( al [ aB ] , r ) ; R += h [ aB ] } } } } if ( aF . width === "auto" ) { if ( aq > 0.98 ) { af = S / ( R + S ) ; am = R + S } else { am = R / ( 1 - aq ) } } else { am = d . length2em ( aF . width , r ) ; for ( aB = 0 , ay = Math . min ( t + 1 , ai . length ) ; aB < ay ; aB ++ ) { am -= ai [ aB ] } } for ( aB = 0 , ay = o . length ; aB < ay ; aB ++ ) { h [ o [ aB ] ] = d . length2em ( al [ o [ aB ] ] , r , am * af ) ; R += h [ o [ aB ] ] } if ( Math . abs ( am - R ) > 0.01 ) { if ( aC && am > R ) { am = ( am - R ) / aC ; for ( aB = 0 , ay = w . length ; aB < ay ; aB ++ ) { h [ w [ aB ] ] += am } } e
2012-03-01 01:21:20 +00:00
MathJax . Ajax . loadComplete ( "[MathJax]/config/TeX-AMS-MML_SVG-full.js" ) ;