o
    iy                     @   s  d dl mZ d dlmZmZmZmZ d dl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 d dlmZ d dlmZ dZdZG d	d
 d
eZd:dededeeeee e e!f f  de e fddZ"		 			 d;dee dee de!de#deeeee e e!f f  de!de e fddZ$dedeeeedf f fddZ%dedefdd Z&dedefd!d"Z'		d<d#edee deeeee e e!f f  de#def
d$d%Z(dee de e fd&d'Z)dee dee!ef fd(d)Z*dee deeee e e!f f ddfd*d+Z+dee de e fd,d-Z,dee deeee e e!f f ddfd.d/Z-dee deeee e e!f f ddfd0d1Z.dee deeee e e!f f ddfd2d3Z/d4e e d5e e e  de e fd6d7Z0d#edee deeee e e!f f de e fd8d9Z1dS )=    )chain)AnyIterator
NamedTupleOptional)commands)DenominatorNotFoundErrorDoubleSubscriptsErrorDoubleSuperscriptsErrorExtraLeftOrMissingRightErrorInvalidAlignmentErrorInvalidStyleForGenfracErrorInvalidWidthError!LimitsMustFollowMathOperatorErrorMissingEndError"MissingSuperScriptOrSubscriptErrorNoAvailableTokensErrorNumeratorNotFoundError)convert_symbol)tokenizemultiprimesd   c                   @   s   e Zd ZU eed< dZeeedf  ed< dZ	ee ed< dZ
ee ed< dZee ed< dZeeeef  ed< dZee ed	< dS )
NodetokenN.children	delimiter	alignmenttext
attributesmodifier)__name__
__module____qualname__str__annotations__r   r   tupler   r   r   r   r   dictr    r'   r'   >/usr/local/lib/python3.10/dist-packages/latex2mathml/walker.pyr      s   
 r   inlineNdatadisplaymacrosreturnc                 C   s.   t | }|dk}t|||d u ri dS |dS )Nblock)r.   r,   )r   _walk)r*   r+   r,   tokensr.   r'   r'   r(   walk$   s   r1   Fr0   
terminatorlimitr.   depthc           8      C   s  |d u ri n|}g }d}| D 
]+}	d}|	|kr.d }
|t jkr"t| }
|t|	|
d  
n|	t j  kr9|ksDn |	t jkrF|t jkrFt|	t jkrrt| }
tt	| t j|d}t
|dksg|d jt jkritt|	||
d}	n|	t jkrtt	| t j|d}t
|r|d jt jkr|d d }tt j|d}	n|	t jt jfv rz| }W n ty   td	d
}Y nw |	|j  krt jkrt |	|j  krt jkrn n|jd urt
|jdkr|jd jt jkrtd }|jt jt jfv r|j}z| }|jds
tW n ty   tw |r&|jt jt jfv r&t j}|	t jkrZ|jt jkrZ|jd urZtt	| |d|d}tt j|jd g||jd R |jd}n|	t jkr|jt jkr|jd urtt	| |d|d}tt jg |j|R |jd}n|	t jkr|jt jkr|jd ur|jd jt jkrtt	| |d|d}tt j|jd tt j|jd g|R df|jd}n^ztt	| |d|d}W n
 ty   t w |jt j!t j"fv r|j}t|	|g|R |d}n-|	t j#krz| }W n ty   td	d
}Y nw |jt jko+|jd uo+t
|jdk}|r8|jr8|jd nd }|d uoQ|jt j$v pQ|jt j%kpQ|jt&k}|rZ|sZt|r|jd ur|d ur|jt j$v rytt j$|j d
}n|jt j%krtt&dd}ntt&t't(|j)pdd d}tt j|jd |fd}n|jt jkr|jd urtt jg |jtt jd
R |jd}nbtt j|tt jd
fd}nS|	t j*v r tt	| |d|d}|	t j+t j,t j-fv r|d d d }t|	|d}n)|	t j.v s|	t j/r%|	t j0vr%tt	| |d|d}t|	|d}n|	t j1kryz=tt	| |d|dd }|jdr[d|jdd   }t2|}|r[t|d
}|| W qt|	d
}|3||f W q tyx   t|	d
}Y nw |	t j4v rtt	| |d|d}|d jt j5krtt jtt	| t j6|dd d dgtt	| |d|dR }t|	|d}np|	t j7t j8t j9t j:t j;t j<fv rtt	| |d|d}t|	dt=|d id}nG|	t j>t j?t j@t jAfv rRtt	| |d|d}|rt=|d nd}tt	| |d|d}|	t j>kr!|d| d| d}n(|	t j?kr7d| d| d| d}n|	t j@krEdd| i}nd|i}t|	||d}n|	t jBkrg }tCdD ]}tt	| |d|dd }|t=| q^t|	|d |d dd}n|	t jDkrtt	| |d|d}ddd}|d jt j5krtt	| t j6|dd d }|r|d jdkrddi}n|r|d jd krd!di}tt	| |d|d}t|	||d}nG|	t jEkrt| }tt	| |d|d}tt jF|d"|id}n'|	t jGt jHfv r`|	t jHkrd#nd}g }tC|D ]#}tt	| |d|dd } || jr:d	Id$d% | jD nd	 q|	t jHkrO|d |d d&}nd'|d i}t|	|d |d(}n|	t jFkrd"t| i}tt	| ||d}d }!t
|r|d j|kr|d d |d }}!|t|	||d |!r||!  n|	t jJt jKfv rtt	| |d|d q|	t jLkrtt	| |d)|d}"|r|"d n|"d }#|#jr|#jD ]}$||$ qn||# q|	t jMt jNfv r|	t jMkrd*nd+}%|%t| i}tt	| |d|dd }|jO|d,}n|	g t jPQ t jRQ t jSt jTt jUt jVt jWt jXt jt jYt jZt j[t j\t j]t j^t j_t j`t jat jbt jct jdt jeR v rmt|	t| d}n|	t jfkrd-t| i}tt	| |d|d}t|	||d}n|	t jgt jht jit jjt jkt jlt jmt jnfv rd }d }
|	t jikrt| odt| od }
n3|	t jjkrd.di}t| odt| od }
n|	t jkkrd/}
n|	t jlkrd0}
n|	t jmkrd1}
|	t jgt jifv rtt	| |d|dd }&t=|&}'d.|'i}n|	t jht jkt jlt jmfv rd.di}tt	| ||d}(d }!t
|(r?|(d j|kr?|(d d |(d }(}!t
|(dkrZ|	t jkt jlfv rXtt jd2df}(ntpt
|dkru|	t jkt jlfv rstt jd2dg}ntqt
|(dkrtt j|(df}(t
|dkrg ||(R }ntt jt|dg|(R }tt jr|||
d3g}|!d ur||!  n|	t jskrd })tt	| d|d4d }|jt j5krtt	| t j6|dd d })tt	| d|d4d }t
|)dkrtt j|)df})|)r	tt jt|g|)R d}n t|	|fd}n|	t jtkr]tt	| d5|dd d })tt	| d|d4d }t
|)dkr?tt j|)df})|)rNt|	|g|)R d}nt|	|tt jd2dfd}n|	t juv rtt	| ||d}d }!t
|r|d j|kr|d d |d }}!t
|dkr|d jt jkr|d jr|d j}|!d ur|3t|	|d	d6|!g  nt|	|d	d6}nk|	t jvk	rt| odt| od }
tt	| |d|d\}&}*t=|&}'tw|*}+d.|'i}tt	| |d|d}|3t|+d
t|	||
|d7g  n4|	t jxk	rWtt	| |d#|d\},}-}.ty|,\}/}0ty|-\}1}2d8d9i}t|	t|/tt jzt|.j|.j|dfdg|0R dt|1t|.j|.j|dg|2R dfd}n|	t j{k	rtt	| |d|d\}3}$|3j}4|4t jk	r|3jd u 	st
|3jdk	rt||3jd j}4|4} 	st|t|	|$fdd:t(|4 d;d<id}n|	t j~	rt|	| ||d=}nw|	t jk	rt| | q|	t jk	rt| | q|	t jk	rt| | q|	t jk	rt| | q|	|v 
r$|tk	rtd>t d?t|	| |}5|5	sqtt|5| }6|
rtd|t
| nd}7|3t	|6||||d |7d@  nt|	d
}|| |
r:t
||k
r: nq|
s@t|S )ANFT)r   r   )r2   r,   r   )r   r   r   r   r    r         \)r2   r3   r,   )r   r   r   5)r   r   0z\nwidth)r   r   +-)voffsetheightr4   lspace)r   r   r   )r>   rB   0px)rB   r4   br4   trB   	mathcolor   c                 s       | ]}|j V  qd S Nr8   .0cr'   r'   r(   	<genexpr>       z_walk.<locals>.<genexpr>)mathbackgroundzborder-colorrP   )r   r   r      classstyle)r   hreflinethicknessz{}z[]z()r'   )r   r   r   r   )r3   r,   z\ofr   r   r   )r   r   r   r   movablelimitsfalseg"~j?z.3femr,   r.   zMaximum macro expansion depth (z
) exceeded)r2   r.   r,   r4   r3   )r   RIGHTnextappendr   MIDDLEr   LEFTr%   r/   lenr   OPENING_BRACECLOSING_BRACEBRACES	SUBSCRIPTSUPERSCRIPTpop
IndexErrorr	   r   PRIMEr
   LIMITSNOLIMITS
