U
    [ªShh  ã                   @   sT   d Z ddlZdZddd„Zddd„Zdd	d
„Zddd„ZedkrPdZe	eeƒƒ dS )zšWrappers for TeX->MathML conversion by external tools

This module is provisional:
the API is not settled and may change with any minor Docutils version.
é    NzP\documentclass{article}
\usepackage{amsmath}
\begin{document}
%s
\end{document}
c           
      C   s4  t jdddddgt jt jt jdd}|j t|   d¡¡ |j ¡  |j 	¡ }|j
 	¡  d¡}|r~| d	¡d
kst|s~| |¡ t jdddddgt jt jt jdd}|j |¡ |j ¡  |j 	¡  d¡}|j
 	¡  d¡}|rø| d	¡d
ksî|sø| |¡ | d¡| d¡d  }}	|||	… }d|kr0t|ƒ‚|S )zdConvert LaTeX math code to MathML with LaTeXML_

    .. _LaTeXML: http://dlmf.nist.gov/LaTeXML/
    Úlatexmlú-z--preload=amsfontsz--preload=amsmathz--inputencoding=utf8T©ÚstdinÚstdoutÚstderrÚ	close_fdsúutf-8ÚErrorr   Zlatexmlpostz--nonumbersectionsz--format=xhtmlz--ú<mathú</math>é   zclass="ltx_ERROR)Ú
subprocessÚPopenÚPIPEr   ÚwriteÚdocument_templateÚencodeÚcloser   Úreadr   ÚdecodeÚfindÚerrorÚSyntaxError)
Ú	math_codeÚreporterÚpZlatexml_codeZlatexml_errZpost_pÚresultZ
post_p_errÚstartÚend© r    úX/root/rtd-docs/venv/lib/python3.8/site-packages/docutils/utils/math/tex2mathml_extern.pyr      sN    ü÷



ûö


r   c                 C   sÒ   t jdddgt jt jt jdd}|j t|   d¡¡ |j ¡  |j 	¡ }|j
 	¡  d¡}| d¡dkrŒd	 d
d„ | ¡ D ƒ¡}td| ƒ‚|rž| d¡dks¢|s¬| |¡ | d¡| d¡d  }}|||… S )zgConvert LaTeX math code to MathML with TtM_

    .. _TtM: http://hutchinson.belmont.ma.us/tth/mml/
    Úttmz-uz-rTr   r	   z**** Unknownr   Ú
c                 s   s   | ]}|  d ¡r|V  qdS )z****N)Ú
startswith)Ú.0Úliner    r    r!   Ú	<genexpr>_   s    
ÿzttm.<locals>.<genexpr>z&
Message from external converter TtM:
ú
**** Errorr   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   ÚjoinÚ
splitlinesr   r   )r   r   r   r   ÚerrÚmsgr   r   r    r    r!   r"   L   s(    ýø	


r"   Tc              
   C   s  dddddddddd	g
}|r"d
}nd}|  d¡ tjdg| tjtjtjdd}|j |  d¡¡ |j ¡  |j 	¡  
d¡}|j 	¡  
d¡}| d¡dkrÂ|| d¡d | d¡… }td| ƒ‚|râ| d¡dksØ|sâ| |¡ | d¡d | d¡ }	}
d|||	|
… f }|S )zlConvert LaTeX math code to MathML with blahtexml_

    .. _blahtexml: http://gva.noekeon.org/blahtexml/
    ú--mathmlz
--indentedz	--spacingZmoderatez--mathml-encodingÚrawz--other-encodingz--doctype-xhtml+mathmlz--annotate-TeXÚ z display="block"z--displaymathÚ	blahtexmlTr   r	   z<error>r   z	<message>é	   z
</message>z.
Message from external converter blahtexml:
%sr(   z<markup>z	</markup>z><math xmlns="http://www.w3.org/1998/Math/MathML"%s>
%s</math>
)Úappendr   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   Úinliner   ÚoptionsZmathmode_argr   r   r+   r,   r   r   r    r    r!   r0   h   sJ       ú
ü
ÿ
ÿr0   c                 C   sÀ   t jdddgt jt jt jdd}|j |  d¡¡ |j ¡  |j ¡  	d¡}|j
 ¡  	d¡ ¡ }| ¡ }|r†|rz| |¡ td| ƒ‚|dkrštd	| ƒ‚| d
¡| d¡d  }}|||… S )zXConvert LaTeX math code to MathML with pandoc_

    .. _pandoc: https://pandoc.org/
    Úpandocr-   z--from=latexTr   r	   z1
Error message from external converter pandoc:
%sr   z.
Error code from external converter pandoc:
%sr   r   r   )r   r   r   r   r   r   r   r   r   r   r   ÚstripÚwaitr   r   r   )r   r   r   r   r+   Úxr   r   r    r    r!   r5   ‘   s4    þù

ÿÿr5   Ú__main__uR   \frac{\partial \sin^2(\alpha)}{\partial \vec r}\varpi \mathbb{R} \, \text{GrÃ¼ÃŸe})N)N)TN)N)
Ú__doc__r   r   r   r"   r0   r5   Ú__name__ÚexampleÚprintr    r    r    r!   Ú<module>   s   
0

)
"