§
    �Ÿjñ  ã                   óò   — d Z ddlmZmZ ddlZddlZddlZddlZddlm	Z	 ddl
Z
ddlmZ ddlmZmZ ddlmZ ddlmZ dd	lmZmZmZ dd
lmZ  G d„ de¦  «        Z	 	 dd„Zdd„Zdd„Zd„ Zd„ ZdZ dd„Z!dS )zTools for handling LaTeX.é    )ÚBytesIOÚopenN)Úencodebytes)ÚPath)Úfind_cmdÚFindCmdError©Ú
get_config)ÚSingletonConfigurable)ÚListÚBoolÚUnicode)Úcast_unicodec                   ó8  — e Zd ZdZd„ Z e e¦   «         ddgd¬¦  «                             d¬¦  «        Z e	dd	¬¦  «                             d¬¦  «        Z
 eg d
¢d¬¦  «                             d¬¦  «        Z ed¬¦  «                             d¬¦  «        ZdS )Ú	LaTeXToolz3An object to store configuration of the LaTeX tool.c                 ó   — t          ¦   «         S )Nr	   )Úselfs    úc/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/IPython/lib/latextools.pyÚ_config_defaultzLaTeXTool._config_default   s   € Ý‰|Œ|Ðó    Ú
matplotlibÚdvipnga  Preferred backend to draw LaTeX math equations. Backends in the list are checked one by one and the first usable one is used.  Note that `matplotlib` backend is usable only for inline style equations.  To draw  display style equations, `dvipng` backend must be specified. )ÚhelpT)ÚconfigzmUse breqn.sty to automatically break long equations. This configuration takes effect only for dvipng backend.)ÚamsmathÚamsthmÚamssymbÚbmziA list of packages to use for dvipng backend. 'breqn' will be automatically appended when use_breqn=True.zKAdditional preamble to use when generating LaTeX source for dvipng backend.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   ÚtagÚbackendsr   Ú	use_breqnÚpackagesÚpreamble© r   r   r   r      s  € € € € € Ø=Ð=ðð ð ð ˆtØˆ‰	Œ	�L (Ð+ðHð
ñ 
ô 
÷ Š#�Tˆ#Ñ
Ô
ð ð �ØðCð
ñ 
ô 
÷ Š#�Tˆ#Ñ
Ô
ð	 ð ˆtØ.Ð.Ð.ðFð
ñ 
ô 
÷ Š#�Tˆ#Ñ
Ô
ð	 ð ˆwðð
ñ 
ô 
÷ Š#�Tˆ#Ñ
Ô
ð €H€Hr   r   FÚBlackç      ð?c           
      óÚ  — t          | ¦  «        } t                               ¦   «         j        }|€|d         }||vrdS |dk    rt          }nþ|dk    rÖt
          }|                     d¦  «        r¹t          |¦  «        dk    r„	 d                     d 	                    d	„ t          j        |d
d…         d¦  «        D ¦   «         ¦  «        ¦  «        }nz# t          $ r(}t          d                     |¦  «        ¦  «        |‚d}~ww xY wt          d                     |¦  «        ¦  «        ‚n"t          d                     |¦  «        ¦  «        ‚ || |||¦  «        }	|r|	rt          |	¦  «        }	|	S )al  Render a LaTeX string to PNG.

    Parameters
    ----------
    s : str
        The raw string containing valid inline LaTeX.
    encode : bool, optional
        Should the PNG data base64 encoded to make it JSON'able.
    backend : {matplotlib, dvipng}
        Backend for producing PNG data.
    wrap : bool
        If true, Automatically wrap `s` as a LaTeX equation.
    color : string
        Foreground color name among dvipsnames, e.g. 'Maroon' or on hex RGB
        format, e.g. '#AA20FA'.
    scale : float
        Scale factor for the resulting PNG.
    None is returned when the backend cannot be used.

    Nr   r   r   ú#é   zRGB {}ú c                 óH   — g | ]}t          t          |d ¦  «        ¦  «        ‘Œ S )é   )ÚstrÚint)Ú.0Úxs     r   ú
