
    zi(                        d Z ddlZddlZddlmZmZ ej        Zded<   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.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdBdFdDdGdDZe
                    ej                   e
                    ej                   e
                    ej                   i dHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdcdgdcdeddhdidjdkdlZe
                    ej                   e
                    ej                   e
                    ej                   e
                    ej                   e
                    ej                   e
                    e           dmdndoZdpdqdrdsdtdudvdwZdxZdydzd{d{d|d}d}d~d~dddddZdddddddddddddZddddddddZddddddZddddZddddddZdddddddddZ dddddddddddddZ!i i fddddi fe!d         i fe!d         i fi ddife!d         ddife!d         ddifdZ"g dZ#ddddddddddd
Z$ G d d          Z% G d de%          Z& G d de%          Z' G dÄ de%          Z( G dń de(          Z) G dǄ de(          Z* G dɄ de(          Z+ G d˄ de(          Z, G d̈́ de(          Z- G dτ de(          Z. G dф de%          Z/ G dӄ de/          Z0 G dՄ de/          Z1 G dׄ de/          Z2 G dل de/          Z3 G dۄ de%          Z4 G d݄ de4          Z5 G d߄ de4          Z6 G d de4          Z7 G d de5          Z8 G d de6          Z9 G d de7          Z: G d de4          Z; G d de%          Z< G d de%          Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEddZFd ZGd ZHd ZId ZJddZKd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)tex2unichartoplevel_codeu   ℏhbaru   Φ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     k/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/docutils/utils/math/latex2mathml.py	<genexpr>r$   B   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)FFTr?   )bmodpmodmodpodbolditalic	monospacenormalz
sans-serifscriptzbold-italiczdouble-struckfrakturzsans-serif-italiczsans-serif-bold-italic)
boldsymbolmathbfmathitmathttmathrmmathsfmathcalmathbfitmathbbmathfrakmathsfit
mathsfbfitmathscr	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   ▽dotsb   ⋯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   ˙u   ̇)   ¨u   ̈)rx   u   ⃛)`u   ̀)u   ˆu   ̂)u   ˚u   ̊)u   ˜u   ̃)   →u   ⃗)acutebarbrevecheckdotddotdddotgravehatmathringtildevec)u   ⏞皙ɿ)   ←r   )u   ↔r   )_r   )r   r   )^g      )~g333333ӿ)	overbraceoverleftarrowoverleftrightarrowoverlineoverrightarrowwidehat	widetilde)u   ⏟g?)r   g)
underbraceunderleftarrowunderleftrightarrow	underlineunderrightarrowu   −u   ∶    )-r   r   u   ℾu   ℿ   ⅀u   ℽu   ℼ)r   r   r   u   γu   π) r   )())[]){})rd   rd   )rf   rf   )r   r   )matrixsmallmatrixpmatrixbmatrixBmatrixvmatrixVmatrix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                       e Zd ZdZdZ	 dZ	 dZ ed          d ed          d ed          d	d
diZdddZ		 dZ
	 d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZddZd ZddZd ZdS ) mathz8Base class for MathML elements and root of MathML trees.Nr   <z&lt;>z&gt;&z&amp;ia   z&ApplyFunction;truefalse)TFspanc                     g | _         |                     |           i | _        |                                D ]$}||         | j        |                                <   %dS )a  Set up node with `children` and `attributes`.

        Attributes are downcased: Use CLASS to set "class" value.
        >>> math(mn(3), CLASS='test')
        math(mn(3), class='test')
        >>> math(CLASS='test').toprettyxml()
        '<math class="test">
</math>'

        N)childrenextend
attributeskeyslower)selfr   r  keys       r#   __init__zmath.__init__Z  sd     H??$$ 	; 	;C ,6c?DOCIIKK((	; 	;r%   c                    d t          | dg           D             }t          | d          r'|                    t          | j                             t          | t                    r| j        r|                    d           |d | j        	                                D             z  }| j
        j        dd                    |          z  z   S )Nc                 ,    g | ]}t          |          S r    )repr)r!   items     r#   
<listcomp>z!math.__repr__.<locals>.<listcomp>n  s    HHH$4::HHHr%   r   datazswitch=Truec                 &    g | ]\  }}||d|S )N=r    r!   kvs      r#   r  z!math.__repr__.<locals>.<listcomp>s  s2     & & &tq!} QQN$}}r%   z(%s)z, )getattrhasattrappendr	  r  
isinstance
MathSchemaswitchr  items	__class____name__join)r  contents     r#   __repr__zmath.__repr__m  s    HH'$
B*G*GHHH4   	,NN4	??+++dJ'' 	*DK 	*NN=))) & &t/D/D/F/F & & & 	& ~&$))G2D2D)DDDr%   c                 *    t          | j                  S r   )lenr   r  s    r#   __len__zmath.__len__x  s    4=!!!r%   c                     | j         |         S r   r  )r  r  s     r#   __getitem__zmath.__getitem__}  s    s##r%   c                     || j         |<   d S r   r#  )r  r  r
  s      r#   __setitem__zmath.__setitem__  s    #r%   c                 &     | j         j        |i |S r   )r  get)r  argskwargss      r#   r(  zmath.get  s    "t"D3F333r%   c                 D    | j         duot          |           | j         k    S )z;Return boolean indicating whether children may be appended.N)	nchildrenr  r   s    r#   fullz	math.full  s&    d* 0II/	1r%   c                     |                                  rt          d| z            | j                            |           | |_        |                                  r|                                 S | S )zAppend child and return self or first non-full parent.

        If self is full, go up the tree and return first non-full node or
        `None`.
        zNode %s already full!)r-  SyntaxErrorr   r  parentclose)r  childs     r#   r  zmath.append  sh     99;; 	>5<===U###99;; 	 ::<<r%   c                 :    |D ]}|                      |           | S r   )r  )r  r   r2  s      r#   r   zmath.extend  s+     	 	EKKr%   c                 z    | j         }|1|                                r|j         }||                                |S )z7Close element and return first non-full parent or None.)r0  r-  )r  r0  s     r#   r1  z
math.close  s=     V[[]] ]F  V[[]] r%   c                 P    d                     |                                           S )z,Return XML representation of self as string.r   )r  _xmlr   s    r#   toprettyxmlzmath.toprettyxml  s    wwtyy{{###r%   c                 z    |                                  g|                     |          z   d| j        j        z  gz   S )Nz</%s>)xml_starttag	_xml_bodyr  r  r  levels     r#   r6  z	math._xml  sB    ""$$%..''(T^4456 	7r%   c                     d | j                                         D             }dd                    | j        j        g|R           z  S )Nc              3      K   | ]F\  }}||dt          |                              dd                              dd          dV  Gd S )Nz="Truer   Falser   ")strreplacer  s      r#   r$   z$math.xml_starttag.<locals>.<genexpr>  sh       # #QM  aaQ!?!?!G!GQX!Y!Y!Y!YZ!MMM# #r%   z<%s>r   )r  r  r  r  r  )r  attrss     r#   r9  zmath.xml_starttag  sW    # #!_2244# # # $."9!BE!B!BCCCCr%   c                     g }| j         D ]J}|                    dd|dz   z  g           |                    |                    |dz                        K|                    dd|z  g           |S )N
z  r   )r   r   r6  )r  r<  xmlr2  s       r#   r:  zmath._xml_body  s}    ] 	, 	,EJJdeAg./000JJuzz%'**++++

D$,'(((
r%   c                     	 | d         dk    S # t           $ r/ 	 | j                                        cY S # t          $ r Y Y dS w xY ww xY w)z;Return true, if `self` or a parent has ``display='block'``.displayblockF)KeyErrorr0  is_blockAttributeErrorr   s    r#   rL  zmath.is_block  st    		?g-- 	 	 	{++-----!   uuu	s(    
A4A
AAAAr   )r  
__module____qualname____doc__r,  r0  _levelordxml_entities_boolstringshtml_tagnamer  r  r!  r$  r&  r(  r-  r  r   r1  r7  r6  r9  r:  rL  r    r%   r#   r   r   D  sp       BBI-F)F 	C&C&C'#L !11LCL+; ; ;&	E 	E 	E" " "
$ $ $$ $ $4 4 41 1 1
    
  $ $ $7 7 7 7
D D D       r%   r   c                       e Zd ZdS )mtableNr  rO  rP  r    r%   r#   rX  rX              r%   rX  c                   "     e Zd ZdZ fdZ xZS )mrowz*Group sub-expressions as a horizontal row.c                    | j         }t          |t                    rU|j        dk    rJt	          |j                  |_        | j        |_        | j        D ]	}||_         
|                                S t	          |           dk    re	 | j        d         |j        |j                            |           <   || j        d         _         n$# t          t          f$ r | j        d         cY S w xY wt                                                      S )zClose element and return first non-full parent or None.

        Remove <mrow>, if it is single child and the parent infers an mrow
        or if it has only one child element.
        r   r   )r0  r  MathRowSchemar,  r  r   r1  indexrM  
ValueErrorsuper)r  r0  r2  r  s      r#   r1  z
mrow.close  s     fm,, 	"1AQ1F1F"6?33F"mFO & &%<<>>!t99>>(?C}Q?O 5 5d ; ;<*0a ''"J/ ( ( (}Q''''(ww}}s   ?C C('C()r  rO  rP  rQ  r1  __classcell__r  s   @r#   r\  r\    s>        44        r%   r\  c                       e Zd ZdZdS )r^  zCBase class for elements treating content as a single inferred mrow.N)r  rO  rP  rQ  r    r%   r#   r^  r^  
  s        MMMMr%   r^  c                       e Zd ZdS )mtrNrY  r    r%   r#   rf  rf    rZ  r%   rf  c                       e Zd ZdS )mtdNrY  r    r%   r#   rh  rh    rZ  r%   rh  c                       e Zd ZdZdS )mencloser   Nr  rO  rP  r,  r    r%   r#   rj  rj            IIIr%   rj  c                       e Zd ZdZdS )mphantomr   Nrk  r    r%   r#   rn  rn    rl  r%   rn  c                       e Zd ZdZdS )msqrtr   Nrk  r    r%   r#   rp  rp    rl  r%   rp  c                       e Zd ZdZdS )mstyler   Nrk  r    r%   r#   rr  rr    rl  r%   rr  c                   .     e Zd ZdZdZ fdZddZ xZS )	MathTokenzbToken Element: contains textual data instead of children.

    Base class for mo, mi, and mn.
    r   c                 H    || _          t                      j        di | d S )Nr    )r  ra  r  )r  r  r  r  s      r#   r  zMathToken.__init__)  s-    	&&:&&&&&r%   c                 \    t          | j                                      | j                  gS r   )rB  r  	translaterT  r;  s     r#   r:  zMathToken._xml_body-  s$    DI(():;;<<r%   rN  )r  rO  rP  rQ  r,  r  r:  rb  rc  s   @r#   rt  rt  "  s]          I' ' ' ' '= = = = = = = =r%   rt  c                       e Zd ZdS )mtextNrY  r    r%   r#   ry  ry  1  rZ  r%   ry  c                       e Zd ZdS )miNrY  r    r%   r#   r{  r{  2  rZ  r%   r{  c                       e Zd ZdS )moNrY  r    r%   r#   r}  r}  3  rZ  r%   r}  c                       e Zd ZdS )mnNrY  r    r%   r#   r  r  4  rZ  r%   r  c                   ,     e Zd ZdZdZd Z fdZ xZS )r  zBase class for schemata expecting 2 or more children.

    The special attribute `switch` indicates that the last two child
    elements are in reversed order and must be switched before XML-export.
    r   c                 f    |                     dd          | _        t          j        | g|R i | d S )Nr  F)popr  r   r  )r  r   r*  s      r#   r  zMathSchema.__init__E  s=    jj511d0X00000000r%   c                     t                                          |          }| j        rF|                                 r2| j        d         | j        d         c| j        d<   | j        d<   d| _        |S )NF)ra  r  r  r-  r   )r  r2  current_noder  s      r#   r  zMathSchema.appendI  sg    ww~~e,,; 	 499;; 	 37=3DdmTVFW0DM"t}R0DKr%   )r  rO  rP  rQ  r,  r  r  rb  rc  s   @r#   r  r  <  sX          I1 1 1        r%   r  c                       e Zd ZdS )msubNrY  r    r%   r#   r  r  R  rZ  r%   r  c                       e Zd ZdS )msupNrY  r    r%   r#   r  r  S  rZ  r%   r  c                       e Zd ZdZdS )msubsupr   Nrk  r    r%   r#   r  r  V  rl  r%   r  c                       e Zd ZdS )munderNrY  r    r%   r#   r  r  a  rZ  r%   r  c                       e Zd ZdS )moverNrY  r    r%   r#   r  r  b  rZ  r%   r  c                       e Zd ZdS )
munderoverNrY  r    r%   r#   r  r  s  rZ  r%   r  c                       e Zd ZdZdS )mrootr   Nrk  r    r%   r#   r  r  v  rl  r%   r  c                       e Zd ZdZdS )mfracr   Nrk  r    r%   r#   r  r  z  rl  r%   r  c                       e Zd ZdZdS )mspacer   Nrk  r    r%   r#   r  r  ~  rl  r%   r  c                     t          j        d|           }|t          j        d|           }|                    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]+) *(.*)Nz(.?)(.*)r   r   rematchgroupstringms     r#   tex_cmdnamer    sK     	%v..AyH[&))771::qwwqzz!!r%   c                     t          j        d|           }|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    sD     	(&11Ay6z771::qwwqzz!!r%   c                     t          j        d| t           j                  }|                    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  s         r#   	tex_tokenr    sZ     	  bj		* 	*A
 !"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   rX   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  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  r)   r  s      r#   tex_token_or_groupr    sA     v&&NC
czz"6==??33Y	>r%   c                    t          j        d| t           j                  }||                     d          sd| fS 	 |                    d          |                    d          fS # t
          $ r t          d| z            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  rM  r/  r  s     r#   
tex_optargr  &  s     	  bj	* 	*A 	y**3//y6zRwwx  !''+"6"666 R R RG&PQQQRs   )A' 'Bc                 B   d                     |                                          }| }t          |          dk    ra|d         |dd         }}|dk    r-|dk    r(t          |          \  }}t	          || |          \  } }n|dv rt          | |          } n|dk    r't                      }|                     |           |} n|dk    r|                                 } n|d	k    r9t                      }|                                                     |           |} nh|
                                r$|                     t          |                    } n0|                                r8t          |          \  }}|                     t          ||z                       } n|t          v ryi }|d
k    rE| j        r>| j        d         }t#          |dd
          dv s|                    d          dk    rd|d<   |                     t'          t          |         fi |          } nb|dv r%|                     t'          |d                    } n9|dv r#|                     t'          |                    } nt)          d|z            t          |          dk    a|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   r   NrX   _^r   r   r   r   r  r  z([=classmathopenprefixformz/()[]|Fstretchyz+*=<>,.!?`';@zUnsupported character: "%s")r  splitr  r  
