
    -Phq                        d Z ddlZddlZddlmZmZmZmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddiZe                     ej!                   ej"        Z#ddd	d
ddddddddZ$dddddddddd	Z%e%                     d dD                        dddddZ&d d!d"d#d$d%d&d#d'd(d(d)d*d+Z'i d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdCdGdEdHdEZ(e(                     ej)                   e(                     ej*                   e(                     ej+                   i dIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdddhdddfddidjdkdldmZ,e,                     ej-                   e,                     ej.                   e,                     ej/                   e,                     ej0                   e,                     e(           dndodpZ1dqdrdsdtdudvdwdxZ2dyZ3dzd{d|d|d}d}d~d~dddddddZ4ddddddddddddddZ5ddddddddZ6ddddddZ7ddddZ8ddddddZ9dddddddddd	Z:dddddddddddddZ;i dddde;d         e;d         ddie;d         ddiz  e;d         ddiz  dZ<g dZ=ddddddddddd
Z>d Z?d Z@d ZAd ZBdÄ ZCdĄ ZDdń ZEdƄ ZFdǄ ZGddɄZHdʄ ZId˄ ZJd̄ ZKd̈́ ZLdd΄ZMdS )zConvert LaTex maths code into presentational MathML.

This module is provisional:
the API is not settled and may change with any minor Docutils version.
    N)	MathErrormathalphabet2unichartex2unichartoplevel_code)mathmtablemrowmtrmtdmenclosemphantommsqrtmimnmomtextmsubmsupmsubsupmundermover
munderovermrootmfracmspaceMathRowhbaru   ℏu   Φu   Ξ   Σu   Ψu   Δu   Θu   ϒ   Πu   Ω   Γu   Λ)PhiXiSigmaPsiDeltaThetaUpsilonPiOmegaGammaLambdau	   lim infu	   lim supu	   inj limu
   proj limlim)	liminflimsupinjlimprojlim	varlimsup	varliminf
