
    Fe                       d Z ddlmZ ddlZddlmZmZmZ ddlm	Z	 ddl
Z
ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ erddlmZ ddlmZ dZe
j4                  j6                  j9                  e      ZddZddZ 	 	 	 	 ddZ!ddZ"y)zAllow `MathJax`_ to be used to display math in Sphinx's HTML writer.

This requires the MathJax JavaScript library on your webserver/computer.

.. _MathJax: https://www.mathjax.org/
    )annotationsN)TYPE_CHECKINGAnycast)nodes)StandaloneHTMLBuilder)
MathDomain)ExtensionError)_)get_node_equation_number)Sphinx)HTML5Translatorz;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.jsc                   | j                   j                  | j                  |ddd             | j                   j                  | j                  j                  j
                  d   | j                  |j                               z   | j                  j                  j
                  d   z   dz          t        j                  )Nspan math notranslate nohighlightCLASSr      </span>)
bodyappendstarttagbuilderconfigmathjax_inlineencodeastextr   SkipNode)selfnodes     4/usr/lib/python3/dist-packages/sphinx/ext/mathjax.pyhtml_visit_mathr#   !   s    IIT]]4;Y]Z[IIT\\((77:[[/0\\((77:;=FG H ..    c                   | j                   j                  | j                  |dd             |d   rc| j                   j                  | j                  |j	                                      | j                   j                  d       t
        j                  |d   r`t        | |      }| j                   j                  d|z         | j                  |t        d             | j                   j                  d	       | j                   j                  | j                  j                  j                  d
          |j	                         j                  d      D cg c]  }|j                         s| }}t        |      dkD  r| j                   j                  d       t!        |      D ]  \  }}| j                  |      }d|v r"| j                   j                  d|z   dz          n| j                   j                  |       |t        |      dz
  k  sj| j                   j                  d        t        |      dkD  r| j                   j                  d       | j                   j                  | j                  j                  j                  d          | j                   j                  d       t
        j                  c c}w )Ndivr   r   nowrapz</div>numberz<span class="eqno">(%s)zLink to this equationr   r   z

r   z \begin{align}\begin{aligned}z\\z\begin{split}z\end{split}z\end{aligned}\end{align} z</div>
)r   r   r   r   r   r   r   r   add_permalink_refr   r   r   mathjax_displaysplitstriplen	enumerate)r    r!   r(   prtpartsiparts          r"   html_visit_displaymathr3   )   s   IIT]]46T]UVH~		T[[]34		"nn H~)$5		2V;<tQ'>%?@		#IIT\\((88;< KKM//7GS399;SGEG
5zA~		9:U# $4{{4 D=II-4~EFIIT"s5zA~IIU#$ 5zA~		56IIT\\((88;<IIZ 
.. Hs   J?.J?c                b   | j                   j                  dk7  s| j                   j                  dk7  ry | j                  j                  sd}t        |      t        t        | j                  j                  d            }t        t        | j                         }| j                  j                  dk(  s|j                  |      rk| j                  j                  rr| j                  j                  t        k(  rt         j#                  d       dt%        j&                  | j                  j                        z  }|j)                  dd	|
       | j                  j*                  r?dt%        j&                  | j                  j*                        z  }|j)                  d|       i }	| j                  j,                  r%|	j/                  | j                  j,                         d|	vr%d|	vr!| j                  j*                  rd|	d<   nd|	d<    |j(                  | j                  j                  fi |	 y y )NhtmlmathjaxzGmathjax_path config value must be set for the mathjax extension to workmathalwayszimathjax_config/mathjax2_config does not work for the current MathJax version, use mathjax3_config insteadzMathJax.Hub.Config(%s)r   ztext/x-mathjax-config)typer   zwindow.MathJax = %s)r   asyncdefer)r   formatmath_renderer_namer   mathjax_pathr
   r   r	   env
get_domainr   registryhtml_assets_policyhas_equationsmathjax2_configMATHJAX_URLloggerwarningjsondumpsadd_js_filemathjax3_configmathjax_optionsupdate)
apppagenametemplatenamecontext	event_argmsgdomainr   r   optionss
             r"   install_mathjaxrV   I   s    	f$&&)3::""WS!!*cgg0089F(#++6G
||&&(2f6J6J86T::%%zz&&+5ST ,djj9S9S.TTD)@tL::%%(4::cjj6P6P+QQD.::%%NN3::556'!gW&<zz))#*  $+ CJJ33?w?/ 7Ur$   c                   | j                  dt        d ft        d f       | j                  dt        d       | j                  di d       | j                  dddgd       | j                  dd	d
gd       | j                  dd d       | j                  dd d       | j                  dd d       | j                  dt               t        j                  ddS )Nr6   r>   r5   rL   r   z\(z\)r*   z\[z\]mathjax_configrD   c                    | j                   S )N)rX   )cs    r"   <lambda>zsetup.<locals>.<lambda>z   s    a6F6F r$   rK   zhtml-page-contextT)versionparallel_read_safe)	add_html_math_rendererr#   r3   add_config_valuerE   connectrV   sphinx__display_version__)rN   s    r"   setuprc   p   s    y /6 6=? f=*B7)E5>6B*UENFC)48*,FO*D&9KK#_511NNr$   )r    r   r!   z
nodes.mathreturnNone)r    r   r!   znodes.math_blockrd   re   )rN   r   rO   strrP   rf   rQ   dict[str, Any]rR   r   rd   re   )rN   r   rd   rg   )#__doc__
__future__r   rH   typingr   r   r   docutilsr   ra   sphinx.builders.htmlr   sphinx.domains.mathr	   sphinx.errorsr
   sphinx.localer   sphinx.util.mathr   sphinx.applicationr   sphinx.writers.htmlr   rE   utillogging	getLogger__name__rF   r#   r3   rV   rc    r$   r"   <module>rx      s    #  + +   6 * (  5)3 L				&	&x	0@$@"$@'+$@NOr$   