handle_cmdhandle_script_or_limitr\  r  r1  rh  isalphar{  isdigitr  r  anomalous_charsr   r  r(  r}  r/  )	noder  treer  cmdnamenew_nodenumberr  previous_nodes	            r#   parse_latex_mathr  E  s    XXfllnn%%FD
f++//1Ivabbz68899)&11OGV%gtV<<LD&&$YY)$22DD#XXvvHKK!!!DD#XX::<<DD#XXuuHJJLL)))DDYY[[ 	A;;r!uu%%DDYY[[ 	A'//NFF;;r!F(||,,DD/!! JCxxDMx $b 1M63775@@$((11Z??)1Jv&;;r/!"4CC
CCDDDD(]];;r!e44455DD/!!;;r!uu%%DD;a?@@@S f++//T Kr%   c                 0   | t           v rAt          t           |                    }| t          v rd|d<   |                    |          }||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 | t          v r| dk    rddi}	ndt          |          i}	| dk    rd|	d<   t          |          \  }}
|                    d          r#t                               |dd          |          }| d!k    rt                               ||          }|                                s|d"k    r$|                    t          |fi |	          }||
fS t%          dmi |	}|                    |           ||f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d0|	d1<   n	| d2v rd3|	d<   |                    t          t*          |          fi |	          }||fS | t.          v r i }t0          t.          |                   }t          |          \  }}|d4vrF	 t2          |                    d                   }n$# t6          $ r t9          d5| d6|d7          w xY w|r||d8<   ||d9<   d0|d:<   | d;k    s|                     d<          r%t=                      }|                    |           |}|d=k    r |                    t          |fi |           | d>k    s|                     d?          r|                                }||fS | d@k    rtA          |          \  }}|dAk    r|dB|z   fS |                    d          r7	 t*          |dd                   }n # t6          $ r t9          dC|z            w xY wtC          j"        dD|dEz             }|                    t          |                    }||fS | dFv rt          |          \  }}|#                    dG          }tI          |          D ]W\  }}|dHz  dk    r9tK          j&        dIdJ|          }|                    tO          |                    }Gt          ||           X||fS | tP          v r5|                    t          dKtP          |          z                      }||fS | dLv rntS          |          \  }}|                    dM          rdNtU          |d dO                   dPz  z  }|                    t          dK|z                      }||fS | dQk    r'tW                      }|                    |           ||fS | dRk    r)tY          dST          }|                    |           ||fS | dUk    rt[          |          \  }}|rDt=                      }t]          |d0V          }t          ||           |                                 nt_                      }|                    |           ||fS | t`          v rt`          |          \  }}| dWk    rHt[          |          \  }}d;d>dX}||v r-|1                                }||         |dY<   dZ||         z   |d<   te          dmi |x}}|                     d[          r4t=          t          d          |t          d          d[\          }d]|_3        |rt%          |fi |}|                    |           ||fS | dk    rZti                      }tk          |          }|                                                                                    |           ||fS | tl          v rgt          t          tl          |          d         d
          d0V          }| d^k    rd