varprojlim	varinjlimoperatornamec              #      K   | ]}||fV  	d S N ).0names     `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/docutils/utils/math/latex2mathml.py	<genexpr>r<   I   s>       A A$$ A A A A A A    )arccosarcsinarctanargcoscoshcotcothcscdegdetdimexpgcdhomkerlglnlogPrsecsinsinhtantanh)TTFz0.278em)FTT0.444em)FTFz0.667em)FFTrW   )bmodpmodmodpodzdouble-struckboldzbold-italicscriptfrakturitalicnormalz
sans-serifzsans-serif-bold-italiczsans-serif-italic	monospace)mathbbmathbfmathbfitmathcalmathfrakmathitmathrmmathscrmathsf
mathbfsfit
mathsfbfitmathsfitmathtt	backslash\uparrowu   ↑	downarrowu   ↓updownarrowu   ↕Uparrowu   ⇑	Downarrowu   ⇓Updownarrowu   ⇕
lmoustacheu   ⎰
rmoustacheu   ⎱	arrowvertu   ⏐	bracevertu   ⎪lvert|lVert   ‖rvertrVert	Arrowvertnleqqu   ≦̸ngeqqu   ≧̸	nleqslantu   ⩽̸	ngeqslantu   ⩾̸ngtrlessu   ≹nlessgtru   ≸
nsubseteqqu   ⫅̸
nsupseteqqu   ⫆̸	centerdotu   ⬝
varnothingu   ⌀	varproptou   ∝triangleu   △triangledownu   ▽dotsbu   ⋯dotscu   …dotsidotsmsupinfmaxmin)dotsor,   r   r   r   r   u   ∼u   ≈)thicksimthickapproxu   ∣u   ∥u   ∤u   ∦u   ⌢u   ⌣u   ∫)shortmidshortparallel	nshortmidnshortparallel
smallfrown
smallsmilesmallint)bigcapbigcupbigodotbigoplus	bigotimesbigsqcupbiguplusbigveebigwedgecoprodintopointopprodsumr,   r   r   r   r   2em1emz0.2778emz0.25emz0.2222emz0.1667emz	-0.1667emz	-0.2222emz	-0.2778em)qquadquad
thickspace; 
medspace:	thinspace,negthinspace!negmedspacenegthickspace   ´u   ˉu   ˘u   ˇu   ˙   ¨u   ˙˙˙u   ˙˙˙˙`u   ˆu   ˚~   →)acutebarbrevecheckdotddotdddotddddotgravehatmathringtildevec)u   ⏞皙ɿ)   ←r   )u   ↔r   )_r   )r   r   )^g      )r   g333333ӿ)	overbraceoverleftarrowoverleftrightarrowoverlineoverrightarrowwidehat	widetilde)u   ⏟g?)r   g)
underbraceunderleftarrowunderleftrightarrow	underlineunderrightarrowu   −u   ∶    )-r   r   u   ℾu   ℿu   ⅀u   ℽu   ℼ)r    r   r   u   γu   π) r   )())[]){})r|   r|   )r~   r~   )r   r   )	matrixsmallmatrixpmatrixbmatrixBmatrixvmatrixVmatrixalignedcasesT)displaystylescriptlevelF      )r   	textstylescriptstylescriptscriptstylecfrac)r   r   classr   r   linethickness)fracr   dfractfracbinomdbinomtbinom)r   z1.2emz1.623emz2.047emz2.470em      )
leftrightbiglbigrBiglBigrbigglbiggrBigglBiggrc                     t          j        d| t           j                  }| t          j        d| t           j                  }|                    d          |                    d          fS )a"  Return leading TeX command name and remainder of `string`.

    >>> tex_cmdname('mymacro2') # up to first non-letter
    ('mymacro', '2')
    >>> tex_cmdname('name 2') # strip trailing whitespace
    ('name', '2')
    >>> tex_cmdname('_2') # single non-letter character
    ('_', '2')

    z([a-zA-Z]+)[ \n]*(.*)Nz(.?)(.*)r   r   rematchDOTALLgroupstringms     r;   tex_cmdnamer  O  sS     	)629==AyH[&")44771::qwwqzz!!r=   c                     t          j        d| t           j                  }|d| fS |                    d          |                    d          fS )zmReturn leading number literal and remainder of `string`.

    >>> tex_number('123.4')
    ('123.4', '')

    z([0-9.,]*[0-9]+)(.*)Nr   r   r   r  r  s     r;   
tex_numberr  r  sH     	(&")<<Ay6z771::qwwqzz!!r=   c                     t          j        d| t           j        t           j        z            }|                    dddd          \  }}}}|p|p||fS )zReturn first simple TeX token and remainder of `string`.

    >>> tex_token('\command{without argument}')
    ('\command', '{without argument}')
    >>> tex_token('or first character')
    ('o', 'r first character')

    a%  ((?P<cmd>\\[a-zA-Z]+)\s* # TeX command, skip whitespace
                      |(?P<chcmd>\\.)          # one-character TeX command
                      |(?P<ch>.?))            # first character (or empty)
                     (?P<remainder>.*$)    # remaining part of string
                 cmdchcmdch	remainder)r  r  VERBOSEr  r  )r  r  r  r  r  r  s         r;   	tex_tokenr!    sa     	  bj294		6 	6A
 !"wk J JCI%2y((r=   c                    d}d}d}|                      d          s| dd         | dd         fS | D ]4}|dz  }|rd}n |dk    rd}n|dk    r|dz  }n|dk    r|dz  }|dk    r n5t          d	          | d|dz
           | |d         fS )
zReturn first TeX group or token and remainder of `string`.

    >>> tex_group('{first group} returned without brackets')
    ('first group', ' returned without brackets')

    r   Fr   Nr   rp   Tr   zGroup without closing bracket!)
startswithr   )r  split_index
nest_levelescapecs        r;   	tex_groupr(    s     KJFS!! &bqbz6!"":%% : :q 	FF$YYFF#XX!OJJ#XX!OJ??E  8999!KM/"F;<<$888r=   c                     t          |           \  }}|dk    r$t          |                                           \  }}||fS )a  Return first TeX group or token and remainder of `string`.

    >>> tex_token_or_group('\command{without argument}')
    ('\command', '{without argument}')
    >>> tex_token_or_group('first character')
    ('f', 'irst character')
    >>> tex_token_or_group(' also whitespace')
    (' ', 'also whitespace')
    >>> tex_token_or_group('{first group} keep rest')
    ('first group', ' keep rest')

    r   )r!  r(  lstrip)r  rA   r  s      r;   tex_token_or_groupr+    sA     v&&NC
czz"6==??33Y	>r=   c                 *   t          j        d| t           j        t           j        z            }||                     d          sd| fS 	 |                    d          |                    d          fS # t          $ r t          d|  d          w xY w)	a$  Return optional argument and remainder.

    >>> tex_optarg('[optional argument] returned without brackets')
    ('optional argument', ' returned without brackets')
    >>> tex_optarg('{empty string, if there is no optional arg}')
    ('', '{empty string, if there is no optional arg}')

    z\s*                            # leading whitespace
                 \[(?P<optarg>(\\]|[^\[\]]|\\])*)\] # [group] without nested groups
                 (?P<remainder>.*$)
                 Nr   r   optargr  z*Could not extract optional argument from ""!)r  r  r   r  r#  r  AttributeErrorr   r  s     r;   
tex_optargr0    s     	  bj294	6 	6A 	y**3//y6zQwwx  !''+"6"666 Q Q QOVOOOPPPQs   
)A4 4Bc           
         |}| }t          |          dk    r|d         |dd         }}|dv r+|dk    r(t          |          \  }}t          |||          \  }}n0|dv rt          ||          }n|dk    rPt	          |t
                    r|j        dk    r	d|_        nt                      }|                    |           |}n|dk    r|	                                }n|d	k    r9t                      }|	                                                    |           |}ni|                                r$|                    t          |                    }n1|                                r8t          |          \  }}|                    t          ||z                       }n|t           v ryi }|d
k    rEt          |          r6|d         }	|	j        r	|	j        dv s|	                    d          dk    rd|d<   |                    t'          t           |         fi |          }nc|dv r%|                    t'          |d                    }n:|dv r#|                    t'          |                    }nt)          d| d          |0|s| S t)          d| d|dt          |                     d          t          |          dk    |j        r't          |          |j        k     rt)          d          | S )u   Append MathML conversion of `string` to `node` and return it.

    >>> parse_latex_math(math(), r'lpha')
    math(mi('α'))
    >>> parse_latex_math(mrow(), r'x_{n}')
    mrow(msub(mi('x'), mi('n')))

    r   r   Nz 
rp   _^r   r   &r   z([=r   mathopenprefixformz/()[]|Fstretchyz+*=<>,.!?`';@zUnsupported character: "r.  zNo insertion point for "z". Unbalanced braces in "z"?z.Last node missing children. Source incomplete?)lenr  
handle_cmdhandle_script_or_limit
isinstancer   	nchildrenr	   appendcloser   isalphar   isdigitr  r   anomalous_charstextgetr   r   )
rootsourcer  noder'  cmdnamenew_nodenumber
attributesprevious_nodes
             r;   parse_latex_mathrN    s0    FD f++//1Ivabbz6::99)&11OGV%gtV<<LD&&$YY)$22DD#XX$((  T^q-@-@!%66H%%%#XX::<<DD#XXuuHJJLL)))DDYY[[ 	>;;r!uu%%DDYY[[ 	>'//NFF;;r!F(||,,DD/!! JCxxCIIx $R!& 2=+=+F+F$((11Z??)1Jv&;;r/!"4CC
