B
    ]t\O                 @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlZd dl	m
Z
 d dlmZ de
d< edZG d	d
 d
ejejZdd ZdeiZi g fddZee_dd ZdddZdd Zdd ZdS )    N)nodes)
directives)rcParams)MathTextParsercmzmathtext.fontsetZBitmapc               @   s   e Zd ZdS )
latex_mathN)__name__
__module____qualname__ r   r   ;lib/python3.7/site-packages/matplotlib/sphinxext/mathmpl.pyr      s   r   c             C   s   t | dddgS )Nr   ZstixZstixsans)r   Zchoice)argr   r   r   fontset_choice   s    r   fontsetc       
      C   sD   | d}||d d }t|}	||	d< |dd|	d< |	gg fS )N`   latexr   r   )findr   get)
ZroleZrawtexttextlinenoZinlineroptionscontentir   noder   r   r   	math_role   s    
r   c	             C   s0   d |}	t|}
|	|
d< |dd|
d< |
gS )N r   r   r   )joinr   r   )nameZ	argumentsr   r   r   Zcontent_offsetZ
block_textstateZstate_machiner   r   r   r   r   math_directive"   s
    
r!   c             C   s   d|  } t d }|t d< tj|r4tj| dd}n:ytj|| dd}W n$   tjd|  t	dd d}Y nX |t d< t
jd	 t
j  |S )
Nz$%s$zmathtext.fontsetd   )Zdpiz#Could not render math expression %s   )
stacklevelr   #)r   ospathexistsmathtext_parserZ	get_depthZto_pngwarningswarnWarningsysstdoutwriteflush)r   filenamer   Zorig_fontsetdepthr   r   r   	latex2png+   s    



r3   c             C   s   t | jtj}| d }dt|  dd   }tj	
tjjjdd}tj	|s`t| tj	
|d| }d
tjjjdf}t||| d }|rd	}	nd
}	|r|dkrd|d  }
nd	}
d|||	|
f S )Nr   zmath-%siZ_imagesmathmplz%s.png/r   r   zclass="center" r   z)style="position: relative; bottom: -%dpx"r   z<img src="%s/%s.png" %s%s/>)
isinstanceparentr   TextElementhashlibZmd5encodeZ	hexdigestr&   r'   r   setupappZbuilderZoutdirr(   makedirsZimgpathr3   )r   sourceinliner   r   Zdestdirdestr'   r2   clsZstyler   r   r   
latex2html>   s     
rB   c             C   s   | t _dd }dd }dd }dd }| jt||f||fd	 | d
t | jd
tddft t	j
dk r| dt | jdtddft ddd}|S )Nc             S   s"   | j jd }| jt|| d S )Nr>   )ZdocumentZ
attributesbodyappendrB   )selfr   r>   r   r   r   visit_latex_math_html[   s    z$setup.<locals>.visit_latex_math_htmlc             S   s   d S )Nr   )rE   r   r   r   r   depart_latex_math_html_   s    z%setup.<locals>.depart_latex_math_htmlc             S   sB   t |jtj}|r(| jd|d   n| jd|d dg d S )Nz$%s$r   z\begin{equation}z\end{equation})r6   r7   r   r8   rC   rD   extend)rE   r   r?   r   r   r   visit_latex_math_latexc   s    z%setup.<locals>.visit_latex_math_latexc             S   s   d S )Nr   )rE   r   r   r   r   depart_latex_math_latexl   s    z&setup.<locals>.depart_latex_math_latex)Zhtmlr   r4   T)r   r   r   )r      Zmath)Zparallel_read_safeZparallel_write_safe)r;   r<   Zadd_noder   Zadd_roler   Zadd_directiver!   options_specsphinxversion_info)r<   rF   rG   rI   rJ   Zmetadatar   r   r   r;   W   s"    	

r;   )r   )r9   r&   r-   r*   Zdocutilsr   Zdocutils.parsers.rstr   rM   Z
matplotlibr   Zmatplotlib.mathtextr   r)   ZGeneralZElementr   r   rL   r   r   r!   r3   rB   r;   r   r   r   r   <module>   s&   	
