
    giZ                     0   d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d	d
ddZdZ ej        d          Z G d dej                  Z	 	 	 d:dedededee
         def
dZ	 	 	 d:dedededee
         de
f
dZde
defdZd;dee         de
dedee         ddf
dZ d e
d!e!e"         ddfd"Z#dee         d#ee         d$e$de%ee         e$f         fd%Z&d&e
d#ee         de
fd'Z'd;dee         de
d(ee(eee         f                  ddfd)Z)d;dee         de%ee         ee         f         fd*Z*d+edee%eef                  fd,Z+d;d-ede
d(ee(eee         f                  ddfd.Z,dede
ddfd/Z-d;dede
d0ee(eef                  ddfd1Z.d-ede
ddfd2Z/d-ede
ddfd3Z0d;d-ede
d(ee(eee         f                  ddfd4Z1d5e
d6ed(ee(eee         f                  ddfd7Z2d<d8Z3e4d9k    r e3             dS dS )=    N)OrderedDict)IterableIteratorOptional)Element
SubElementtostring)unescape)commands)convert_symbol)Nodewalkrightleftcenter)rlc))+-*/()=,?[]|\|!\{\}><.z
\bigotimesz
\centerdotz\dotsz\dotscz\dotsoz\gtz\ldotpz\ltz\lvertz\lVertz
\lvertneqqz\ngeqqz\omicronz\rvertz\rVertz\Sz\smallfrown	\smallintz\smallsmile\surdz\varsubsetneqqz\varsupsetneqqz\\\$|\$|\\?[^\\$]+c                   J    e Zd Z ej                    Z ej                    ZdS )ModeN)__name__
__module____qualname__enumautoTEXTMATH     n/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/latex2mathml/converter.pyr+   r+   <   s(        49;;D49;;DDDr4   r+   "http://www.w3.org/1998/Math/MathMLinlinelatexxmlnsdisplayparentreturnc                 D    t          | |||          }t          |          S N)convert_to_element_convert)r8   r9   r:   r;   maths        r5   convertrB   A   s#     eUGV<<DD>>r4   c                     d}||d}|t          ||          nt          |||          }t          |d          }t          t          t	          | |                    |           |S )NrA   )r9   r:   mrow)r   r   _convert_groupiterr   )r8   r9   r:   r;   tagattribrA   rows           r5   r?   r?   K   sp     C11F#)>73z&#v7V7VD
T6
"
"C4UG,,--s333Kr4   treec                 >    t          t          | d                    S )Nunicode)encoding)r
   r	   )rJ   s    r5   r@   r@   Y   s    HTI666777r4   nodescommand	alignmentc                 8   d }d }d}d }d}d}	g }
g }| D ]9}|t          |d          }|$t          |||          \  }}t          ||          }|j        t          j        k    rt          t          |g          |           o|j        dk    rjt          ||           g }t          |||          \  }}t          ||          }|t          j	        t          j
        fv r|dz  dk    rt          |d           |j        t          j        t          j        fv rWt          ||           g }|	dz  }	||k    r|}d}t          |||          \  }}t          |d          }t          ||          }Z|j        t          j        k    r|
                    d           |j        t          j        k    r|
                    d           |j        t          j        k    r|                    d	           |	t#          |
          k    r|
                    d
           |                    d           t          t          |g          |           ;||k    r|}t%          d |