CCDDDD(]];;r!e44455DD/!!;;r!uu%%DD<q<<<===<  Ov O O5;Mc&kk\M5JO O O P P Pe f++//h ~ J#d))dn44HIIIKr=   c                 v   | t           v rRt          t           |                    }| t          v r|                    dd           |                    |          }||fS | t
          v r/|                    t          t
          |                              |fS | t          v r| dk    r$t          |          \  }}t          |d          }nt          t          |                    }| dk    rt          |t          d                    }nm| dk    r t          |t          d	          d
          }nG| dk    rt          |t          d                    }n#| dk    rt          |t          d                    }|                    |          }|r,|d         dvr"|                    t          d                    }||fS | t          v r/t          |          \  }}}}|r)|                    t          d||                    }||fS |                                rd}|                    t          |                    }|r$|                    t          dd
                    }|rE|                    t          d                    }|                    t          d                    }t          |          \  }}t          ||          }|r$|                    t          dd
                    }||fS | dv r)t          d          }|                    |           ||fS | t           v rt#          | ||          S | dk    r*|                    t          dd d!d"#                    }||fS | d$k    rt          |d%          }||fS | t$          v r3|                    t          t$          |          d&'                    }||fS | t&          v r3|                    t          t&          |          d()                    }||fS | t(          v rUi }	| t*          v r|r|d         d*v rd+|	d,<   n	| d-v rd.|	d<   |                    t          t(          |          fi |	          }||fS | t,          v r i }
