§
    ‡Ûg$  ã                   ó  — d Z ddlZddlmZ ddlmZ ddlmZmZ ddl	Z	ddl
mZmZ ddlZddlmZmZ ddlmZ  G d	„ d
ej        ej        ¦  «        Zd„ Zi g fd„Zeedœe_         G d„ de¦  «        Zdd„Zd„ Zd„ Zd„ ZdS )aš  
A role and directive to display mathtext in Sphinx
==================================================

.. warning::
    In most cases, you will likely want to use one of `Sphinx's builtin Math
    extensions
    <https://www.sphinx-doc.org/en/master/usage/extensions/math.html>`__
    instead of this one.

Mathtext may be included in two ways:

1. Inline, using the role::

     This text uses inline math: :mathmpl:`\alpha > \beta`.

   which produces:

     This text uses inline math: :mathmpl:`\alpha > \beta`.

2. Standalone, using the directive::

     Here is some standalone math:

     .. mathmpl::

         \alpha > \beta

   which produces:

     Here is some standalone math:

     .. mathmpl::

         \alpha > \beta

Options
-------

The ``mathmpl`` role and directive both support the following options:

    fontset : str, default: 'cm'
        The font set to use when displaying math. See :rc:`mathtext.fontset`.

    fontsize : float
        The font size, in points. Defaults to the value from the extension
        configuration option defined below.

Configuration options
---------------------

The mathtext extension has the following configuration options:

    mathmpl_fontsize : float, default: 10.0
        Default font size, in points.

    mathmpl_srcset : list of str, default: []
        Additional image sizes to generate when embedding in HTML, to support
        `responsive resolution images
        <https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images>`__.
        The list should contain additional x-descriptors (``'1.5x'``, ``'2x'``,
        etc.) to generate (1x is the default and always included.)