startswithr   	SUMMATIONPRODUCTSUBSUPr   r   r   	OVERBRACE
UNDERBRACE
APOSTROPHEPRIME_UPGRADEQPRIMEMULTIPRIMESr#   intr   COMMANDS_WITH_TWO_PARAMETERSOVERSETSTACKRELUNDERSETCOMMANDS_WITH_ONE_PARAMETERMATHMATH_NON_FONT_COMMANDSNOTr   extendEXTENSIBLE_ARROWSOPENING_BRACKETCLOSING_BRACKETHSKIPHSPACEKERNMKERNMSKIPMSPACE_unwrap_tokenRAISELOWERMOVELEFT	MOVERIGHTRULErangeSMASH	TEXTCOLORCOLORCOLORBOX	FCOLORBOXjoinLEFTROOTUPROOT
MATHCHOICECLASSSTYLE_replaceBIGkeysBIG_OPEN_CLOSECLAPEMPHFBOXHBOXLLAPMBOXRLAPTAGTAGSTARTEXTTEXTBFTEXTITTEXTMD
TEXTNORMALTEXTRMTEXTSFTEXTTTTEXTUPVERBHREFABOVEATOPABOVEWITHDELIMSATOPWITHDELIMSBRACEBRACKCHOOSEOVERlstripr   r   FRACSQRTROOTMATRICESGENFRAC
_get_styleSIDESET_make_subsupVPHANTOMSKEWr   isdigitBEGIN_get_environment_node
NEWCOMMAND_parse_newcommandDEF
_parse_defDECLAREMATHOPERATOR_parse_declare_math_operatorNEWENVIRONMENT_parse_newenvironmentMAX_MACRO_DEPTHRecursionError_expand_macror   itermax)8r0   r2   r3   r.   r,   r4   _macrosgrouphas_available_tokensr   r   r   nodepreviousr   prev_is_super_with_children
prev_primeprev_is_prime_token	new_prime	next_nodenegated_symbolsymboldim_childrendimr   dims_argoptcolor	arg_countargsarg_nodesiblingchoiceschoicechild	attr_namedimension_node	dimensiondenominator
root_nodes
style_noderS   leftrightoperator
left_tokenleft_childrenright_tokenright_children
width_noder>   expanded_tokenschainedremaining_limitr'   r'   r(   r/   *   sn  

,


&
&"
	&

 




" 

,


	





,


&







r/   r   .c                 C   s   | j tjkrt| jd urQt| jdkrQ| jd jd urQdt| jd j  kr,dkrQn dS | jd j tjtjtjfv rQ| jd j }| jd jdd  }||fS dS )Nr   r9   rH   r:   )r7   r'   )	r   r   rc   r   r   r`   rn   rd   re   )r   r   r   r'   r'   r(   r     s"   
"
r   c                 C   s,   | j }| j tjkr| jd ur| jd j }|S Nr   )r   r   rc   r   )r   r   r'   r'   r(   r   
  s   r   c                 C   sD   t | }|dkrtjS |dkrtjS |dkrtjS |dkr tjS t)Nr=   123)r   r   DISPLAYSTYLE	TEXTSTYLESCRIPTSTYLESCRIPTSCRIPTSTYLEr   )r   rS   r'   r'   r(   r     s   r   r   c                 C   s\  |d u ri n|}|  dd }| |d }d| d}||v r|| \}}	|d| dg df\}
}g }t|	D ]	}|t| q9tj d| d}g }d}|D ]}||kr\d	} n|| qR|sftt||}t|
|}g |||}t	t
|||d
}t|dkr|d S ttjt|dS tj d| d}tt	||||d}t|r|d j|krt|d d }d}t|r|d jtjkrt
|}t| |D ]}|jtjkr n|jdvrt||j7 }qt|}n6t|r$|d jd ur$|d jtjkr$tdd |d jD r$ddd |d jD }|dd  }td| ||dS )N{r:   r5   \begin{}\end{r   FTrZ   r6   )r2   r,   r.   r7   lcr|c                 s   s    | ]}|j d v V  qdS )r  Nr8   rK   r'   r'   r(   rN   T  s    z(_get_environment_node.<locals>.<genexpr>c                 s   rI   rJ   r8   rK   r'   r'   r(   rN   V  rO   r;   rV   )indexgetr   r]   _consume_brace_argr   ENDr   _substitute_paramsr/   r   r`   r   rc   r%   r   r   r\   r   r   r   allr   )r   r0   r,   r.   r   start_indexenvironmentenv_key
begin_bodynargsend_bodyr   r   r2   
raw_tokens	found_endrF   begin_expandedend_expandedexpandedresultr   r   children_iterrM   r'   r'   r(   r     sh   



r   c                 C   s   t | }|dkrt| S |gS )Nr  )r\   _read_until_close_brace)r0   r   r'   r'   r(   r  \  s   r  c                 C   sJ   t | }|dkrd|fS d}| D ]}|dkr n||7 }qt|t | fS )N[r   r7   ])r\   ru   )r0   peek	nargs_strrF   r'   r'   r(   _parse_optional_intc  s   
r%  c                 C   sl   t | }d|}t| \}}|dkr"| D ]}|dkr nqt| }|dkr+t| }n|g}||f||< d S )Nr7   r!  r"  r  )r  r   r%  r\   r   )r0   r,   name_tokensnamer  r#  rF   bodyr'   r'   r(   r   o  s   

r   c                 C   sh   d}g }| D ]+}|dkr|d7 }| | q|dkr,|d8 }|dkr&|  S | | q| | q|S )Nr:   r  r
  r   )r]   )r0   r4   contentrF   r'   r'   r(   r     s   r   c                 C   sj   t | }d|}t| \}}|dkrt| }n|g}t | }||f|d| d< |df|d| d< d S )Nr7   r  r	  r
  r   r  )r  r   r%  r   )r0   r,   r&  r'  r  r#  r  r  r'   r'   r(   r     s   

r   c                 C   sd   t | }d}| D ]}|dkrt | d}| rt|t|}q|dkr% nqt| }||f||< d S )Nr   #r7   r  )r\   r   r   ru   r   )r0   r,   r'  r  rF   paramr(  r'   r'   r(   r     s   
r   c                 C   s>   t | }d|}t | }d|}d| dgdf||< d S )Nr7   z\operatorname{r
  r   )r  r   )r0   r,   r&  r'  text_tokensr   r'   r'   r(   r     s
   

r   r(  r   c                 C   s   |st | S g }t| }|D ]=}|dkrFt|d}| r9dt|  kr+t|kr9n n||t|d   q|| |rE|| q|| q|S )Nr*  r7   r:   )listr   r\   r   ru   r`   r~   r]   )r(  r   r  	body_itertok	param_numr'   r'   r(   r    s   
(

r  c                 C   sF   ||  \}}|dkrt |S g }t|D ]	}|t| qt||S r   )r-  r   r]   r  r  )r   r0   r,   r(  r  r   r   r'   r'   r(   r     s   
r   )r)   N)Nr   FNr   )NF)2	itertoolsr   typingr   r   r   r   latex2mathmlr   latex2mathml.exceptionsr   r	   r
   r   r   r   r   r   r   r   r   r   latex2mathml.symbols_parserr   latex2mathml.tokenizerr   rt   r   r   r#   r&   r%   r-  ru   r1   boolr/   r   r   r   r   r  r%  r   r   r   r   r   r  r   r'   r'   r'   r(   <module>   st    88

   "N
>....&: