U
    \Sh>                     @  s   d Z ddlmZ ddlZddl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 ddlmZ dZe	jjeZddddddZddddddZdddddddddZdddddZdS ) 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)Anycast)nodes)Sphinx)
MathDomain)ExtensionError)_)get_node_equation_number)HTML5Translatorz;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.jsr   z
nodes.mathNone)selfnodereturnc                 C  sZ   | j | j|dddd | j | jjjd | |  | jjjd  d  tj	d S )Nspan math notranslate nohighlightZCLASSr      </span>)
bodyappendstarttagbuilderconfigmathjax_inlineencodeastextr   SkipNode)r   r    r   E/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/ext/mathjax.pyhtml_visit_math   s    r!   znodes.math_blockc                 C  sv  | j | j|ddd |d rH| j | |  | j d tj|d rt| |}| j d|  | |t	d | j d	 | j | j
jjd
  dd | dD }t|dkr| j d t|D ]Z\}}| |}d|kr| j d| d  n| j | |t|d k r| j d qt|dkrJ| j d | j | j
jjd  | j d tjd S )Ndivr   r   Znowrapz</div>numberz<span class="eqno">(%s)zPermalink to this equationr   r   c                 S  s   g | ]}|  r|qS r   )strip).0Zprtr   r   r    
<listcomp>4   s      z*html_visit_displaymath.<locals>.<listcomp>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
   Zadd_permalink_refr	   r   r   mathjax_displaysplitlen	enumerate)r   r   r#   partsipartr   r   r    html_visit_displaymath&   s4    


r.   r   strzdict[str, Any]r   )apppagenametemplatenamecontext	event_argr   c                 C  s  | j jdks| j jdkrd S | jjs,tdtt| j	d}| j
jdksV||r| jjr| jjtkrttd dt| jj }| jd d|d	 | jjrd
t| jj }| jd |d i }| jjr|| jj d|krd|kr| jjrd|d< nd|d< | j| jjf| d S )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)ztext/x-mathjax-config)typer   zwindow.MathJax = %s)r   asyncZdefer)r   formatZmath_renderer_namer   mathjax_pathr   r   r   envZ
get_domainregistryZhtml_assets_policyZhas_equationsmathjax2_configMATHJAX_URLloggerwarningjsondumpsZadd_js_filemathjax3_configmathjax_optionsupdate)r0   r1   r2   r3   r4   domainr   optionsr   r   r    install_mathjaxF   s6    


rJ   )r0   r   c                 C  s   |  dtd ftd f | dtd | di d | dddgd | dd	d
gd | dd d | ddd d | dd d | dt tjddS )Nr6   r<   r5   rF   r   z\(z\)r'   z\[z\]mathjax_configr?   c                 S  s   | j S )N)rK   )cr   r   r    <lambda>v       zsetup.<locals>.<lambda>rE   zhtml-page-contextT)versionZparallel_read_safe)	Zadd_html_math_rendererr!   r.   Zadd_config_valuer@   connectrJ   sphinxZ__display_version__)r0   r   r   r    setupl   s    rR   ) __doc__
__future__r   rC   typingr   r   Zdocutilsr   rQ   Zsphinx.applicationr   Zsphinx.domains.mathr   Zsphinx.errorsr   Zsphinx.localer	   Zsphinx.util.mathr
   Zsphinx.writers.htmlr   r@   utillogging	getLogger__name__rA   r!   r.   rJ   rR   r   r   r   r    <module>   s"    &