é    N)ÚPath)Únodes)Ú	DirectiveÚ
directives)ÚConfigErrorÚExtensionError)Ú_apiÚmathtext)Úvalidate_float_or_Nonec                   ó   — e Zd ZdS )Ú
latex_mathN)Ú__name__Ú
__module__Ú__qualname__© ó    úR/granary/edev/quantum/lib/python3.11/site-packages/matplotlib/sphinxext/mathmpl.pyr   r   P   s   € € € € € Ø€Dr   r   c                 óJ   — t          j        | t          j        j        ¦  «        S ©N)r   Úchoicer
   ÚMathTextParserÚ_font_type_mapping)Úargs    r   Úfontset_choicer   T   s   € ÝÔ˜S¥(Ô"9Ô"LÑMÔMÐMr   c                 ó  — |                      d¦  «        }||dz   d…         }t          |¦  «        }	||	d<   |                     dd¦  «        |	d<   |                     dt          j        j        j        ¦  «        |	d<   |	gg fS )Nú`é   éÿÿÿÿÚlatexÚfontsetÚcmÚfontsize)Úfindr   ÚgetÚsetupÚappÚconfigÚmathmpl_fontsize)
ÚroleÚrawtextÚtextÚlinenoÚinlinerÚoptionsÚcontentÚir   Únodes
             r   Ú	math_roler2   X   s„   € à�Š�SÑÔ€AØ�A�a‘C˜�FŒO€EÝ�gÑÔ€DØ€Dˆ�MØ—k’k )¨TÑ2Ô2€Dˆ�OØ—{’{ :Ý#(¤9Ô#3Ô#DñFô F€DˆÑàˆ6�2ˆ:Ðr   ©r    r"   c                   ó2   — e Zd ZdZdZdZdZdZee	dœZ
d„ ZdS )ÚMathDirectivezR
    The ``.. mathmpl::`` directive, as documented in the module's docstring.
    Tr   Fr3   c                 ó  — d                      | j        ¦  «        }t          | j        ¦  «        }||d<   | j                             dd¦  «        |d<   | j                             dt          j        j        j	        ¦  «        |d<   |gS )NÚ r   r    r!   r"   )
Újoinr/   r   Ú
block_textr.   r$   r%   r&   r'   r(   )Úselfr   r1   s      r   ÚrunzMathDirective.runq   sz   € Ø—’˜œÑ%Ô%ˆÝ˜$œ/Ñ*Ô*ˆØˆˆW‰Øœ,×*Ò*¨9°dÑ;Ô;ˆˆY‰Øœ<×+Ò+¨JÝ,1¬IÔ,<Ô,MñOô OˆˆZÑàˆvˆr   N)r   r   r   Ú__doc__Úhas_contentÚrequired_argumentsÚoptional_argumentsÚfinal_argument_whitespacer   r   Úoption_specr;   r   r   r   r5   r5   f   sX   € € € € € ðð ð €KØÐØÐØ %ÐØ,Ø5ð7ð 7€Kðð ð ð ð r   r5   r!   é
   éd   c                 óò   — t          j        ||dœ¦  «        5  	 t          j        d| › d�||d¬¦  «        }n)# t          $ r t          j        d| › �¦  «         d}Y nw xY wd d d ¦  «         n# 1 swxY w Y   |S )N)zmathtext.fontsetz	font.sizeú$Úpng)ÚdpiÚformatz!Could not render math expression r   )ÚmplÚ
rc_contextr
   Úmath_to_imageÚ	Exceptionr	   Úwarn_external)r   Úfilenamer    r"   rG   Údepths         r   Ú	latex2pngrP   |   sã   € Ý	Œ¨WÀ8ÐLÐLÑ	MÔ	Mð ð ð	ÝÔ*Ø�E���˜h¨C¸ð?ñ ?ô ?ˆEˆEøåð 	ð 	ð 	ÝÔÐJÀ5ÐJÐJÑKÔKÐKØˆEˆEˆEð	øøøð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð €Ls1   ˜A,š7¶A,·#AÁA,ÁAÁA,Á,A0Á3A0c                 óê  — t          | j        t          j        ¦  «        }| d         }| d         }| d         }d                     t          j        |› |› |› �                     ¦   «         ¦  «                             ¦   «         dd …         ¦  «        }t          t          j        j        j        dd¦  «        }|                     dd¬	¦  «         ||› d
�z  }t          ||||¬¦  «        }	g }
t          j        j        j        D ]~}|› d|                     dd¦  «        › d
�}t          |||z  ||dt'          |d d…         ¦  «        z  ¬¦  «         |
                     t          j        j        j        › d|› d|› �¦  «         Œ|
r6dt          j        j        j        › d|› d�d                     |
¦  «        z   dz   }
|rd}nd}|r|	dk    r	d|	dz   z  }nd}dt          j        j        j        › d|› d|
› |› |› d�	S ) Nr   r    r"   zmath-{}iöÿÿÿÚ_imagesÚmathmplT)ÚparentsÚexist_okz.png)r"   ú-ú.Ú_rC   r   )r"   rG   z	/mathmpl/ú zsrcset="z.png, z, z" r7   zclass="center" r   z)style="position: relative; bottom: -%dpx"r   z
<img src="z.png" z/>)Ú
isinstanceÚparentr   ÚTextElementrH   ÚhashlibÚmd5ÚencodeÚ	hexdigestr   r%   r&   ÚbuilderÚoutdirÚmkdirrP   r'   Úmathmpl_srcsetÚreplaceÚfloatÚappendÚimgpathr8   )r1   ÚsourceÚinliner   r    r"   ÚnameÚdestdirÚdestrO   ÚsrcsetÚsizerN   ÚclsÚstyles                  r   Ú
latex2htmlrr   ˆ   sg  € Ý˜œ¥UÔ%6Ñ7Ô7€FØ�ŒM€EØ�9Œo€GØ�JÔ€HØ×ÒÝŒ�uÐ1˜gÐ1 xÐ1Ð1×8Ò8Ñ:Ô:Ñ;Ô;×EÒEÑGÔGÈÈÈÔMñOô O€Dõ •5”9Ô$Ô+¨Y¸	ÑBÔB€GØ‡M‚M˜$¨€MÑ.Ô.Ð.à˜�]�]�]Ñ"€DÝ�e˜T 7°XÐ>Ñ>Ô>€Eà€FÝ”	Ô Ô/ð Fð FˆØÐ9Ð9˜TŸ\š\¨#¨sÑ3Ô3Ð9Ð9Ð9ˆÝ�%˜ 8Ñ+¨W¸xØ�E $ s¨ s¤)Ñ,Ô,Ñ,ð	.ñ 	.ô 	.ð 	.à�ŠÝŒyÔ Ô(ÐDÐD°8ÐDÐD¸dÐDÐDñ	Fô 	Fð 	Fð 	Fàð ,ØM�UœYÔ.Ô6ÐMÐMÀÐMÐMÐMØ—)’)˜FÑ#Ô#ñ$Ø&*ñ+ˆð ð  ØˆˆàˆØð �%˜1’*�*Ø;¸uÀq¹yÑIˆˆàˆð'�œÔ*Ô2ð 'ð '¸Tð 'ð 'Øð'Øð'Ø"ð'ð 'ð 'ð (r   c                 óô   — t          | j        j        ¦  «        D ]]\  }}|d         dk    r:	 t          |d d…         ¦  «         Œ*# t          $ r t          d|›d�¦  «        ‚w xY wt          d|›d�¦  «        ‚d S )Nr   Úxz,Invalid value for mathmpl_srcset parameter: ze. Must be a list of strings with the multiplicative factor followed by an "x".  e.g. ["2.0x", "1.5x"])Ú	enumerater'   rd   rf   Ú
ValueErrorr   )r&   r'   r0   ro   s       r   Ú_config_initedrw   ®   sÛ   € å˜SœZÔ6Ñ7Ô7ð Eð E‰ˆˆ4Ø�Œ8�sŠ?ˆ?ðIÝ�d˜3˜B˜3”iÑ Ô Ð Ð øÝð Ið Ið IÝ!ðHÀ4ð Hð Hð HñIô Ið IðIøøøõ ðD¸tð Dð Dð DñEô Eð EðEð Es   ¬AÁA"c                 ó^  — | t           _        |                      ddd¦  «         |                      dg d¦  «         	 |                      dt          ¦  «         n'# t
          $ r |                      dd„ ¦  «         Y nw xY wd„ }d	„ }d
„ }d„ }|                      t          ||f||f¬¦  «         |                      dt          ¦  «         |  
                    dt          ¦  «         t          j        dk     r6|                      dt          ¦  «         |  
                    dt          ¦  «         dddœ}|S )Nr(   g      $@Trd   zconfig-initedzenv-updatedc                 ó"   — t          | d ¦  «        S r   )rw   )r&   Úenvs     r   ú<lambda>zsetup.<locals>.<lambda>Ç   s   € µNÀ3ÈÑ4MÔ4M€ r   c                 óz   — | j         j        d         }| j                             t	          ||¦  «        ¦  «         d S )Nri   )ÚdocumentÚ
attributesÚbodyrg   rr   )r:   r1   ri   s      r   Úvisit_latex_math_htmlz$setup.<locals>.visit_latex_math_htmlÊ   s7   € Ø”Ô)¨(Ô3ˆØŒ	×Ò� D¨&Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2r   c                 ó   — d S r   r   ©r:   r1   s     r   Údepart_latex_math_htmlz%setup.<locals>.depart_latex_math_htmlÎ   ó   € Øˆr   c                 óØ   — t          |j        t          j        ¦  «        }|r%| j                             d|d         z  ¦  «         d S | j                             d|d         dg¦  «         d S )Nz$%s$r   z\begin{equation}z\end{equation})rZ   r[   r   r\   r   rg   Úextend)r:   r1   rj   s      r   Úvisit_latex_math_latexz%setup.<locals>.visit_latex_math_latexÒ   sy   € Ý˜DœK­Ô):Ñ;Ô;ˆØð 	2ØŒI×Ò˜V d¨7¤mÑ3Ñ4Ô4Ð4Ð4Ð4àŒI×ÒÐ1Ø" 7œmØ/ð1ñ 2ô 2ð 2ð 2ð 2r   c                 ó   — d S r   r   r‚   s     r   Údepart_latex_math_latexz&setup.<locals>.depart_latex_math_latexÛ   r„   r   )Úhtmlr   rS   )r   é   Úmath)Úparallel_read_safeÚparallel_write_safe)r%   r&   Úadd_config_valueÚconnectrw   r   Úadd_noder   Úadd_roler2   Úadd_directiver5   ÚsphinxÚversion_info)r&   r€   rƒ   r‡   r‰   Úmetadatas         r   r%   r%   À   s{  € Ø…E„IØ×ÒÐ+¨T°4Ñ8Ô8Ð8Ø×ÒÐ)¨2¨tÑ4Ô4Ð4ðOØ�Š�O¥^Ñ4Ô4Ð4Ð4øÝð Oð Oð OØ�Š�MÐ#MÐ#MÑNÔNÐNÐNÐNðOøøøð3ð 3ð 3ðð ð ð2ð 2ð 2ðð ð ð ‡L‚L•Ø,Ð.DÐEØ.Ð0GÐHð ñ Jô Jð Jð ‡L‚L��IÑ&Ô&Ð&Ø×Ò�i¥Ñ/Ô/Ð/ÝÔ˜VÒ#Ð#Ø�Š�V�YÑ'Ô'Ð'Ø×Ò˜&¥-Ñ0Ô0Ð0à&*À4ÐHÐH€HØ€Os   ¼A Á!A<Á;A<)r!   rB   rC   )r<   r]   Úpathlibr   Údocutilsr   Údocutils.parsers.rstr   r   r”   Úsphinx.errorsr   r   Ú
matplotlibrI   r	   r
   Úmatplotlib.rcsetupr   ÚGeneralÚElementr   r   r2   r.   r5   rP   rr   rw   r%   r   r   r   ú<module>rŸ      s›  ðð?ð ?ðB €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ð	ð 	ð 	ð 	ð 	�” ¤ñ 	ô 	ð 	ðNð Nð Nð
  "ð	ð 	ð 	ð 	ð !/Ø!7ð9ð 9€	Ô ðð ð ð ð �Iñ ô ð ð,ð ð ð ð#(ð #(ð #(ðLEð Eð Eð$(ð (ð (ð (ð (r   