D                       r)|                    dd                    |
                     |*|(t#          |          dk    r|                    |           |rR|t          j
        k    rDd}|t#          |          z  }|                    dd                    ||z                       d S d S d S )Nr   mtr&   mi   soliddashedTnoneFc              3   "   K   | ]
}|d k    V  dS )rW   Nr3   ).0r   s     r5   	<genexpr>z"_convert_matrix.<locals>.<genexpr>   s&      
+
+A1<
+
+
+
+
+
+r4   rowlines )0em2emcolumnspacing)r   _get_column_alignment_make_matrix_celltokenr   BRACESrE   rF   _set_cell_alignmentSPLITALIGNDOUBLEBACKSLASHCARRIAGE_RETURNHLINEappend	HDASHLINEHFILlenanysetjoinremove)rN   r;   rO   rP   rI   cell	col_indexcol_alignmentmax_col_size	row_index	row_lineshfil_indexesnodespacing
multipliers                  r5   _convert_matrixr~   ]   sG   
CDIMLII!L %/ %/;VU++C<'<YW`'a'a$M9$S-88D:((4<<....Z3l333L'<YW`'a'a$M9$S-88D8>8>:::y1}PQ?Q?Q4&&&ZH4h6NOOOl333LNI<''(I'<YW`'a'a$M9VU++C$S-88DDZ8>))W%%%%Z8---X&&&&Z8=((%%%%3y>>))  (((&&&4<<....< 

+
+
+
+
+++ 4

:sxx	22333
4+D		Qc D8>11 !S\\1


?CHHWz-A$B$BCCCCCD D11r4   rt   rz   c                     | Zt          |          rMt          |          dk    r<|d         r|d         sd| j        d<   d S |d         s|d         rd| j        d<   d S d S d S d S d S d S )NrV   r   r   columnalignr   )rp   ro   rH   )rt   rz   s     r5   rf   rf      s    C--#l2C2Ca2G2G? 	0<#3 	0)0DK&&&a 	0\"%5 	0)/DK&&&	 2G2G	0 	0 	0 	0r4   column_alignmentcolumn_indexc                     | rg	 t                               | |                   }n@# t          $ r3 t                               | |t          |           z                     }Y nw xY w|dz  }||fS )NrV   )COLUMN_ALIGNMENT_MAPget
IndexErrorro   )rP   r   r   s      r5   rb   rb      s      	b377	,8OPP 	b 	b 	b377	,QTU^Q_Q_B_8`aa	b\))s    % :A"!A"rI   c                 J    |rt          | d|          S t          | d          S )Nmtd)r   )r   )rI   r   s     r5   rc   rc      s1     D#u2BCCCCc5!!!r4   fontc                    |}| D ]}|j         }|g t          j        t          j        R v r:t	          |t          d | D                                 }t          |||           a|t          j        v s|t          j        t          j	        fv rt          |||           |t          j
        v r;|j        4t          t          |j                  |t          j
        |                    |                    t          j                  r,|j        %t          t          |j                  ||           /|t          j                                        v r!t          j                            |          }p|j        t'          |||           |j        >|j        pi }t+          |d|          }t          t          |j                  ||           d S )Nc              3      K   | ]}|V  d S r>   r3   )r[   ns     r5   r\   z!_convert_group.<locals>.<genexpr>   s"      3E3E!A3E3E3E3E3E3Er4   rd   childrenrD   rH   )rd   r   MSTYLE_SIZESSTYLESr   tuple_convert_commandCONVERSION_MAPMODPMODLOCAL_FONTSr   rE   rF   
startswithr2   GLOBAL_FONTSkeysr   _convert_symbol
attributesr   )rN   r;   r   _fontr{   rd   r   _rows           r5   rE   rE      s   E = =
>h+>ho>>>>ee3E3Eu3E3E3E.E.EFFFDT651111h---8<:W1W1WT651111h***t}/H4..8LU8STTTThm,, 		=1J4..>>>>h+002222)--e44EE]"D&%0000]&.BJffZ@@@D4..e<<<%= =r4   c                    | dS d| vr| d fS d}g }| D ][}|dk    r|                     d           n||z  }t          |          t          |          z
  dk    r|                     d           \|d                    |          fS )N)NNr     rW   rT   rY   r^   )rl   ro   rr   )rP   
_alignmentcolumn_linesr   s       r5   _get_alignment_and_column_linesr      s    z
)$JL ( (88((((!OJz??S...!33'''sxx----r4   textc              #     K   d}d}t                               |           D ]1}|dk    r$||rt          j        nt          j        fV  d}| },||z  }2t          |          r ||rt          j        nt          j        fV  d S d S )Nr   F$)MATH_MODE_PATTERNfindallr+   r2   r1   ro   )r   stringis_math_modematchs       r5   separate_by_moder      s      FL"**400  C<<|B$))BBBBF++LLeOFF
6{{ ?<>diiTY>>>>>>? ?r4   r{   c                 |   | j         }| j        }|t          j        t          j        fv rt          |dd          }nW|t          j        k    rbt          |d          }t          |dt          g d                    }d                    t          t          j
                            |_        n|t          j        t          j        fv rt          |ddd	
          }n|t          j        k    rt          |dd	d	          }n|t          j        k    rt          |dd	          }np|t          j        t          j        t          j        t          j        fv rt          |ddd	
          }n,|t          j        t          j        fv rt          |dd           t-          j        t          j        |                   \  }}| j        /| j         t          j        k    r|                    | j                   |t          j        k    rt          |d          }t;          | |           t=          | j                  \  }}	|	r|	|d<   |t          j         k    r*| j!        #| j!        d         j         t          j"        k    rd}n|t          j#        k    r|t          j$        t          j%        fv rd}n|t          j&        k    r|t          j$        t          j'        fv rd}ns|t          j         k    r(|t          j$        t          j%        t          j'        fv rd}n;|t          j(        t          j)        fv r!| j!        tU          | j!                  dk    rd}t          |||          }
|t          j+        v r|dd          |
_        np|t          j        t          j        fv rd|
_        t          |dd           n;|t          j,        k    r	d|
_        n"|t          j(        t          j)        fv rTt          |
dd	          }t          |d          }|t          j(        k    r	d|_        n|t          j)        k    rd|_        n| j        I|t          j-        k    r.d                    t          | j                            |
_        nn|t          j        k    r|
}t]          | j                  D ]\  }}|t^          j0        k    rB|t          |||          }|1                    dd          |_        te          |d|           d }Wt          |d          }tg          ti          tk          |                    |           n|t          j6        k    rt          |
d          }
| j        1                    dd          |
_        te          |
d|           nc| j7        \|t          j8        t          j9        fvrB| j7        dk    r7t          | j7                  }|| j7        nd                    |          |
_        | j!        |
}|t          j        t          j        t          j        fv r|}|t          j:        v rV|t          j        k    rd }n|t          j;        t          j<        fv rd!}t{          ti          | j!                  |||"           n!|t          j>        k    r>| j!        D ]4}t          |ddd	
          }tg          ti          |g          ||           5n|t          j?        k    rt          d#t          d$d%d&i'          fd(d	i)          f | j!        \  }}tg          ti          |g          ||           t          |dd	          }t          |dd&           tg          ti          |g          ||           n.|t          j        k    r| j!        d         }t          |j         t          t          jA        g |j!        t          t          jB        | j        *          R +          f+          }tg          ti          |g          ||           n|t          j(        t          j)        fv r\| j!        D ]S}t          |dt          g d,                    }tg          ti          |g          ||           t          |dd-.           Tn#tg          ti          | j!                  ||           t          ||
           t          | |           d S )/Nmstyle1)scriptlevelrD   mo))stretchytrue)fencer   )formprefix&#x{};r   0displaystyler   mpadded)heightdepthwidthfalsemspace1emcolumnlinesr   
munderovermovermunderrT   rV   modz0.333emz&#x2190;z&#x2192;r^   	&#x000A0;mtextr'   r   rl)rP   z\stylez\mspacer   z-0.167em)r   r   )r   r   )rd   r   r   ))r   z+0.833em)lspacez0.556em)voffset-.2em)r   r   z.25em)r   )Erd   modifierr   SUBSTACKSMALLMATRIXr   CASESr   formatr   LBRACEr   DBINOMDFRACHPHANTOMVPHANTOMTBINOMHBOXMBOXTFRACr   r   copydeepcopyr   r   SKEWupdateLEFT_append_prefix_elementr   rP   SUBSUPr   GCDSUPERSCRIPTLIMITS	OVERBRACE	SUBSCRIPT
UNDERBRACE
XLEFTARROWXRIGHTARROWro   LIMITBMODMIDDLEr   r+   r1   replace	_set_fontrE   rF   r   FBOX	delimiterFRACGENFRACMATRICESrg   rh   r~   CFRACSIDESETr   re   MKERN_add_diacritic_append_postfix_element)r{   r;   r   rO   r   lbracerG   r   rP   r   elementstylearrowr   r   moder   symbol_parentchildpr   r   fillnew_nodepaddeds                             r5   r   r      sZ   jG}H8$h&:;;;FH#>>>	HN	"	"FF++FD+6s6s6s*t*tuuoonX_&E&EFF	X_hn5	5	5FH6sSSS	H%	%	%FIcEEE	H%	%	%FIS999	X_hmX]HNS	S	SFH7PSTTT	X\8=1	1	16851111mH$;G$DEEOC"tzX]'B'B$/***(-FF++4(((=dnMMI| 1$0
=!(/!!dm&?DMRSDTDZ^f^jDjDj	H(	(	(X(/8K]9^-^-^	H&	&	&8I\7]+]+]	HO	#	#X_hFXZbZm4n(n(nH')=>>>4=C\adeierasaswxaxaxj11G(.  qrr{	X\8=1	1	168955555	HM	!	!	X((*>?	?	?7H#>>>5$''h)))#EJJ,,,#EJ		ho%%#??>$)+D+DEEGLL%%'.E.ty99 	; 	;
d49$$} *63
 C C!%c;!?!?EJeWd333 EE%ff55D"4T

#3#3T::::	; (-''$Wg669,,S+>>GLgw----		#xGW7X(X(X>S  #DN33F-3^4>>QWAXAXGL} x}hlHMBBBGh'''(.((		X^X^<<< 	D//'YWWWWW&& 7 7wwTWXXXtUG}}a66667 (((zw
6KLLLN)3/    
 -KD%4<<$777gxSAAADtXZ88884=='48888%%M!$Ek&o!j5>!j4hnY]Yh3i3i3i!j!j    H 4
++Wd;;;;,h.BCCC 	< 	<#qqq   tUG}}fd;;;687;;;;;	< 4..>>>7G$$$D&)))))r4   c                     | t           j        v rAt          j        t           j        |                    \  }}t	          |d|          }||_        d S d S )Nr   )r   
DIACRITICSr   r   r   r   )rO   r;   r   r   r   s        r5   r   r     sP    (%%%=)<W)EFFjVT:66 &%r4   r   c                     t          |           }t          |d||ni           }|rd                    |          n| |_        d S )Nr   r   )r   r   r   r   )rO   r;   r   
code_pointr   s        r5   _convert_and_append_commandr    sJ    ((J	FD
0F**B	O	OB-7Dhooj)))WBGGGr4   c                    d}|j                             d          dk    s| j        t          j        k    rd}| j        dt          j        fv rt          d|           d S | j        t          j        t          j        t          j        fv rt          d|||d           d S | j        dk    rt          d	|           d S | j        d
k    rt          d|           d S | j        dk    rt          d|           d S | j        dk    rt          d|           d S | j        t          j	        t          j
        fv r9| j        4| j        d         dk    r%t          | j        d         |||d           d S d S d S d S )N2.047emr   r   1.2em\pmatrixz\lparenminsizemaxsize\bmatrixz\lbrack\Bmatrixz\lbrace\vmatrix\vert\Vmatrix\Vertr   r'   )rH   r   rd   r   r   r   r  BINOMr   r   r   r   r{   r;   sizes      r5   r   r     s   D}((G33tzX_7T7Tzk8=111#J77777	I	I	I#JDUY8Z8Z[[[[[	{	"	"#J77777	{	"	"#J77777	{	"	"#Hf55555	{	"	"#Hf55555	x'78	8	8T^=W\`\jkl\mqt\t\t#DN1$5v4\`?a?abbbbb 
9	8=W=W\t\tr4   c                 Z   d}|j                             d          dk    s| j        t          j        k    rd}| j        dt          j        fv rt          d|           d S | j        t          j        t          j        t          j        fv rt          d|||d           d S | j        dk    rt          d	|           d S | j        d
k    rt          d|           d S | j        dk    rt          d|           d S | j        dk    rt          d|           d S | j        t          j	        t          j
        fv r9| j        2| j        d         dk    r!t          | j        d         |||d           d S | j        t          j        k    r)| j        $t          |dd| j        d         z              d S d S d S )Nr  r   r   r  r  z\rparenr  r  z\rbrackr  z\rbracer  r  r  r  rV   r'   r   r   r   r   )rH   r   rd   r   r   r   r  r  r   r   r   r   r   r   r   r  s      r5   r   r     s   D}((G33tzX_7T7Tzk8=111#J77777	I	I	I#JDUY8Z8Z[[[[[	{	"	"#J77777	{	"	"#J77777	{	"	"#Hf55555	{	"	"#Hf55555	x'78	8	8T^=W\`\jkl\mqt\t\t#DN1$5v4\`?a?abbbbb	x}	$	$)D6831I+IJJJJJJ 
%	$)D)Dr4   c           
      b   | j         }| j        pi }t          |          }t          j        d|          r1t          |d|          }||_        t          ||j        |           d S |t          v rt          |d|          }||nd
                    |          |_        |dk    r
d|j        d<   |d	k    r
d|j        d
<   |dv rd|j        d<   t          |d|           d S t          ||j        |           d S |r~t          |d          t          t          dd          t          dd          dz             v sEt          |d          t          t          dd          t          dd          dz             v s|dk    rDt          |d|          }d
                    |          |_        t          ||j        |           d S |ddt          j        t          j        fv r,t          |d|          }d|_        t          |d|           d S |t          j        k    r+t          |dd          }t          |d          }d|_        d S |t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        fv rt          |dddi|          }t          j        dt          j        dt          j        d t          j        d!t          j        d"i}|                    ||dd                    |_        t          ||j        |           d S |t          j        k    r0t          |d#|          }	d$D ]}
t          |	d          }|
|_        d S |t          j        t          j        fv rt          |d#|          }	|t          j        k    rt          |	d%          }d&|_        t          |	d'd(           t          |	dd)d*d)+          }t          |d,dd-.          }t          |d#          }t          |d%          }d/|_        t          |	d'd0           t          ||j        |           t          ||j        |           t          |	d%          }d1|_        t          |	d'd2           t          |	dd3d4d3+          }t          |d#          }t          |d%          }d5|_        t          |	d'd6           t          |	d%          }d7|_        t          ||j        |           t          ||j        |           t          ||j        |           d S |                    t          j                  r#t          |d|          }|d8d9         |_        d S |                    t          j                   rlt          |d%|          }|rd
                    |          |_        n%|t          j!        v r|dd          |_        n||_        t          ||j        |           d S t          |d%|          }||_        t          ||j        |           d S ):Nz
\d+(.\d+)?mnr   r   r   r!   r   r   r(   largeop)	r   r   r   r   r    r!   r#   r$   r)   r      220022FFrV   219021FFr'   z\ ~r   r   r   r   r   z	&#x029F8;movablelimitsr   zinj&#x02006;lim	&#x0222B;zlim&#x02006;infzlim&#x02006;supzproj&#x02006;limrD   )r'  z	&#x022EF;r'  rU   Lr   z-.325emz+.21exz-.21ex)r   r   r   r   r   r   Az-.17emTz-.14emz-.5exz+.5exEz-.115emX   r   )"rd   r   r   rer   r   r   r   rG   	OPERATORSr   rH   intranger   NOBREAKSPACESPACENOTDETERMINANTr   INTOPINJLIMLIMINFLIMSUPPRPROJLIMr   IDOTSINTLATEXTEXr   OPERATORNAME	BACKSLASH	FUNCTIONS)r{   r;   r   rd   r   r   r   r   textsr  smi_lr   rD   mi_ami_tmi_emi_xs                     r5   r   r     s<   JE&BJE""F	xu%% f.VT*==='7;-----	)		VT*=== &uuHOOF4K4KE>>&-GN7#L  (/GN9%LLL)0GN:&gw-----gw{D11111V. OOuS__c&"oo6IJJJJ62%FBVR19L"M"MMMS==VT*===v..'7;-----	5#x4hnE	E	EVWZ@@@"'7D)))))	(,		VYc:::Wg.."		 	
 	
 VT?F2Yj2YZZZO.NKO.O.0
 yyabb	22'7;-----	(#	#	#VVJ???8 	 	A $//GGLL	 	 
8>8<0	0	0VVJ???HN""gt,,DDIw	:::: )HH^fgggGUXYYYFff--DdD))DDIw9999dDHd+++dDHd+++'4((	7HH5555WiwX_```'6**$%%	7HI6666'4((	$$'''$$'''$$'''''			(/	0	0 .VT*===RU|			(,	-	- .VT*=== 	!#??622GLLh((( 9GLL GL'7;-----VT*==='7;-----r4   r   keyc                 :    |d S ||         }||| j         d<   d S d S )Nmathvariantr   )r   rI  r   r   s       r5   r   r   +  s5    |IE(-}%%% r4   c                     dd l } dd l}|                     d          }|                    dddddd	
           |                    dddddd
           |                    d          }|                    d          }|                    dddt          dd           |                    dddt          dd           |                    dddddd
           |                                }|j        rdnd}|j	        rdd l
}t          d|j                   d S |j        r%t          t          |j        |                      d S |j        r_t!          |j                  5 }t          t          |                                |                      d d d            d S # 1 swxY w Y   d S |j        r7t          t          |j                                        |                      d S d S )!Nr   z2Pure Python library for LaTeX to MathML conversion)descriptionz-Vz	--versionversion
store_trueFzShow version)destactionrequiredhelpz-bz--blockblockzDisplay blockzrequired arguments)rR  z-tz--textr   Text)rP  typerR  rS  z-fz--filefileFilez-sz--stdinstdinStdinr7   latex2mathml)r:   )argparsesysArgumentParseradd_argumentadd_argument_groupadd_mutually_exclusive_groupstr
parse_argsrT  rN  r[  print__version__r   rB   rW  openreadrY  )	r\  r]  parserrR  group	argumentsr:   r[  fs	            r5   mainrl  3  s_   OOOJJJ$$1e$ffF
k	,Y^esttt
iglUZapqqq(()=>>H1151AAE	tXFuSYZZZ	tXFuSYZZZ	tYW\TY`ghhh!!##I"6gghG 
:nl677777	 :ging66677777	 :).!! 	6Q'!&&((G444555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6	 :gcinn&&88899999: :s   #1F!!F%(F%__main__)r6   r7   Nr>   )r<   N)5r   r/   r.  collectionsr   typingr   r   r   xml.etree.cElementTreer   r   r	   xml.sax.saxutilsr
   r[  r   latex2mathml.symbols_parserr   latex2mathml.walkerr   r   r   r/  compiler   Enumr+   rb  rB   r?   r@   r~   listboolrf   r0  r   rb   rc   dictrE   r   r   r   r   r  r   r   r   r   rl  r,   r3   r4   r5   <module>ry     s     				 # # # # # # / / / / / / / / / / @ @ @ @ @ @ @ @ @ @ % % % % % % ! ! ! ! ! ! 6 6 6 6 6 6 * * * * * * * *$6AA *	V BJ455     49    6 $	   W	
 	    6 $	   W	
    87 8s 8 8 8 8BD BD8D> BD7 BDS BDU]^aUb BDnr BD BD BD BDJ0g 0T$Z 0D 0 0 0 0	*}	*08	*MP	*
8C=#	* 	* 	* 	*"7 "hsm " " " " "= =(4. =' =$sT\]`TaOaJbAc =os = = = =.. .x} .hWZm]efi]jNjHk . . . ."?3 ?8E#t),<#= ? ? ? ?O* O*4 O* O*c8TW=FXAY8Z O*fj O* O* O* O*dC  T    E E Eg E8TXY\^aYaTbKc Eos E E E Ec cw c4 c c c c*K$ K KD K K K K.j. j.$ j. j.xS(SV-EW@X7Y j.ei j. j. j. j.Z.w .S .c8C=>P9Q0R .W[ . . . .: : : :> zDFFFFF r4   