<listcomp>z latex_to_png.<locals>.<listcomp>a   s8   € ð 6Sð 6Sð 6SÈ!µc½#¸aÀ¹*¼*±o´oð 6Sð 6Sð 6Sr   é   é   zInvalid color specification {}.zNo such backend {0})r   r   Úinstancer$   Úlatex_to_png_mplÚlatex_to_png_dvipngÚ
startswithÚlenÚformatÚjoinÚtextwrapÚwrapÚ
ValueErrorr   )
ÚsÚencodeÚbackendr@   ÚcolorÚscaleÚallowed_backendsÚfÚeÚbin_datas
             r   Úlatex_to_pngrK   =   s­  € õ, 	�Q‰Œ€AÝ ×)Ò)Ñ+Ô+Ô4ÐØ€Ø" 1Ô%ˆØÐ&Ð&Ð&ØˆtØ�,ÒÐÝˆˆØ	�HÒ	Ð	ÝˆØ×Ò˜CÑ Ô ð 		Rå�5‰zŒz˜QŠˆð]Ø$ŸOšO¨C¯HªHð 6Sð 6SÝ6>´mÀEÈ!È"È"ÄIÈqÑ6QÔ6Qð6Sñ 6Sô 6Sñ -Tô -Tñ Uô U�E�Eøå!ð ]ð ]ð ]Ý$Ð%F×%MÒ%MÈeÑ%TÔ%TÑUÔUÐ[\Ð\øøøøð]øøøõ !Ð!B×!IÒ!IÈ%Ñ!PÔ!PÑQÔQÐQð		Rõ Ð.×5Ò5°gÑ>Ô>Ñ?Ô?Ð?Øˆq��D˜% Ñ'Ô'€HØð )�(ð )Ý˜xÑ(Ô(ˆØ€Os   ÂAC Ã
DÃ#C=Ã=Dc                 ó”  — 	 ddl m}m}m} ddlm} ddlm} n# t          $ r Y d S w xY w|  	                    dd¦  «        } |rd 
                    | ¦  «        } 	 |                     d¬	¦  «        }	d
|z  }
t          ¦   «         }|                     d¦  «        }|                     | d|	¬¦  «        \  }}}}}|                     |dz  |dz  f¬¦  «        }|                     d||z  | |	|¬¦  «         |                     |¦  «         |                     ||
dd¬¦  «         |                     ¦   «         S # t(          t*          |f$ r Y d S w xY w)Nr   )ÚfigureÚfont_managerÚmathtext)Úbackend_agg)ÚParseFatalExceptionz$$ú$z${0}$é   )Úsizeéx   ÚpathéH   )ÚdpiÚprop)Úfigsize)ÚfontpropertiesrE   ÚpngT)rX   r=   Útransparent)r   rM   rN   rO   Úmatplotlib.backendsrP   Ú	pyparsingrQ   ÚImportErrorÚreplacer=   ÚFontPropertiesr   ÚMathTextParserÚparseÚFigureÚtextÚFigureCanvasAggÚsavefigÚgetvaluerA   ÚRuntimeError)rB   r@   rE   rF   rM   rN   rO   rP   rQ   rY   rX   ÚbufferÚparserÚwidthÚheightÚdepthÚ_Úfigs                     r   r9   r9   o   s¨  € ðØ=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ø3Ð3Ð3Ð3Ð3Ð3Ø1Ð1Ð1Ð1Ð1Ð1Ð1øÝð ð ð Øˆtˆtðøøøð 	
�	Š	�$˜ÑÔ€AØð Ø�OŠO˜AÑÔˆðØ×*Ò*°Ð*Ñ3Ô3ˆØ�E‰kˆÝ‘”ˆð ×(Ò(¨Ñ0Ô0ˆØ%+§\¢\°!¸À$ \Ñ%GÔ%GÑ"ˆˆv�u˜a Ø�mŠm U¨R¡Z°¸"±Ð$=ˆmÑ>Ô>ˆØ�Š��E˜F‘N A°dÀ%ˆÑHÔHÐHØ×#Ò# CÑ(Ô(Ð(Ø�Š�F ¨E¸tˆÑDÔDÐDØ�ŠÑ Ô Ð øÝ�Ð&9Ð:ð ð ð Øˆtˆtðøøøs   ‚ ™
'¦'ÁCD1 Ä1EÅEc                 ó˜  — 	 t          d¦  «         t          d¦  «         n# t          $ r Y d S w xY wd }t          j        dk    r-t	          j        ¦   «         }|xj        t          j        z  c_        	 t          t          j
        ¦   «         ¦  «        }d}d}d}|                     |¦  «                             dd¬	¦  «        5 }	|	                     t          | |¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        dd