|j7        d         d_<   | |_8        |                    |           ||fS | tr          v rRt          t          tr          |          d         d0          d0d
`          }| |_8        |                    |           ||fS | dak    r)t          d0V          }|                    |           ||fS | tt          v rOt          t          tt          |          d                   d0V          }| |_8        |                    |           ||fS | dbk    r)t          d0V          }|                    |           ||fS | dcv rt[          |          \  }}t          t*          dd| dd          z                      }|ratw          |          }t          t=                      |          }ty          |          dk    r|j7        d         }|                    |           nt          |          }|                    |           ||fS | tz          v rt%          dmi tz          |          }d |_3        t}          |t<                    rLty          |          dk    r9||j?        j7        |j?        j7        @                    |          <   |j?        |_?        n8|jA        jB        dek    r|                    |           nt9          df| z            ||fS |                     dg          r.tA          |          \  }}
|dhv r|
}t          ||| i          }||fS | djk    rt          ||          S | dkk    rt          ||          S t9          dl| z             )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)')

    zcapital-greekr  r   rG   )mathvariantr   r   r      ¯F)accentr   r   r   r   r   )r   r   u   ⁡rB   )lspacerspacer   )widthr   r  0.333emr   rJ   r  rV   rX   r   NrR   r   colonr   postfix0z0.28em)r  r  r  idotsintz\int\dotsi\intzfont-weight: bold)stylez75%)mathsizez _^Tmovablelimits)rc   re   r  z()[]/|.zUnsupported "\z" delimiter "z"!maxsizeminsize	symmetricr   l.r   rnotr   z{\not z\not: Cannot negate: "%s"!NFCu   ̸)textmboxtextrm$r   z(^ | $)r   z%s)hspacer  muz%semr     phantomboxedbox)notationsqrt)r  r   )r  r  numalignz	numalign-r   )r   r   r   r  )r  r  oversetunderset)
xleftarrowxrightarrowlongr   z3Declaration "\%s" must be first command in a group.limitsr  )r  beginendzUnknown LaTeX command: \r    )Flettersr{  greek_capitalsr  	functionsr  r  r}  r  modulo_functionsrL  r  r  math_alphabetsr  r(  rR   r  rr  thick_operatorssmall_operators	operatorsr  bigdelimitersdelimiter_sizesstretchablesr  rK  r/  endswithr\  r1  r  unicodedata	normalizer  	enumerater  subry  spacesr  floatrn  rj  r  r  rp  	fractionscopyr  r,  rh  rf  accentsr   tex_cmdoverunderr  r  layout_stylesr  r0  r_  r  r  r  begin_environmentend_environment)r"   r  r  r  r)   binarynamedparenthesespaddingr  r  r  delimiter_attributessize	delimiterrowpartsipartradix	indexnode
style_atts	frac_attsr  optargsr   entry	subscriptbasesub_nodes                                 r#   r  r    s   & wgdm$$>!! !0HW{{8$$V|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|~<!<0JJ')=>J9"+Jw+F33Y>>$ 	, ++c!""gs++C8 **S#&&C;;== 	#C8OO;;r#444455D?"$$$$Ef} 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%%7()9)9$)?)?@		 7 7 7!k%)TT999#6 7 7 77  	5.2 +.2 +04 -6>>T]]3//>&&CKKDKK9==(<==>>>7??dmmC00?::<<DV|u}}''V#::V+++>>$ 	EEABB( E E E!"?"CDDDE#E3x<88{{2c77##V| )))(00V		# '' 	- 	-GAt1uzzvi488{{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"+D/Y7??'//NFF"11G  %NN,,	(/	*%%076?%B	'",,),,,4==!! 	#BsGGXr#wwgFFFH!"H 	6h55*55HHV|t||u::

##H---f}wGDM!,u===dKKK5==-2Ha *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}}!!#,Q/OOH%%%%T{{HH}00M$/00!dD!! 	4c$ii1nnEMDK !5!;!;D!A!AB"kHOO^$..KK!!!! ,.23 4 4 4}}X "6**Y$;;F)$DAAADV| w v...u}}tV,,,
1D8
9
99s    T" "!U+Y Yr   c                    | j                                         }|dk    rd|d<   n#|dk    st          |dd          t          v rd|d<   |dk    rt	          |t
                    rt          |j         ddi}nt	          |t                    rt          |j         ddi}n|d	v s|dk    r&|	                    dd
          rt          |          }nt          |          }n|dk    rt	          |t                    rt          |j          }nct	          |t                    rt          |j          }n?|d	v s|dk    r&|	                    dd
          rt          |          }nt          |          }|                     |           |S )z)Append script or limit element to `node`.r  Fr  r  r   Tr   r  )r  r  Nr   )r   r  r  r  r  r  r  r  r  r(  r  r  r  )r  r  r  r2  r  s        r#   r  r    s   ME!&o
O
#
#UFB''=88!%oCxxeU## 	#!5>?$??HHt$$ 	#<t<<HH3332%))OT"B"Be}}HHE{{HH	
ceV$$ 	#!5>2HHt$$ 	#/HH3332%))OT"B"BU||HHE{{HKKOr%   c                 0   t          |          \  }}|t          v rt          |         d         }i }|r]t          t          |                    }|dk    r#t          t          |d                    }d|d<   |                     |           |} n7|dk    r1d|d	<   d
|d<   t          d          }|                     |           |} t                      }|                     t          t          |          fi |           |} nt          d          | |fS )Nr   r   z0.17em)r  r   columnalignr   z0.02em
rowspacingr  columnspacing1)r   Environment not supported!)
r  matricesr\  r}  r  rr  rh  rX  rf  r/  )r  r  r"   left_delimiterr  wrapperr$  s          r#   r  r    s-   V$$LD&x!$*
 	2n--..Gwr.BBBCC,2
=)KK   DD]""'/J|$*3J'---GKK   D F3u::44445556777<r%   c                    t          |          \  }}|t          v r|                                                                                                 } t          |         d         }|r7|                     t	          |                    } |                                 } n*|dk    r|                                 } nt          d          | |fS )Nr   r   r.  )r  r/  r1  r  r}  r/  )r  r  r"   right_delimiters       r#   r  r  6  s    V$$LD&xzz||!!##))++"4.+ 	 ;;r/2233D::<<DDW__::<<D6777<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 r   z\&Ncountr!   r  s     r#   r$   z'tex_equation_columns.<locals>.<genexpr>H  =      AASsyy~~		% 0 00AAAAAAr%   r   r   r   )r~   int)rowstabss     r#   tex_equation_columnsr>  G  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 )NalignT)r  r   c              3   l   K   | ]/}|                     d           |                     d          z
  V  0dS r6  r7  r9  s     r#   r$   z#align_attributes.<locals>.<genexpr>[  r:  r%   r   r   r  r   r   r   r*  r,  )r~   r  )r<  attsr=  alignsspacings        r#   align_attributesrE  X  s     " "DAADAAAAAD 96"T),%!hhvgtAvg77] #$ 8 8_Kr%   c           	      v   t          d          }|}|sd|d<   t          |                               d          }t          |          dk    rHt	                      }|                    t          t          |          fi t          |                     t          ||            |
                                S )zoReturn string with MathML code corresponding to `tex_math`.

    Set `inline` to False for displayed math.
    z"http://www.w3.org/1998/Math/MathML)xmlnsrJ  rI  z\\r   )r   r   r  r  rh  r  rX  rf  rE  r  r7  )tex_mathinline	math_treer  r<  s        r#   
tex2mathmlrK  m  s     ?@@@ID ?&	)X&&,,U33t99q==55DVCII > >&6t&<&<> > ? ? ?T8$$$  """r%   )r   )T)LrQ  r  r  docutils.utils.mathr   r   	mathalphar  r  r  updater  r  r  	mathfencer  	mathcloser   mathbinmathrelmathord	mathpunctmathopr  r  r  r	  r  r  r  r  rR   r/  r  r  r  r  r   rX  r\  r^  rf  rh  rj  rn  rp  rr  rt  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r>  rE  rK  r    r%   r#   <module>rV     sL
     
			     : : : : : : : : 

 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	  2h $a " "#%'^,b1[)2.OQ'(^,.BC[)OQ+?@
 
	 A@@
 
 @ @ @ @ @ @ @ @|     T       4   >N N N N ND N N N     -        -       }       }       M       ]   = = = = = = = =     I                                  ,     :        :       j        T        D   "             J       D       T   " " ":
" 
" 
"6) ) )>9 9 9b  ,R R R>7 7 7f{: {: {:B   B  8  "  "	 	 	*# # # # # #r%   