t.          t,          |                   }t          |          \  }}|d/vrF	 t0          |                    d0                   }n$# t4          $ r t7          d1|  d2| d3          w xY w|r||
d4<   ||
d5<   d+|
d6<   | d7k    s|                     d8          r%t                      }|                    |           |}|d9k    r |                    t          |fi |
           | d:k    s|                     d;          r|                                }||fS | d<k    rt=          |          \  }}|d=k    r|d>|z   fS |                    d0          r8	 t(          |d?d@                  }n!# t4          $ r t7          dA| d3          w xY wtA          j!        dB|dCz             }|                    t          |                    }||fS | dDv rt          |          \  }}|"                    dE          }tG          |          D ]W\  }}|dFz  dk    r9tI          j%        dGdH|          }|                    tM          |                    }Gt          ||           X||fS | tN          v r5|                    t          dItN          |          z                      }||fS | dJv rntQ          |          \  }}|                    dK          rdLtS          |d@dM                   dNz  z  }|                    t          dI|z                      }||fS | dOk    r'tU                      }|                    |           ||fS | dPk    r*tW          dQdPR          }|                    |           ||fS | dSk    rtY          |          \  }}|rDt                      }t[          |d+T          }t          ||           |                                 nt]                      }|                    |           ||fS | t^          v rt^          |          }	| dUk    rStY          |          \  }}d7d:dV}||v r8|	0                                }	||         |	dW<   |	dxx         dX||         z   z  cc<   tc          dmi |	x}}|                     dY          r4t          t          d          |t          d          dY          }dZ|_2        |                    |           ||fS | d0k    rZtg                      }ti          |          }|                                                                                    |           ||fS | tj          v rct          tj          |          d
          }| d[k    r|                    d\d]           t          |d+d+^          }|                    |           ||fS | tl          v rKt          t          tl          |          d         d+          d+d
_          }|                    |           ||fS | d`k    r)t          d+T          }|                    |           ||fS | tn          v rHt          t          tn          |          d                   d+T          }|                    |           ||fS | dak    r)t          d+T          }|                    |           ||fS | dbv rtY          |          \  }}t          t(          dc| d?d@         z                      }|r\tq          |          }t          t                      |          }ts          |          d?k    r|d         }|                    |           nt          |          }|                    |           ||fS | tt          v rets          |          dk    rt7          dd|  de          tt          |          ;                                D ]\  }}|                    ||           ||fS |                     df          r.t=          |          \  }}|dgv r|}ty          ||| h          }||fS | dik    rt{          ||          S | djk    rt}          ||          S t7          dk|  dl          )nuj  Process LaTeX command `name` followed by `string`.

    Append result to `node`.
    If needed, parse `string` for command argument.
    Return new current node and remainder of `string`:

    >>> handle_cmd('hbar', math(), r' rac')
    (math(mi('ℏ')), ' \frac')
    >>> handle_cmd('hspace', math(), r'{1ex} (x)')
    (math(mspace(width='1ex')), ' (x)')

    r   zcapital-greekr5   r`   )mathvariantr2   r   r1      ¯F)accentr3   r   r4   r   r   )r   r   u   ⁡rZ   )lspacerspacer   )widthr   r8  0.333emr   )
boldsymbolpmbrW  )CLASScolonr   postfix0z0.28em)r7  rS  rT  idotsintz\int\dotsi\intzfont-weight: bold)stylez75%)mathsizez _^Tmovablelimits)r{   r}   r5  z()[]/|.rp   zUnsupported "\z" delimiter "r.  maxsizeminsize	symmetricr  l.r  rnotr   z{\not r   Nz"\not" cannot negate: "NFCu   ̸)rD  mboxtextrm$r   z(^[ 
]|[ 
]$)r   z%s)hspacer   muz%sem   phantomboxedbox)notationrY  sqrt)switchr   )rd  rf  numalignz
 numalign-r   r  r   r   z+1)rR  ru  )ru  rR  oversetunderset)