dd|g|t          j        t          j        |¬¦  «         t#          d|z  ¦  «        }
t	          j        ddddt%          |
¦  «        ddddd||d|g|t          j        t          j        |¬¦  «         |                     |¦  «                             d¦  «        5 }	|	                     ¦   «         cd d d ¦  «         t)          j        |¦  «         S # 1 swxY w Y   n*# t          j        $ r Y t)          j        |¦  «         d S w xY w	 t)          j        |¦  «         d S # t)          j        |¦  «         w xY w)NÚlatexr   Úntztmp.texztmp.dviztmp.pngÚwÚutf8)Úencodingz-halt-on-errorz-interactionÚ	batchmode)ÚcwdÚstdoutÚstderrÚstartupinfoé–   z-TÚtightz-Dz-zÚ9z-bgÚTransparentz-oz-fgÚrb)r   r   ÚosÚnameÚ
subprocessÚSTARTUPINFOÚdwFlagsÚSTARTF_USESHOWWINDOWr   ÚtempfileÚmkdtempÚjoinpathr   Ú
writelinesÚ	genelatexÚ
check_callÚDEVNULLÚroundr1   ÚreadÚshutilÚrmtreeÚCalledProcessError)rB   r@   rE   rF   r|   ÚworkdirÚtmpfileÚdvifileÚoutfilerH   Ú
resolutions              r   r:   r:   �   sö  € ðÝ�ÑÔÐÝ�ÑÔÐÐøÝð ð ð Øˆtˆtðøøøð €KÝ	„w�$‚€å Ô,Ñ.Ô.ˆØÐÔ�zÔ>Ñ>ÐÔð.Ý•xÔ'Ñ)Ô)Ñ*Ô*ˆØˆØˆØˆà×Ò˜gÑ&Ô&×+Ò+¨C¸&Ð+ÑAÔAð 	-ÀQØ�LŠL� 1 dÑ+Ô+Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-õ 	ÔØÐ&¨¸ÀWÐMØÝÔ%ÝÔ%Ø#ð	
ñ 	
ô 	
ð 	
õ ˜3 ™;Ñ'Ô'ˆ
ÝÔàØØØÝ�J‘”ØØØØØØØØØðð  ÝÔ%ÝÔ%Ø#ð)	
ñ 	
ô 	
ð 	
ð. ×Ò˜gÑ&Ô&×+Ò+¨DÑ1Ô1ð 	°QØ—6’6‘8”8ð	ð 	ð 	ð 	ñ 	ô 	ð 	õ
 	Œ�gÑÔÐÐð	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	øåÔ(ð ð ð ØåŒ�gÑÔÐÐÐðøøøð	õ
 	Œ�gÑÔÐÐÐø�Œ�gÑÔÐÐøøøs€   ‚! ¡
/®/Á2AG2 Ã$C2Ã&G2 Ã2C6Ã6G2 Ã9C6Ã:B7G2 Æ1G&ÇG2 Ç&G*Ç*G2 Ç-G*Ç.G2 Ç1H3 Ç2HÈH3 ÈHÈH3 È3I	c                 ó  — 	 t          d¦  «         t          j        d| gt          j        t          j        ¬¦  «        }|                     ¦   «         \  }}|                     ¦   «                              dd¦  «        S # t          $ r Y dS w xY w)z5Invoke kpsewhich command with an argument `filename`.Ú	kpsewhich)rz   r{   rv   ra   N)r   r„   ÚPopenÚPIPEÚcommunicateÚstripÚdecoder   )ÚfilenameÚprocrz   r{   s       r   rš   rš   Ë   s•   € ðÝ�ÑÔÐÝÔØ˜(Ð#Ý”?­:¬?ð<ñ <ô <ˆð  ×+Ò+Ñ-Ô-Ñˆ�Ø�|Š|‰~Œ~×$Ò$ V¨YÑ7Ô7Ð7øÝð ð ð Øˆˆðøøøs   ‚A:A= Á=
BÂ
Bc              #   ó\  K  — t                                ¦   «         }|o|j        ot          d¦  «        }dV — |j        }|r|dgz   }|D ]}d                     |¦  «        V — ŒdV — |j        r	|j        V — dV — |rdV — | V — dV — n|rd	                     | ¦  «        V — n| V — d
V — dS )z+Generate LaTeX document for dvipng backend.z	breqn.styz\documentclass{article}Úbreqnz\usepackage{{{0}}}z\pagestyle{empty}z\begin{document}z\begin{dmath*}z\end{dmath*}z$${0}$$z\end{document}N)r   r8   r%   rš   r&   r=   r'   )Úbodyr@   Últr£   r&   Úpacks         r   rŒ   rŒ   Ø   s  è è € å	×	Ò	Ñ	Ô	€BØÐ<�R”\Ð<¥i°Ñ&<Ô&<€EØ
$Ð$Ð$Ð$ØŒ{€HØð (Ø˜w˜iÑ'ˆØð 1ð 1ˆØ#×*Ò*¨4Ñ0Ô0Ð0Ð0Ð0Ð0Ø
ÐÐÐØ	„{ð ØŒkÐÐÐØ
ÐÐÐØð ØÐÐÐØˆ
ˆ
ˆ
ØÐÐÐÐØ	ð Ø×Ò Ñ%Ô%Ð%Ð%Ð%Ð%àˆ
ˆ
ˆ
Ø
ÐÐÐÐÐr   z-<img src="data:image/png;base64,%s" alt=%s />Úimagec                 ój   — t          | d¬¦  «                             d¦  «        }|rt          ||fz  S dS )zÚRender LaTeX to HTML with embedded PNG data using data URIs.

    Parameters
    ----------
    s : str
        The raw string containing valid inline LateX.
    alt : str
        The alt text to use for the HTML.
    T)rC   ÚasciiN)rK   rŸ   Ú_data_uri_template_png)rB   ÚaltÚbase64_datas      r   Úlatex_to_htmlr­   ó   sF   € õ ˜q¨Ð.Ñ.Ô.×5Ò5°gÑ>Ô>€KØð <Ý%¨+°sÐ);Ñ;Ð;ð<ð <r   )FNFr)   r*   )r)   r*   )r§   )"r"   Úior   r   r‚   rˆ   r‘   r„   Úbase64r   r?   Úpathlibr   ÚIPython.utils.processr   r   Útraitlets.configr
   Útraitlets.config.configurabler   Ú	traitletsr   r   r   ÚIPython.utils.py3compatr   r   rK   r9   r:   rš   rŒ   rª   r­   r(   r   r   ú<module>r¶      sž  ðà Ð ð
 Ð Ð Ð Ð Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ð"ð "ð "ð "ð "Ð%ñ "ô "ð "ðJ CJØð/ð /ð /ð /ðdð ð ð ð<;ð ;ð ;ð ;ð|
ð 
ð 
ðð ð ð2 NÐ ð<ð <ð <ð <ð <ð <r   