Ë ¸þèÑ“#Fãód—dZddlZddlZddlmZmZej Zded<dddd d d d d ddddœ Zddddddddddœ Z e jd„dD««dddddœZ ddd d!d"d#d$d%d&d'd(d)d$d*œ Z id+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“dEdB“dFdD“dGdD“Z e jej«e jej«e jej «idHdI“dJdK“dLdM“dNdO“dPdQ“dRdS“dTdU“dVdW“dXdY“dZd[“d\d]“d^d_“d`da“dbdc“ddde“dfdc“dgdc“deddhdidjdkdlœ¥Zejej$«ejej&«ejej(«ejej*«ejej,«eje «dmdndoœZdpdqdrdsdtdudvdwœZdxZdydzd{d{d|d}d}d~d~ddd€d�d‚œ Zdƒd„d…d†d‡dˆd‰dŠd‹dŒd�dŽd�œ Zd�d‘d’d“d”d•d–d—œZd˜d‘d’d™d”dšœZd›dœd�džœZdŸd d¡d¢d£d¤œZd¥d¥d¦d§d¨d©dªd«d¬œZ d­dd®œd¯dd®œd¯d°d®œd¯d±d®œd²œZ!iifd­dd³d´œife!dµife!d¶ifid·dife!dµd·dife!d¶d·difd¸œZ"gd¹¢Z#ddd°d°d±d±dºdºd»d»d¼œ Z$Gd½„d¾«Z%Gd¿„dÀe%«Z&GdÁ„dÂe%«Z'GdÄdÄe%«Z(GdÅ„dÆe(«Z)GdÇ„dÈe(«Z*GdÉ„dÊe(«Z+GdË„dÌe(«Z,GdÍ„dÎe(«Z-GdÏ„dÐe(«Z.GdÑ„dÒe%«Z/GdÓ„dÔe/«Z0GdÕ„dÖe/«Z1GdׄdØe/«Z2GdÙ„dÚe/«Z3GdÛ„dÜe%«Z4GdÝ„dÞe4«Z5Gdß„dàe4«Z6Gdá„dâe4«Z7Gdã„däe5«Z8Gdå„dæe6«Z9Gdç„dèe7«Z:Gdé„dêe4«Z;Gdë„dìe%«Z<Gdí„dîe%«Z=dï„Z>dð„Z?dñ„Z@dò„ZAdó„ZBdô„ZCdõ„ZDdö„ZEdýd÷„ZFdø„ZGdù„ZHdú„ZIdû„ZJdþdü„ZKy)ÿz™Convert 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–—Œ y­w©N©)Ú.0Únames úE/usr/lib/python3.12/site-packages/docutils/utils/math/latex2mathml.pyÚ r$Bs#èø€ðAñ@ð#'�$˜”ñ@ùs‚)Ú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)TTFz0.278em)FTTú0.444em)FTFz0.667em)FFTr>)ÚbmodÚpmodÚmodÚpodÚboldÚitalicÚ monospaceÚnormalz sans-serifÚscriptz bold-italicz double-struckÚfrakturzsans-serif-italiczsans-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)Údotsorr{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Úsumrr}r~r{r|Ú2emÚ1emz0.2778emz0.25emz0.2222emz0.1667emz -0.1667emz -0.2222emz -0.2778em) ÚqquadÚquadÚ thickspaceÚ;Ú ÚmedspaceÚ:Ú thinspaceÚ,Ú negthinspaceÚ!Ú negmedspaceÚ negthickspace)ô´uÌ�)uˉuÌ„)u˘ŭ)uˇuÌŒ)uË™u̇)ô¨ü)rwu⃛)Ú`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ℼ)rrruγuÏ€)ÚrÊ)Ú(Ú))Ú[Ú])Ú{Ú})rcrc)rere)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Êz1.2emz1.623emz2.047emz2.470eméé) ÚleftÚrightÚbiglÚbigrÚBiglÚBigrÚbigglÚbiggrÚBigglÚBiggrcóÈ—eZdZdZdZ dZ dZed«ded«ded«d d d iZd d dœZ dZ d„Z d„Z d„Z d„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zdd„Zd„Zdd„Zd„Zy) Úmathz8Base class for MathML elements and root of MathML trees.NrÚz>Ú&z&ia z⁡ÚtrueÚfalse)TFÚspancó¬—g|_|j|«i|_|j«D]"}|||j|j «<Œ$y)aSet 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() ' ' N)ÚchildrenÚextendÚ attributesÚkeysÚlower)ÚselfrþrÚkeys r#Ú__init__z math.__init__ZsI€ðˆŒ Ø � ‰ �HÔàˆŒØ—?‘?Ö$ˆCð,6°c©?ˆD�O‰O˜CŸI™I›KÒ (ñ%ócóÜ—t|dg«D�cgc] }t|«‘Œ}}t|d«r$|jt|j««t |t «r|jr|jd«||jj«D��cgc]\}}|�|›d|›�‘Œc}}z }|jjddj|«zzScc}wcc}}w)NrþÚdataz switch=TrueÚ=z(%s)z, ) ÚgetattrÚreprÚhasattrÚappendrÚ isinstanceÚ MathSchemaÚswitchrÚitemsÚ __class__Ú__name__Újoin)rÚitemÚcontentÚkÚvs r#Ú__repr__z math.__repr__msÍ€Ü*1°$¸ ÀBÔ*GÓHÑ*G $”4˜•:Ð*GˆÐHÜ �4˜Ô Ø �N‰Nœ4 § ¡ ›?Ô +Ü �dœJÔ '¨D¯KªKØ �N‰N˜=Ô )بt¯©×/DÑ/DÔ/Fô&Ñ/F¡t q¨!Ø�}ò¡’NÐ/Fò&ñ &ˆð�~‰~×&Ñ&¨°$·)±)¸GÓ2DÑ)DÑDÐDùòIùó &s �C#ÂC(có,—t|j«Sr)Úlenrþ©rs r#Ú__len__z math.__len__xs€Ü�4—=‘=Ó!Ð!rcó —|j|Sr©r)rrs r#Ú __getitem__zmath.__getitem__}s€Ø�‰˜sÑ#Ð#rcó"—||j|<yrr)rrrs r#Ú __setitem__zmath.__setitem__€s€Ø#ˆ�‰˜Òrcó:—|jj|i|¤ŽSr)rÚget)rÚargsÚkwargss r#r$zmath.getƒs€Ø"ˆt�‰×"Ñ" DÐ3¨FÑ3Ð3rcóR—|jduxrt|«|jk\S)z;Return boolean indicating whether children may be appended.N)Ú nchildrenrrs r#Úfullz math.full†s(€à—‘ dÐ*ò0ܘ“I §¡Ñ/ð 1rcóÆ—|j«rtd|z«‚|jj|«||_|j«r|j «S|S)zšAppend 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`. zNode %s already full!)r)Ú SyntaxErrorrþr ÚparentÚclose)rÚchilds r#r z math.append‹sQ€ð �9‰9Œ;ÜÐ5¸Ñ<Ó=Ð =Ø � ‰ ×јUÔ#؈Œ Ø �9‰9Œ;Ø—:‘:“<Р؈ rcó6—|D]}|j|«Œ|Sr)r )rrþr.s r#rÿz math.extend™s€ÛˆEØ �K‰K˜Õ ðàˆ rcó€—|j}|�/|j«r|j}|�|j«rŒ|S)z7Close element and return first non-full parent or None.)r,r))rr,s r#r-z math.closežs7€à—‘ˆØÐ  V§[¡[¤]Ø—]‘]ˆFðÐ  V§[¡[¥]àˆ rcó@—dj|j««S)z,Return XML representation of self as string.rÊ)rÚ_xmlrs r#Ú toprettyxmlzmath.toprettyxml¥s€à�w‰w�t—y‘y“{Ó#Ð#rcó~—|j«g|j|«zd|jjzgzS)Nz)Ú xml_starttagÚ _xml_bodyrr©rÚlevels r#r2z math._xml©sA€Ø×"Ñ"Ó$Ð%Ø—.‘. Ó'ñ(à˜TŸ^™^×4Ñ4Ñ4Ð5ñ6ð 7rcóœ—d„|jj«D«}ddj|jjg|¢­«zS)Nc3óˆK—|]:\}}|�3|›dt|«jdd«jdd«›d�–—Œ<y­w)Nz="ÚTruerúÚFalserûÚ")ÚstrÚreplace)r!rrs r#r$z$math.xml_starttag..¯sCèø€ð#Ù4‘T�Q˜Ø�Mò ¤ Q£§¡°¸Ó!?×!GÑ!GÈÐQXÕ!YÔZÙ4ùs‚AAz<%s>r�)rrrrr)rÚattrss r#r5zmath.xml_starttag®sF€ñ#Ø!Ÿ_™_×2Ñ2Ô4ó#ˆð˜Ÿ™ $§.¡.×"9Ñ"9Ð!B¸EÑ!BÓCÑCÐCrcóЗg}|jD]>}|jdd|dzzg«|j|j|dz««Œ@|jdd|zg«|S)NÚ z rÛ)rþrÿr2)rr8Úxmlr.s r#r6zmath._xml_body´sd€ØˆØ—]”]ˆEØ �J‰J˜˜d e¨A¡gÑ.Ð/Ô 0Ø �J‰J�u—z‘z %¨¡'Ó*Õ +ð#ð � ‰ �D˜$ ™,Ð'Ô(؈ rcóˆ— |ddk(S#t$r. |jj«cYS#t$rYYywxYwwxYw)z;Return true, if `self` or a parent has ``display='block'``.ÚdisplayÚblockF)ÚKeyErrorr,Úis_blockÚAttributeErrorrs r#rHz math.is_block¼sO€ð ؘ ‘? gÑ-Ð -øÜò ð Ø—{‘{×+Ñ+Ó-Ò-øÜ!ò Úð úð ús$‚ Š A”0­A° =¹A¼=½A©r)rÚ __module__Ú __qualname__Ú__doc__r(r,Ú_levelÚordÚ xml_entitiesÚ _boolstringsÚ html_tagnamerrrr r"r$r)r rÿr-r3r2r5r6rHr rr#röröDs¨„ÙBà€IØ-à €FØ)Ø €Fñ ˆC‹�&Ù ˆC‹�&Ù ˆC‹�'ØÐ#ð €Lð!¨Ñ1€LØCà€LØ+ò;ò& Eò"ò $ò$ò4ò1ò òò ò$ó7ò Dó órröcó —eZdZy)ÚmtableN©rrKrLr rr#rTrTâó…rrTcó"‡—eZdZdZˆfd„ZˆxZS)Úmrowz*Group sub-expressions as a horizontal row.có•—|j}t|t«rb|jdk(rSt |j «|_|j |_|j D] }||_Œ |j «St |«dk(rJ |j d|j |j j|«<||j d_t‰|�«S#ttf$r|j dcYSwxYw)z¹Close element and return first non-full parent or None. Remove , if it is single child and the parent infers an mrow or if it has only one child element. rÛr) r,rÚ MathRowSchemar(rrþr-ÚindexrIÚ ValueErrorÚsuper)rr,r.rs €r#r-z mrow.closeîsÜø€ð —‘ˆÜ �fœmÔ ,°×1AÑ1AÀQÒ1FÜ" 6§?¡?Ó3ˆFÔ Ø"Ÿm™mˆFŒOØŸœ�Ø%�• ð'à—<‘<“>Ð !Ü ˆt‹9˜Š>ð (Ø?C¿}¹}ÈQÑ?O�—‘ §¡× 5Ñ 5°dÓ ;Ñ<Ø*0�— ‘ ˜aÑ Ô'ô‰w‰}‹Ðøô#¤JÐ/ò (Ø—}‘} QÑ'Ò'ð (úsÂA C&Ã&DÄD)rrKrLrMr-Ú __classcell__©rs@r#rXrXësø„Ù4÷ðrrXcó—eZdZdZy)rZzCBase class for elements treating content as a single inferred mrow.N)rrKrLrMr rr#rZrZ s„ÚMrrZcó —eZdZy)ÚmtrNrUr rr#rbrbrVrrbcó —eZdZy)ÚmtdNrUr rr#rdrdrVrrdcó—eZdZdZy)ÚmencloserÛN©rrKrLr(r rr#rfrfó„Ø�Irrfcó—eZdZdZy)ÚmphantomrÛNrgr rr#rjrjrhrrjcó—eZdZdZy)ÚmsqrtrÛNrgr rr#rlrlrhrrlcó—eZdZdZy)ÚmstylerÛNrgr rr#rnrnrhrrncó.‡—eZdZdZdZˆfd„Zdd„ZˆxZS)Ú MathTokenzbToken Element: contains textual data instead of children. Base class for mo, mi, and mn. rc ó2•—||_t‰|�di|¤Žy)Nr )rr]r)rrrrs €r#rzMathToken.__init__)sø€ØˆŒ Ü ‰ÑÑ&˜:Ó&rcó`—t|j«j|j«gSr)r>rÚ translaterPr7s r#r6zMathToken._xml_body-s$€Ü�D—I‘I“×(Ñ(¨×):Ñ):Ó;Ð<Ð>> 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]+) *(.*)z(.?)(.*)rÛrÜ©ÚreÚmatchÚgroup©ÚstringÚms r#Ú tex_cmdnamer�ˆsE€ô �‰Ð% vÓ.€AØ€yÜ �H‰H�[ &Ó )ˆØ �7‰7�1‹:�q—w‘w˜q“zÐ !Ð!rcó~—tjd|«}|€d|fS|jd«|jd«fS)zmReturn leading number literal and remainder of `string`. >>> tex_number('123.4') ('123.4', '') z([0-9.,]*[0-9]+)(.*)rÊrÛrÜr–ršs r#Ú tex_numberrŸ¥s?€ô �‰Ð(¨&Ó1€AØ€yØ�6ˆzÐØ �7‰7�1‹:�q—w‘w˜q“zÐ !Ð!rcó–—tjd|tj«}|jdddd«\}}}}|xs|xs||fS)zÝReturn 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\\[a-zA-Z]+)\s* # TeX command, skip whitespace |(?P\\.) # one-character TeX command |(?P.?)) # first character (or empty) (?P.*$) # remaining part of string ÚcmdÚchcmdÚchÚ remainder)r—r˜ÚVERBOSEr™)r›rœr¡r¢r£r¤s r#Ú tex_tokenr¦ÀsV€ô �‰ððœbŸj™jó  *€Að !"§¡¨¨w¸¸kÓ JÑ€Cˆ��IØ Ò �%Ò ˜2˜yÐ (Ð(rcóÞ—d}d}d}|jd«s |dd|ddfS|D]0}|dz }|rd}n|dk(rd}n|dk(r|dz }n |dk(r|dz}|dk(sŒ0n td «‚|d|dz ||dfS) z°Return first TeX group or token and remainder of `string`. >>> tex_group('{first group} returned without brackets') ('first group', ' returned without brackets') rFrÏNrÛrWTrÐzGroup without closing bracket)Ú startswithr+)r›Ú split_indexÚ nest_levelÚescapeÚcs r#Ú tex_groupr­ßsµ€ð€KØ€JØ €Fà × Ñ ˜SÔ !à�b�qˆz˜6 ! "˜:Ð%Ð%Û ˆØ�qш ٠؉FØ �$ŠY؉FØ �#ŠXØ ˜!‰O‰JØ �#ŠXØ ˜!‰OˆJØ ˜‹?Ù ðôÐ9Ó:Ð:Ø �!�K ‘MÐ " F¨;¨<Ð$8Ð 8Ð8rcóh—t|«\}}|dk(rt|j««\}}||fS)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°s7€ô˜vÓ&�N€CˆØ ˆc‚zÜ" 6§=¡=£?Ó3‰ˆˆYØ � ˆ>Ðrcóö—tjd|tj«}|€|jd«sd|fS |j d«|j d«fS#t $rt d|z«‚wxYw)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(\\]|[^\[\]]|\\])*)\] # [group] without nested groups (?P.*$) rÍrÊÚoptargr¤z+Could not extract optional argument from %r)r—r˜r¥r¨r™rIr+ršs r#Ú tex_optargr³&s…€ô �‰ððœbŸj™jó *€Að €y˜×*Ñ*¨3Ô/Ø�6ˆzÐðRØ�w‰w�xÓ  !§'¡'¨+Ó"6Ð6Ð6øÜ òRÜÐGÈ&ÑPÓQÐQðRús ¾!A Á A8cóB—dj|j««}|}t|«dkD�rî|d|dd}}|dk(rŒ|dk(r t|«\}}t |||«\}}�n©|dvrt ||«}�n—|dk(rt «}|j|«|}�ns|dk(r|j«}�n\|d k(r-t«}|j«j|«|}�n*|j«r|jt|««}nÿ|j«r,t|«\}}|jt||z««}nÃ|tvrmi}|d k(rC|j r7|j d }t#|d d «d vs|j%d«dk(rd|d<|jt't|fi|¤Ž«}nN|dvr|jt'|d¬««}n-|dvr|jt'|««}nt)d|z«‚t|«dkDr�Œî|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�rrÛNrWú_^rÏrÐrùrÈr�rz([=ÚclassÚmathopenÚprefixÚformz/()[]|F©Ústretchyz +*=<>,.!?`';@zUnsupported character: "%s")rÚsplitrr�Ú handle_cmdÚhandle_script_or_limitrXr r-rdÚisalpharwÚisdigitrŸr{Úanomalous_charsrþr r$ryr+) Únoder›Útreer¬ÚcmdnameÚnew_nodeÚnumberrÚ previous_nodes r#Úparse_latex_mathrÈEsñ€ð�X‰X�f—l‘l“nÓ %€FØ €Dä ˆf‹+˜‹/à˜1‘I˜v a b˜zˆ6ˆà �Š8Ø Ø �Š9Ü)¨&Ó1‰OˆG�VÜ% g¨t°VÓ<‰LˆD’&Ø �$‰YÜ)¨$°Ó2ŠDØ �#ŠXÜ“vˆHØ �K‰K˜Ô !ØŠDØ �#ŠXØ—:‘:“<ŠDØ �#ŠXÜ“uˆHØ �J‰J‹L× Ñ  Ô )ØŠDØ �Y‰YŒ[Ø—;‘;œr !›uÓ%‰DØ �Y‰YŒ[Ü'¨Ó/‰NˆF�FØ—;‘;œr ! F¡(›|Ó,‰DØ ”/Ñ !ðˆJØ�CŠx˜DŸMšMØ $§ ¡ ¨bÑ 1� ܘM¨6°3Ó7¸5Ñ@Ø$×(Ñ(¨Ó1°ZÒ?Ø)1�J˜vÑ&Ø—;‘;œr¤/°!Ñ"4ÑC¸ ÑCÓD‰DØ �(‰]Ø—;‘;œr !¨eÔ4Ó5‰DØ �/Ñ !Ø—;‘;œr !›uÓ%‰DäÐ;¸aÑ?Ó@Ð @ôS ˆf‹+˜Œ/ðT €Krcó"—|tvr4tt|«}|tvrd|d<|j|«}||fS|tvrØ|dk(rt |«\}}t|d¬«}ntt|«}|dk(rt |td««}nR|dk(rt|td «d ¬ «}n5|d k(rt |td ««}n|dk(rt |td««}|j|«}|r!|ddvr|jtd««}||fS|tvrït|\}}}}|r!|jtd||¬««}||fS|j«rd}|jt|¬««}|r|jtdd ¬««}|r5|jtd««}|jtd¬««}t |«\}}t||«}|r|jtdd ¬««}||fS|tvrÆ|dk(rddi} n dt|i} |dk(rd| d<t |«\}} |jd«rtj|dd |«}|d!k(rt j||«}|j#«s|d"k(r|jt|fi| ¤Ž«}|| fSt%dmi| ¤Ž} |j| «| |fS|d#k(r"|jtd$d%d&d'¬(««}||fS|d)k(rt|d*«}||fS|t&vr'|jtt&|d+¬,««}||fS|t(vr'|jtt(|d-¬.««}||fS|t*vrHi} |t,vr|r |dd/vrd0| d1<n |d2vrd3| d<|jtt*|fi| ¤Ž«}||fS|t.vrËi} t0t.|} t |«\}}|d4vr t2|j5d«}| r| | d8<| | d9<d0| d:<|d;k(s|j;d<«rt=«}|j|«|}|d=k7r|jt|fi| ¤Ž«|d>k(s|j;d?«r|j?«}||fS|d@k(rotA|«\}}|dAk(r|dB|zfS|jd«r t*|dd }tCjDdD|dEz«}|jt|««}||fS|dFvr|t |«\}}|jGdG«}tI|«D]K\}}|dHzdk(r2tKjLdIdJ|«}|jtO|««}Œ@t||«ŒM||fS|tPvr)|jtdKtP|z¬««}||fS|dLvrUtS|«\}}|j;dM«rdNtU|d dO«dPz z}|jtdK|z¬««}||fS|dQk(rtW«}|j|«||fS|dRk(r!tYdS¬T«}|j|«||fS|dUk(rct[|«\}}|r4t=«}t]|d0¬V«}t||«|j?«n t_«}|j|«||fS|t`vr´t`|\}}|dWk(r:t[|«\}}d;d>dXœ}||vr#|jc«}|||dY<dZ||z|d<tedmi|¤Žx}}|j;d[«r(t=td«|td«d[¬\«}d]|_3|r t%|fi|¤Ž}|j|«||fS|dk(rFti«}tk|«}|j?«j?«j|«||fS|tlvrUtttl|dd ¬«d0¬V«}|d^k(rd |jndd_<||_8|j|«||fS|trvr?tttr|dd0¬ «d0d ¬`«}||_8|j|«||fS|dak(r!td0¬V«}|j|«||fS|ttvr>> handle_cmd('hbar', math(), r' rac') (math(mi('â„�')), ' \frac') >>> handle_cmd('hspace', math(), r'{1ex} (x)') (math(mspace(width='1ex')), ' (x)') z capital-greekr¶rrF)Ú mathvariantrr¸rô¯F)Úaccentrr·rr©r)r¹r¸uâ�¡rA)ÚlspaceÚrspacer˜)ÚwidthrËrºú0.333emrÌrIrÊrUrWrÛNrQrÉÚcolonrŸÚpostfixÚ0z0.28em)r¹rÍrÎÚidotsintz\int\dotsi\intzfont-weight: bold)Ústylez75%)Úmathsizez _^TÚ movablelimits)rbrdr·z()[]/|.zUnsupported "\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)rrà)rÛrÝÚnumalignz numalign-ræ)rárérµrÌ)rrÌÚoversetÚunderset)Ú xleftarrowÚ xrightarrowÚlongröz3Declaration "\%s" must be first command in a group.Úlimitsrµ)ròÚbeginÚendzUnknown LaTeX command: \r )FÚlettersrwÚgreek_capitalsr Ú functionsr°rŠryrŒÚmodulo_functionsrHr”rÈÚmath_alphabetsr¨r$rQr¿rnÚthick_operatorsÚsmall_operatorsÚ operatorsr×Ú bigdelimitersÚdelimiter_sizesÚ stretchablesr¯rGr+ÚendswithrXr-r¦Ú unicodedataÚ normalizer¼Ú enumerater—ÚsubruÚspacesr­Úfloatrjrfr³r�rlÚ fractionsÚcopyr’r(rdrbÚaccentsrþÚtex_cmdÚoverÚunderrŽrÚ layout_stylesrr,r[rrr¾Úbegin_environmentÚend_environment)r"rÂr›rÅr(ÚbinaryÚnamedÚ parenthesesÚpaddingrr¤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�Ü”g˜d‘mÓ$ˆØ ”>Ñ !ð!0ˆH�WÑ Ø�{‰{˜8Ó$ˆØ�Vˆ|Ðà ŒyÑð �>Ò !ô-¨VÓ4‰KˆC�ܘ#¨8Ô4‰Häœ) D™/Ó*ˆHà �;Ò Ü˜h¬¨3«Ó0‰HØ �[Ò Ü˜X¤r¨$£x¸Ô>‰HØ �\Ò !ܘh¬¨8« Ó5‰HØ �[Ò Ü˜h¬¨8« Ó5ˆHà�{‰{˜8Ó$ˆñ �f˜Q‘i zÑ1Ø—;‘;œr (›|Ó,ˆDØ�Vˆ|Ðà ÔÑÜ0@ÀÑ0FÑ-ˆ�˜  WÙ Ø—;‘;œr %°ÀÔHÓIˆDؘ�<Ð à �=‰=Œ?؈GØ�{‰{œ6¨Ô0Ó1ˆÙ Ø—;‘;œr #°Ô6Ó7ˆDÙ Ø—;‘;œr %›yÓ)ˆDØ—;‘;œv¨IÔ6Ó7ˆDÜ(¨Ó0‰ ˆˆVÜ  cÓ*ˆÙ Ø—;‘;œr #°Ô6Ó7ˆDØ�Vˆ|Ðà Œ~ÑØ �<Ò Ø! <Ð0‰Jà'¬¸Ñ)=Ð>ˆJØ �9Ò Ø"+ˆJ�wÑ ä+¨FÓ3‰ˆˆYØ �>‰>˜$Ô ô—+‘+˜c ! "˜g sÓ+ˆCØ �8Ò ô—*‘*˜S #Ó&ˆCØ �;‰;Œ=˜C 8šOØ—;‘;œr #Ñ4¨Ñ4Ó5ˆDؘ�?Ð "äÑ$˜Ñ$ˆØ � ‰ �EÔØ�fˆ}Ðð ˆw‚Ø�{‰{œ2˜c¨ ¸#ÀhÔOÓPˆØ�Vˆ|Ðà ˆzÒÜ Ð&7Ó8ˆØ�Vˆ|Ðà ŒÑØ�{‰{œ2œo¨dÑ3Ð;NÔOÓPˆØ�Vˆ|Ðà ŒÑØ�{‰{œ2œo¨dÑ3¸eÔDÓEˆØ�Vˆ|Ðà ŒyÑØˆ Ø ”=Ñ ¡V°°q± ¸UÑ0BØ*.ˆJ�Ò 'Ø Ð'Ñ 'Ø",ˆJ�wÑ Ø�{‰{œ2œi¨™oÑ<°Ñ<Ó=ˆØ�Vˆ|Ðà Œ}ÑØ!ÐÜœ}¨TÑ2Ñ3ˆÜ.¨vÓ6ш �6Ø ˜IÑ %ð 7Ü(¨×)9Ñ)9¸$Ó)?Ñ@� ñ Ø.2Ð  Ñ +Ø.2Ð  Ñ +Ø04Ð  Ñ -Ø �6Š>˜TŸ]™]¨3Ô/Ü“&ˆCØ �K‰K˜Ô ؈DØ ˜Ò Ø �K‰Kœ˜9Ñ=Ð(<Ñ=Ô >Ø �7Š?˜dŸm™m¨CÔ0Ø—:‘:“<ˆDØ�Vˆ|Ðà ˆu‚}Ü Ó'‰ ˆˆVØ �#Š:ؘ VÑ+Ð+Ð +Ø �>‰>˜$Ô ð EÜ  A B Ñ(�ô×#Ñ# E¨3¨x©<Ó8ˆØ�{‰{œ2˜c›7Ó#ˆØ�Vˆ|Ðð Ð)Ñ)Ü(¨Ó0‰ ˆˆVØ— ‘ ˜#“ˆÜ  Ö'‰GˆAˆtØ�1‰u˜ŠzÜ—v‘v˜i¨°4Ó8�Ø—{‘{¤5¨£;Ó/‘ä   tÕ,ð (ð �Vˆ|Ðð Œv�~Ø�{‰{œ6¨¬V°D©\Ñ(9Ô:Ó;ˆØ�Vˆ|Ðà Ð#Ñ#Ü Ó'‰ ˆˆVØ �<‰<˜Ô àœE # c r (›O¨BÑ.Ñ/ˆCØ�{‰{œ6¨¨S©Ô1Ó2ˆØ�Vˆ|Ðà ˆyÒÜ“:ˆØ � ‰ �HÔØ˜ÐÐà ˆw‚Ü UÔ+ˆØ � ‰ �HÔØ˜ÐÐð  ˆv‚~Ü" 6Ó*‰ ˆˆvÙ Ü›ˆIܘY¨tÔ4ˆHÜ ˜Y¨Ô .Ø �O‰OÕ ä“wˆHØ � ‰ �HÔØ˜ÐÐà ŒyÑÜ"+¨D¡/ш�YØ �7Š?Ü'¨Ó/‰NˆF�FØ"¨Ñ1ˆGØ˜Ñ Ø%ŸN™NÓ,� Ø(/°©� ˜*Ñ%Ø%0°7¸6±?Ñ%B� ˜'Ñ"ÜÑ, )Ñ,Ð,ˆ�4Ø �=‰=˜Ô !ÜœB˜s›G X¬r°#«w¸gÔFˆHØ!"ˆHÔ Ù Ü˜hÑ5¨*Ñ5ˆHØ � ‰ �HÔØ�Vˆ|Ðà ˆt‚|Ü“ˆÜ�u“:ˆØ � ‰ ‹ ×ÑÓ×#Ñ# HÔ-Ø�fˆ}Ðà Œw�ÜœœG D™M¨!Ñ,°uÔ=ÀdÔKˆØ �5Š=Ø-2ˆH× Ñ ˜aÑ  Ñ *ØˆÔØ � ‰ �HÔØ˜ÐÐà Œt�|ôœœD ™J q™M°$Ô7Ø $¨Uô4ˆàˆÔØ � ‰ �HÔØ˜ÐÐà ˆyÒÜ Ô%ˆØ � ‰ �HÔØ˜ÐÐà Œu�}Üœ"œU 4™[¨™^Ó,°TÔ:ˆØˆÔØ � ‰ �HÔØ˜ÐÐà ˆzÒÜ Ô&ˆØ � ‰ �HÔØ˜ÐÐà Ð,Ñ,Ü& vÓ.ш �6Ü”)˜F 4¨¨ 8™OÑ,Ó-ˆÙ Ü! $Ó'ˆHÜ'¬«° Ó:ˆHÜ�8‹} Ò!Ø#×,Ñ,¨QÑ/�Ø �O‰O˜HÕ %ä˜T“{ˆHØ � ‰ �HÔØ˜ÐÐà Œ}ÑÜÑ0œM¨$Ñ/Ñ0ˆØ!ˆÔÜ �dœDÔ !¤c¨$£i°1¢nàEMˆD�K‰K× Ñ  §¡×!5Ñ!5×!;Ñ!;¸DÓ!AÑ BØ"Ÿk™kˆHŒOð ˜ÐÐð �^‰^× $Ñ $¨Ò .Ø �K‰K˜Ô !ð˜ÐÐôð,Ø.2ñ3ó4ð 4ð ‡}�}�XÔÜ" 6Ó*‰ˆˆYØ �$‰;؈FÜ)¨$°¸DÔAˆDØ�Vˆ|Ðð ˆw‚Ü   vÓ.Ð.à ˆu‚}ܘt VÓ,Ð,ä Ð1°DÑ8Ó 9Ð9øôiò 7Ý!Ú%)ª9ð#6ó7ð7ð 7ûô0ò EÜ!Ð"?ÀÑ"CÓDÐDð EúsÏ9kÓ k6ëk3ë6lcó®—|jj«}|dk(rd|d<n|dk(st|dd«tvrd|d<|dk(rt |t «rt |jddiŽ}nÖt |t«rt|jddiŽ}n°|d vs|dk(r|jdd «r t|«}n‰t|«}n}|d k(rxt |t«rt |jŽ}nUt |t«rt|jŽ}n2|d vs|dk(r|jdd «r t |«}n t|«}|j«|S) z)Append script or limit element to `node`.ròFr×rrÊTr¸r)ròr×Nr¹) rþr~r r×rrŒrŽr†rˆr$rŠr„r )rÂr¬ròr.rÅs r#r¾r¾ùs0€à �M‰M× Ñ Ó €EØ �ÒØ!&ˆˆoÒØ �OÒ #Ü �U˜F BÓ '¬=Ñ 8Ø!%ˆˆoÑàˆC‚xÜ �eœUÔ #Ü! 5§>¡>Ð?¸$Ñ?‰HÜ ˜œtÔ $Ü §¡Ð<°tÑ<‰HØÐ3Ñ3ؘ2’ %§)¡)¨O¸TÔ"Bܘe“}‰Hä˜E“{‰HØ ˆcŠÜ �eœVÔ $Ü! 5§>¡>Ð2‰HÜ ˜œtÔ $Ü §¡Ð/‰HØÐ3Ñ3ؘ2’ %§)¡)¨O¸TÔ"BܘU“|‰Hä˜E“{ˆH؇K�K�ÔØ €Orcó¸—t|«\}}|tvrºt|d}i}|rHtt|««}|dk(rtt|d¬««}d|d<|j |«|}n.|dk(r)d|d <d |d <t d ¬ «}|j |«|}t «}|j tt|«fi|¤Ž«|}||fStd«‚)NrrØz0.17em)rÎrëÚ columnalignrÒz0.02emÚ rowspacingrÐÚ columnspacingÚ1)rÚúEnvironment not supported!) r­ÚmatricesrXryr rnrdrTrbr+)rÂr›r"Úleft_delimiterrÚwrapperr s r#rrsé€Ü˜VÓ$�L€Dˆ&Ø ŒxÑÜ! $™¨Ñ*ˆØˆ Ù Üœ2˜nÓ-Ó.ˆGØ�wŠÜœr .¸ÔBÓC�Ø,2� ˜=Ñ)Ø �K‰K˜Ô ؉DØ �]Ò "Ø'/ˆJ�|Ñ $Ø*3ˆJ�Ñ 'ܨÔ-ˆGØ �K‰K˜Ô ؈Dô“ˆØ � ‰ ”Fœ3˜u›:Ñ4¨Ñ4Ô5؈ð �ˆ<ÐôÐ6Ó7Ð7rcóF—t|«\}}|tvr�|j«j«j«}t|d}|r.|jt |««}|j«}||fS|dk(r|j«}||fSt d«‚)NrÛrØr*)r­r+r-r ryr+)rÂr›r"Úright_delimiters r#rr6sž€Ü˜VÓ$�L€Dˆ&Ø ŒxÑØ�z‰z‹|×!Ñ!Ó#×)Ñ)Ó+ˆÜ" 4™.¨Ñ+ˆÙ Ø—;‘;œr /Ó2Ó3ˆDØ—:‘:“<ˆDð �ˆ<Ðð �WŠ_Ø—:‘:“<ˆDð �ˆ<ÐôÐ6Ó7Ð7rcóT—td„|D««}|dk(ryt|dz dz«S)Nc3óbK—|]'}|jd«|jd«z –—Œ)y­w©rùz\&N©Úcount©r!rs r#r$z'tex_equation_columns..Hó'èø€ÐA¹D°Sˆs�y‰y˜‹~ § ¡ ¨%Ó 0Õ0¹Dùó‚-/rrÜrÛ)r}Úint)ÚrowsÚtabss r#Útex_equation_columnsr;Gs.€Ü ÑA¹DÓAÓ A€DØ ˆq‚yØÜ ˆt�A‰v˜‰z‹?Ðrcó¶—dddœ}td„|D««}|r?ddg|z}ddg|z}d j|d|d z«|d <d j|d|«|d <|S) NÚalignT)r¶rÙc3óbK—|]'}|jd«|jd«z –—Œ)y­wr2r3r5s r#r$z#align_attributes..[r6r7rìrërÓr—r�rÛr&r()r}r)r9Úattsr:ÚalignsÚspacings r#Úalign_attributesrBXsz€ØØ ñ "€Dä ÑA¹DÓAÓ A€D٠ؘ6Ð" TÑ)ˆØ˜�, Ñ%ˆØ!Ÿh™h v¨g¨t°A©v Ó7ˆˆ]ÑØ #§¡¨°°$¨Ó 8ˆˆ_ÑØ €Krc ó"—td¬«}|}|sdd|d<t|«jd«}t|«dkDr7t «}|j t t|«fit|«¤Ž«t||«|j«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)ÚxmlnsrFrEz\\rÛ) rörr¼rrdr rTrbrBrÈr3)Útex_mathÚinlineÚ math_treerÂr9s r#Ú tex2mathmlrHms‰€ô Ð?Ô@€IØ €DÙ Ø&ˆ �)ÑܘXÓ&×,Ñ,¨UÓ3ˆÜ ˆt‹9�qŠ=ä“5ˆDØ × Ñ œV¤C¨£Iñ>Ü&6°tÓ&<ñ>ô ?ä�T˜8Ô$Ø × Ñ Ó "Ð"r)rÊ)T)LrMr—rÚdocutils.utils.mathrrÚ mathalpharõrör÷ÚupdaterørùrÿÚ mathfencer·Ú mathcloserüÚmathbinÚmathrelÚmathordÚ mathpunctÚmathoprúrûr×rr r r rÁrQr+r rrþrýrörTrXrZrbrdrfrjrlrnrprurwryr{rr„r†rˆrŠrŒrŽr�r’r”r�rŸr¦r­r°r³rÈr½r¾rrr;rBrHr rr#ÚrSskðñ ó Ûç:ð × Ñ €Ø€ˆ�ð ˜8¨hØ ˜h°Ø˜x°(Ø  ñ +€ðØØØàØØØàñ € ð ×Ññ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ñ € ð�2ˆhØ $°aØ ñ"Ø#%ð'à˜^Ñ,¨bÐ1ؘ[Ñ)¨2Ð.Ø�O QÐ'Ð(ؘ^Ñ,¨ÀÐ.BÐCؘ[Ñ)¨O¸QÐ+?Ð@ñ € òA€ØØØØØØØØØØñ € ÷ @ñ@ô|ˆTÔôˆ4ôô>N�DôNôˆ-Ô܈-Ôôˆ}ôôˆ}ôôˆMôôˆ]ôô =�ô =ôˆIÔ܈Ô܈Ô܈Ôô�ôô,ˆ:Ô܈:ÔôˆjôôˆTÔ܈DÔô" �ÔôˆJôôˆDôôˆTôò"ò: "ò6)ò>9òbò,Rò>7òf{:óB òBò8 ò"ò" ô*#r