xleftarrowxrightarrowlongzDeclaration "\z#" must be first command in a group!limitsr2  )r|  beginendzUnknown LaTeX command "\z".r8   )?lettersr   greek_capitalssetr?  ordinary	functionsr+  r   r   r   modulo_functionsin_blockr   rN  r	   math_alphabetshandle_math_alphabetthick_operatorssmall_operators	operatorsr`  bigdelimitersdelimiter_sizesstretchablesr*  KeyErrorr   endswithr@  r!  r#  unicodedata	normalizesplit	enumerater  subr   spacesr(  floatr   r   r0  r   r   	fractionscopyr   r>  r   r
   accentsoverunderr   r:  layout_stylesitemsr<  begin_environmentend_environment)r:   rH  r  rJ  rA   binarynamedparenthesespaddingrL  delimiter_attributessize	delimiterrowpartsipartradix	indexnoder-  optargsr   entryaccent_node	subscriptbasesub_nodekvr  s                                 r;   r;  r;    s   & wgdm$$>!! LL/222{{8$$V|x
 {{2htn--..66y >!! -V44KC#8444HH)D/**H;h300HH[  Xr$xx>>>HH\!!h855HH[  h855H{{8$$  	-fQiz11;;r(||,,DV|0@0F-W 	 ;;r%HHHIID<==?? 	G{{600011 	8;;r#66677D 	8;;r%yy))D;;vI66677D(00Vc** 	8;;r#66677DV| $$$l+++H~#D$777 w{{2c	#hOOOPPV|z&788V|{{2od3;NOOOPPV|{{2od3eDDDEEV|y
=  V q	U0B0B*.J'''''",Jw{{2io<<<<==V|}!}T23.v66	6I%%3()9)9$)?)?@		 3 3 3 !2$ !2 !2$-!2 !2 !2 3 3 33  	5.2 +.2 +04 -6>>T]]3//>&&CKKDKK9==(<==>>>7??dmmC00?::<<DV|u}}''V#::V+++>>$ 	DDABB( D D D B3 B B BCCCD#E3x<88{{2c77##V| )))(00V		# '' 	- 	-GAt1uzz v/4@@{{5;;// t,,,,V| v~~{{6VD\(9:::;;V|###''V<< 	0E#crc(OOB./C{{6S11122V|y::Hw U':::H
 v~~"6**v 	IYt444HY...OOwwHHyt_
7??'//NFF"11G  '__..
)0
:&7###|gfo'EE###--*---4==!! 	#BsGGXr#wwgFFFH!"HHV|t||u::

##H---f}w777 5==OOM4000T$???Ht|| DJqM$777 $U4 4 4Hy%%%Hu}}"U4[^,,T:::Hz&&&H,,,&v..	6)F48O,-- 	#!$''H'	::H8}}!!#A;OOH%%%%T{{HH}t99q== *d * * * + + +!$'--// 	 	DAqHHQNNNNV|}}X "6**Y$;;F)$DAAADV| w v...u}}tV,,,
8888
9
99s    R6 6!S?W W3c                    i }| dk    rd|d<   t          |          \  }}| dk    rM|                                r9t          |          dk    r&|                    t	          |                    }||fS t          di |}|                    |           t          ||           |                     dd                              dd          }t          t          |i           |
                                D ]}t          |t                    r,d                    fd	|j        D                       |_        Ct          |t                    rZ                    |j        |j                  |_        | dk    r/|j                                        r|                    d
d           |                                |fS )Nri   r   rh   r   re   rk   rl   r   c              3   D   K   | ]}                     ||          V  d S r7   )rE  )r9   r  a2chs     r;   r<   z'handle_math_alphabet.<locals>.<genexpr>  s1      "K"K488B#3#3"K"K"K"K"K"Kr=   rP  r`   r8   )r+  rA  r:  r?  r   r	   rN  replacegetattrr   iterr=  r   joinrD  rE  r  r@  )	r:   rH  r  rL  rA   	containerkeysubnoder  s	           @r;   r  r    s   Jy'
7$V,,KCxCKKMMc#hhll{{2c77##V|""z""IKK	Y$$$
,,y)
,
,
4
4\<
P
PC'b11D>>## 5 5gr"" 	577"K"K"K"Kgl"K"K"KKKGLL$$ 	588GL',??GLxGL$8$8$:$:M8444??f$$r=   r   c                    |                                  }|dk    r|                    dd           n4|dk    st          |dd          t          v r|                    dd           |dk    rt	          |t
                    rt          |dd	i}nt	          |t                    rt          |dd	i}n|d
