3 E\C5@s8dZddljjjZddddddd d d d d ddd Zdddddddddddd ZejZej Z e j ej e j ej e j eje j eje j eje j ejdjdddDZd$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIg&ZdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcddZdedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddd4ZddddZGdddZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZ GdddeZ!GdddeZ"GdddeZ#GdddeZ$GdddeZ%GdddeZ&GdddeZ'GdddeZ(GddÄdeZ)GddńdeZ*GddDŽdeZ+GddɄdeZ,ddd̄Z-dd΄Z.dddЄZ/dS)z2Convert LaTex math code into presentational MathMLN´¯u˘uˇu˙¨u⃛`^u˚u⃡u˜u⃗) acutebarZbrevecheckdotZddotZdddotZgraveZhatZmathringZoverleftrightarrowtildeZvecuΦuΞuΣuΨuΔuΘuϒuΠuΩuΓuΛ) PhiXiSigmaPsiDeltaThetaUpsilonPiOmegaGammaLambdacCsg|] }t|qS)special).0symbolrrz/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-emcbgzcf/docutils/docutils/utils/math/latex2mathml.py 8srsumintointprodZarccosZarcsinZarctanargcoscoshZcotZcothZcscdegZdetZdimexpgcdZhominfZkerZlgZlimZliminfZlimsuplnlogmaxminZPrsecsinsinhsuptantanhZinjlimZ varinjlimZ varlimsupZprojlimZ varliminfZ varprojlimu𝔸u𝔹uℂu𝔻u𝔼u𝔽u𝔾uℍu𝕀u𝕁u𝕂u𝕃u𝕄uℕu𝕆uℙuℚuℝu𝕊u𝕋u𝕌u𝕍u𝕎u𝕏u𝕐uℤ)ABCDEFGHIJKLMNOPQRSTUVWXYZu𝒜uℬu𝒞u𝒟uℰuℱu𝒢uℋuℐu𝒥u𝒦uℒuℳu𝒩u𝒪u𝒫u𝒬uℛu𝒮u𝒯u𝒰u𝒱u𝒲u𝒳u𝒴u𝒵u𝒶u𝒷u𝒸u𝒹uℯu𝒻uℊu𝒽u𝒾u𝒿u𝓀u𝓁u𝓂u𝓃uℴu𝓅u𝓆u𝓇u𝓈u𝓉u𝓊u𝓋u𝓌u𝓍u𝓎u𝓏)4r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrGrHrIrJrKrLabcdefghijklmnopqrstuvwxyzu≠u∉u≢)=z\inz\equivc@sfeZdZdZdZdddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZdS)mathzBase class for MathML elements.i@BNcCsPg|_|dk r>t|tkr4x"|D]}|j|q Wn |j||dk rL||_dS)z\math([children]) -> MathML element children can be one child or a list of children.N)childrentypelistappendinline)selfrirmchildrrr__init__s   z math.__init__cCs8t|dr,|jjddjdd|jDS|jjSdS)Nriz(%s),cSsg|] }t|qSr)repr)rrorrrrsz!math.__repr__..)hasattr __class____name__joinri)rnrrr__repr__s z math.__repr__cCst|j|jkS)zRoom for more children?)lenri nchildren)rnrrrfullsz math.fullcCs<|j st|jj|||_|}x|jr6|j}q&W|S)zvappend(child) -> element Appends child and returns self if self is not full or first non-full parent.)rzAssertionErrorrirlparent)rnronoderrrrls   z math.appendcCs|jd}|jd=|S)zAdelete_child() -> child Delete last child and return it.r)ri)rnrorrr delete_childs zmath.delete_childcCs|j}x|jr|j}qW|S)zKclose() -> parent Close element and return first non-full element.)r|rz)rnr|rrrcloses  z math.closecCs|j|j|jS)zxml() -> xml-string) xml_startxml_bodyxml_end)rnrrrxmlszmath.xmlcCs:t|dsd|jjgSd}|jr,d|gSd|gSdS)Nrmz<%s>z"http://www.w3.org/1998/Math/MathMLzz )rs���rt���ru���rm���)rn���xmlnsr���r���r���r������s ����  zmath.xml_startc�������������C���s���d|�j�j�gS�)Nz)rt���ru���)rn���r���r���r���r������s����z math.xml_endc�������������C���s&���g�}x|�j�D�]}|j|j��q W�|S�)N)ri���extendr���)rn���r���ro���r���r���r���r������s���� z math.xml_body)NN)ru��� __module__ __qualname____doc__ry���rp���rw���rz���rl���r���r���r���r���r���r���r���r���r���r���rh������s���    rh���c���������������@���s���e�Zd�Zdd�ZdS�)mrowc�������������C���s���d|�j�j�gS�)Nz <%s>)rt���ru���)rn���r���r���r���r������s����zmrow.xml_startN)ru���r���r���r���r���r���r���r���r������s���r���c���������������@���s���e�Zd�Zdd�ZdS�)mtablec�������������C���s���d|�j�j�gS�)Nz <%s>)rt���ru���)rn���r���r���r���r������s����zmtable.xml_startN)ru���r���r���r���r���r���r���r���r������s���r���c���������������@���s ���e�Zd�ZdS�)mtrN)ru���r���r���r���r���r���r���r�����s����r���c���������������@���s ���e�Zd�ZdS�)mtdN)ru���r���r���r���r���r���r���r�����s����r���c���������������@���s$���e�Zd�ZdZdZdd�Zdd�ZdS�)mxzBase class for mo, mi, and mnr���c�������������C���s ���||�_�d�S�)N)data)rn���r���r���r���r���rp�����s����z mx.__init__c�������������C���s���|�j�gS�)N)r���)rn���r���r���r���r��� ��s����z mx.xml_bodyN)ru���r���r���r���ry���rp���r���r���r���r���r���r�����s���r���c���������������@���s���e�Zd�ZdddZdd�ZdS�)moz<z>)<>c�������������C���s���|�j�j|�j|�jgS�)N) translationgetr���)rn���r���r���r���r�����s����z mo.xml_bodyN)ru���r���r���r���r���r���r���r���r���r�����s��� r���c���������������@���s ���e�Zd�ZdS�)miN)ru���r���r���r���r���r���r���r�����s����r���c���������������@���s ���e�Zd�ZdS�)mnN)ru���r���r���r���r���r���r���r�����s����r���c���������������@���s���e�Zd�ZdZdS�)msub���N)ru���r���r���ry���r���r���r���r���r�����s���r���c���������������@���s���e�Zd�ZdZdS�)msupr���N)ru���r���r���ry���r���r���r���r���r�����s���r���c���������������@���s���e�Zd�ZdZdS�)msqrtr~���N)ru���r���r���ry���r���r���r���r���r�����s���r���c���������������@���s���e�Zd�ZdZdS�)mrootr���N)ru���r���r���ry���r���r���r���r���r�����s���r���c���������������@���s���e�Zd�ZdZdS�)mfracr���N)ru���r���r���ry���r���r���r���r���r���"��s���r���c���������������@���s"���e�Zd�ZdZdddZdd�ZdS�) msubsup���NFc�������������C���s���||�_�tj|�|�d�S�)N)reversedrh���rp���)rn���ri���r���r���r���r���rp���'��s����zmsubsup.__init__c�������������C���s4���|�j�r*|�jd�|�jd�g|�jdd<�d|�_�tj|�S�)Nr���r~���r���F)r���ri���rh���r���)rn���r���r���r���r���+��s����z msubsup.xml)NF)ru���r���r���ry���rp���r���r���r���r���r���r���%��s��� r���c���������������@���s,���e�Zd�ZddddddZdd�Zd d �Zd S�) mfenced{u���〈}u���〉r���)z\{z\langlez\}z\rangle.c�������������C���s���||�_�tj|��d�S�)N)openparrh���rp���)rn���parr���r���r���rp���6��s����zmfenced.__init__c�������������C���s2���|�j�j|�j|�j}|�j�j|�j|�j}d||f�gS�)Nz)r���r���r���closepar)rn���openr���r���r���r���r���:��s����zmfenced.xml_startN)ru���r���r���r���rp���r���r���r���r���r���r���2��s ���r���c���������������@���s���e�Zd�ZdZdS�)mspacer���N)ru���r���r���ry���r���r���r���r���r���?��s���r���c���������������@���s���e�Zd�ZdddZdd�ZdS�)mstyleNc�������������K���s$���|d�k r||�_�tj|�|�||�_d�S�)N)ry���rh���rp���attrs)rn���ri���ry���kwargsr���r���r���rp���C��s���� zmstyle.__init__c�������������C���s$���dgdd�t�|�jj�D��dg�S�)Nz.r���)rk���r���items)rn���r���r���r���r���I��s����zmstyle.xml_start)NN)ru���r���r���rp���r���r���r���r���r���r���B��s��� r���c���������������@���s"���e�Zd�ZdZdddZdd�ZdS�) moverr���NFc�������������C���s���||�_�tj|�|�d�S�)N)r���rh���rp���)rn���ri���r���r���r���r���rp���O��s����zmover.__init__c�������������C���s ���|�j�r|�jj��d|�_�tj|�S�)NF)r���ri���reverserh���r���)rn���r���r���r���r���S��s���� z mover.xml)NF)ru���r���r���ry���rp���r���r���r���r���r���r���M��s��� r���c���������������@���s���e�Zd�ZdZdS�)munderr���N)ru���r���r���ry���r���r���r���r���r���Y��s���r���c���������������@���s���e�Zd�ZdZdddZdS�) munderoverr���Nc�������������C���s���t�j|�|�d�S�)N)rh���rp���)rn���ri���r���r���r���rp���^��s����zmunderover.__init__)N)ru���r���r���ry���rp���r���r���r���r���r���\��s���r���c���������������@���s ���e�Zd�ZdZdd�Zdd�ZdS�)mtextr���c�������������C���s ���||�_�d�S�)N)text)rn���r���r���r���r���rp���c��s����zmtext.__init__c�������������C���s���|�j�gS�)N)r���)rn���r���r���r���r���f��s����zmtext.xml_bodyN)ru���r���r���ry���rp���r���r���r���r���r���r���a��s���r���Tc�������������C���sN��dj�|�j�}�|r&t�}t|dd}nt�}ttt|dd}xt|�dkrHt|�}|�d�}d}|dkrx|�d�}nd}|dkrn|dkr|d kr|jt |}d }n|dkr|jt �}d }n|d kr|jt �}d }n|j �rDd }x$||k�r|�|�j �r|d7�}qW�|�d|�} t | ||�|d �\}}||7�}nD|dkrxt�} t| } |j �j �j| �| }d }ntd ||f�n|j �r|jt|}n|j�r|jt|}nv|dkr|jt |}nZ|dkrH|j�} t| trt| jdd} n*t| t r0| jtkr0t| } nt| } |j| �| }n|dkr|j�} t| trrt| j}nTt| t r| jtkrt| }n2t| tr| jd�jtkrt| j}nt| }|j|�|}nd|dkrt�} |j| �| }nD|dkr |j �}n0|dkr.t�} |j �j| �| }n td|�|�|d �}�qDW�|S�)zparse_latex_math(string [,inline]) -> MathML-tree Returns a MathML-tree parsed from string. inline=True is for inline math and inline=False is for displayed math. tree is the whole tree and node is the current element. T)rm���Fr���r~���r���\z{}r���rq���NzSyntax error: "%s%s"z+-*/=()[]|<>,.!?':;@_)r���r���r���r���&zIllegal character: "%s")rv���splitr���rh���r���r���r���rx���rl���r���r���isalphahandle_keywordr��� SyntaxErrorr���isdigitr���r��� isinstancer���r���ri���r��� sumintprodr���r���r���r���)stringrm���r}���treerZ���rO���skipc2rU���nameentryrowro���subr0���r���r���r���parse_latex_mathi��s����                              r���c�������������C���s��d}t�|dkr,|d�dkr,|dd��}d}|�dkrr|jdsFtd|d7�}t�}tt|}|j|�|}n|�dkr|jdstd |d7�}|j�j�j�}nN|�d0kr|d�d krtd |jd}|d1krtd |jt |d|�}||d�7�}n|�dkr(t �}|j|�|}n|�dkrJt �}|j|�|}n|�dkrx$d2D�]} |j| rZP�qZW�tdt | } |j| �t �} | j| �| }|t�| 7�}nF|�dkrx$d3D�]} |j| rP�qW�td|j�}| |_|j�}|t�| 7�}n|�dkrXx$tD�]} |j| rP�qW�td |jtt| �}|t�| 7�}n|�d!krtdd"d#} |j| �| }nv|�d$kr|d�d ks|d�j� �s|d%�dkrtd&|jtt|d��}|d'7�}n|�d4kr.|d�d ks|d%�dkrtd*|jtt|d��}|d'7�}n|�d+krH|jtd,}n|�tkrf|jtt|��}n|�tkr|jtt|��}nr|�tkr|jtt|��}nT|�tkr|jt|�}n:|�tkrttt|��d-d.}|j|�|}n td/|��||fS�)5Nr���r���r~���beginz{matrix}z;Environment not supported! Supported environment: "matrix".���endzExpected "\end{matrix}"!r���mathrmr���zExpected "\text{...}"!r���sqrtfracleft([|\{\langler���zMissing left-brace!right)]\}\ranglezMissing right-brace!notz)Expected something to negate: "\not ..."!ZmathbfZbold)ry���Z fontweightmathbbr���z%Expected something like "\mathbb{A}"!r���mathscrmathcalz&Expected something like "\mathscr{A}"!colon:T)r���zUnknown LaTeX command: )r���r���r���)r���r���r���r���r���r���)r���r���r���r���r���r���)r���r���)rx��� startswithr���r���r���r���rl���r���findr���r���r���r���r���r��� negatablesr���r���isupperr���r���r���Greeklettersr��� functionsoverr���)r���r}���r���r���r���tablerU���r���r���r���Zfencedr���operatorstyleZovrr���r���r���r�����s����                           ,           r���c�������������C���s���t�|�|d}dj|j�S�)zReturn string with MathML code corresponding to `tex_math`. `inline`=True is for inline math and `inline`=False for displayed math. )rm���r���)r���rv���r���)Ztex_mathrm���Z mathml_treer���r���r��� tex2mathml2��s���� r���)r���r���r ���r!���)T)T)0r���Zdocutils.utils.math.tex2unicharutilsrh���Z tex2unicharr���r���Z mathalphar���Zmathbinr���updateZmathrelZmathordZmathopZmathopenZ mathcloseZ mathfencerv���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���r���r���r���r���r���r���r���r������s��               [      ed