v s|dk    r&|	                    dd          rt          |          }nt          |          }n|dk    r}t	          |t                    r
t          | }n^t	          |t                    r
t          | }n?|d
v s|dk    r&|	                    dd          rt          |          }nt          |          }|                     |           |S )z)Append script or limit element to `node`.r|  r`  falserD  r   truer   ru  T)r|  r`  Nr   )popr  r  r`  r=  r   r   r   r   rE  r   r   r?  )rH  r'  r|  childrJ  s        r;   r<  r<    s   HHJJE		/7++++
O
#
#UFB''=88		/6***CxxeU## 	#!5666HHt$$ 	#3d33HH3332%))OT"B"Be}}HHE{{HH	
ceV$$ 	#!5)HHt$$ 	#HH3332%))OT"B"BU||HHE{{HKKOr=   c                    t          |          \  }}|t          v rt          |         d         }i }|rbt          t          |                    }|dk    r(t          t          |d                    }d|d<   d|d<   |                     |           |} n!|dk    rd	|d
<   d|d<   d|d<   n|dk    rd|d<   t                      }|                     t          t          |          fi |           |} nt          d| d          | |fS )Nr   r   z0.17em)rT  r  columnalignr   r   z0.02em
rowspacingrV  columnspacing1r   r   	ams-alignEnvironment "" not supported!)	r(  matricesr	   r   r?  r   r   r
   r   )rH  r  r:   left_delimiterrL  wrapperr  s          r;   r  r  $  s;   V$$LD&x!$*
 	.2n--..Gwr.BBBCC,2
=)&-
7#KK   DD]""'/J|$*3J'(+J}%%Y"-JwF3u::4444555>>>>???<r=   c                    t          |          \  }}|t          v r|                                                                                                 } t          |         d         }|r7|                     t	          |                    } |                                 } n.|dk    r|                                 } nt          d| d          | |fS )Nr   r   r  r  )r(  r  r@  r?  r   r   )rH  r  r:   right_delimiters       r;   r  r  @  s    V$$LD&xzz||!!##))++"4.+ 	 ;;r/2233D::<<DDW__::<<D>>>>???<r=   c                 n    t          d | D                       }|dk    rdS t          |dz  dz             S )Nc              3   l   K   | ]/}|                     d           |                     d          z
  V  0dS r3  z\&Ncountr9   r  s     r;   r<   z'tex_equation_columns.<locals>.<genexpr>R  =      AASsyy~~		% 0 00AAAAAAr=   r   r   r   )r   int)rowstabss     r;   tex_equation_columnsr  Q  s@    AADAAAAADqyyqtAvz??r=   c                     ddd}t          d | D                       }|rQddg|z  }ddg|z  }d	                    |d |d
z                      |d<   d	                    |d |                   |d<   |S )Nr  T)r   r   c              3   l   K   | ]/}|                     d           |                     d          z
  V  0dS r  r  r  s     r;   r<   z#align_attributes.<locals>.<genexpr>h  r  r=   r  r  r\  r   r   r   r  r  )r   r  )r  attsr  alignsspacings        r;   align_attributesr  d  s      " "D AADAAAAAD 96"T),%!hhvgtAvg77] #$ 8 8_Kr=   c                    t          d          }|}|r|                    dd           t          |                               d          }t	          |          dk    r@t                      }|                    t          t          |          dd	                     t          ||            |
                                 |                                S )
zxReturn string with MathML code corresponding to `tex_math`.

    Set `as_block` to ``True`` for displayed formulas.
    z"http://www.w3.org/1998/Math/MathML)xmlnsdisplayblockz\\r   r  T)rY  r   )r   r  r   r  r:  r   r?  r   r
   rN  
indent_xmltoxml)tex_mathas_block	math_treerH  r  s        r;   
tex2mathmlr  ~  s     ?@@@ID 8i)))X&&,,U33t99q==55DVCII[157 7 7 8 8 8T8$$$??r=   )r   )F)N__doc__r  r  docutils.utils.mathr   r   r   r   #docutils.utils.math.mathml_elementsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  update	mathalphamathordr  r  r  r  r  r  	mathfencer5  	mathcloser  mathbinmathrel	mathpunctmathopr  r  r`  r  r  r  r  rC  rb   r  r  r  r  r  r  r  r!  r(  r+  r0  rN  r;  r  r<  r  r  r  r  r  r8   r=   r;   <module>r     s     
			    = = = = = = = = = = = =                                                5/ {$ % % % 8hhx(	+ +  	 
   A A@A A A A A A -,,,   "**% ,4 8 8	
 8 8 8 8 8 8 8 8 # ( #  (!" (#&   K) * * *   K( ) ) )   K) * * *
. . .	
 . . . . .  (   H" X#$ X%& X'( X)* 7  	: 
  $ % % % 	  $ % % % 	  & ' ' ' 	  # $ $ $ 	        	 	4 ! %%##%%%%&&&&
 
&  ( -,,,,,,	 	 !1 0 0 0 0		 	 !    	
 
 #  +/BB*/BB*/BB*/BB	  #Q! !N+K("N+.BBK(OQ+??
 
	 A@@
 
&" " "F
" 
" 
"6) ) )>9 9 9b  ,Q Q QBD D DVq: q: q:x
% % %P   B  8  "  &
 
 
4     r=   