o
    >Di                     @  sr   d 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	 e
eZG dd dZG d	d
 d
ee	Zdd ZdS )z
LaTeX renderer
    )annotationsN)Iterable)MarkoExtension)Rendererc                      s  e Zd ZU dZded<  fddZ fddZ fdd	Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 ZedDd;d<Z edEdFdBdCZ!  Z"S )GLatexRendererMixin+Render the parsed Markdown to LaTeX format.zset[str]	_packagesc                   s   t    t | _d S N)super__init__setr   self	__class__ Q/var/www/Datamplify/venv/lib/python3.10/site-packages/marko/ext/latex_renderer.pyr         
zLatexRendererMixin.__init__c                   s   | j  | _t  S r	   )r   copy_packages_backr
   	__enter__r   r   r   r   r      s   
zLatexRendererMixin.__enter__c                   s   | j | _t j|  d S r	   )r   r   r
   __exit__)r   argsr   r   r   r      s   zLatexRendererMixin.__exit__c                 C  sB   |  |}dg}|dd | jD  || d| d|S )Nz\documentclass{article}c                 s  s    | ]	}d | dV  qdS )z\usepackage{}Nr   ).0pr   r   r   	<genexpr>'       z5LatexRendererMixin.render_document.<locals>.<genexpr>document
)render_childrenextendr   append_environmentjoin)r   elementchildrenitemsr   r   r   render_document!   s
   

z"LatexRendererMixin.render_documentc                 C  s   |  |}|jr
|S | dS Nr   )r    _tightr   r%   r&   r   r   r   render_paragraph,   s   
z#LatexRendererMixin.render_paragraphc                 C     dS r)   r   r   r%   r   r   r   render_blank_line0      z$LatexRendererMixin.render_blank_linec                 C  s   |j rdS dS )Nr   z\\
)softr.   r   r   r   render_line_break3      z$LatexRendererMixin.render_line_breakc                 C  s>   |  |}|jr
dnd}|jr|jdkrtd | ||S )N	enumerateitemize   z9Setting the starting number of the list is not supported!)r    orderedstart_loggerwarningr#   )r   r%   r&   envr   r   r   render_list6   s
   

zLatexRendererMixin.render_listc                 C     |  |}d| dS )Nz\item r   r    r+   r   r   r   render_list_item>   r   z#LatexRendererMixin.render_list_itemc                 C  s"   | j d | |}| d|S )Ncsquotesdisplayquote)r   addr    r#   r+   r   r   r   render_quoteB   s   
zLatexRendererMixin.render_quotec                 C  s6   | j d | |j}| d|jd jd| gS )Nlistings
lstlistingr   z	language=)r   rB   _escape_latexlangr#   r&   )r   r%   languager   r   r   render_fenced_codeG   s
   z%LatexRendererMixin.render_fenced_codec                 C  s   |  d|jd jS )Nverbatimr   )r#   r&   r.   r   r   r   render_code_blockN   s   z$LatexRendererMixin.render_code_blockc                 C  r-   )Nz \noindent\rule{\textwidth}{1pt}
r   r.   r   r   r   render_thematic_breakQ   r0   z(LatexRendererMixin.render_thematic_breakc                 C  s6   |  |}g d}||jd  d }d| d| dS )N)partsection
subsectionsubsubsection	paragraphsubparagraphr6   *\{}
)r    level)r   r%   r&   headersheaderr   r   r   render_headingT   s   
z!LatexRendererMixin.render_headingc                 C  
   |  |S r	   )rZ   r.   r   r   r   render_setext_headinga      
z(LatexRendererMixin.render_setext_headingc                 C  r=   )Nz\textit{r   r>   r+   r   r   r   render_emphasisd   r   z"LatexRendererMixin.render_emphasisc                 C  r=   )Nz\textbf{r   r>   r+   r   r   r   render_strong_emphasish   r   z)LatexRendererMixin.render_strong_emphasisc                 C  s   |  |j}d| dS )Nz\texttt{r   rF   r&   r+   r   r   r   render_code_spanl   s   z#LatexRendererMixin.render_code_spanc                 C  s.   |j rtd | |}d|j d| dS )Nz+Setting a title for links is not supported!z\href{z}{r   )titler9   r:   r    dest)r   r%   bodyr   r   r   render_linkp   s   

zLatexRendererMixin.render_linkc                 C  s   d|j  dS )Nz\url{r   )rc   r.   r   r   r   render_auto_linkv   r3   z#LatexRendererMixin.render_auto_linkc                 C  r-   )N r   r.   r   r   r   render_link_ref_defy   r0   z&LatexRendererMixin.render_link_ref_defc                 C  s   | j d d|j dS )Ngraphicxz\includegraphics{r   )r   rB   rc   r.   r   r   r   render_image|   s   zLatexRendererMixin.render_imagec                 C     t d dS Nz Rendering HTML is not supported!rg   r9   r:   r.   r   r   r   render_html_block      
z$LatexRendererMixin.render_html_blockc                 C  rk   rl   rm   r.   r   r   r   render_inline_html   ro   z%LatexRendererMixin.render_inline_htmlc                 C  r[   r	   )render_raw_textr.   r   r   r   render_literal   r]   z!LatexRendererMixin.render_literalc                 C  s   |  |jS r	   r`   r.   r   r   r   rq         z"LatexRendererMixin.render_raw_texttextstrreturnc                   s2   ddddddddd	d
d
 d  fdd| D S )Nz\#z\$z\%z\&z\_z\{z\}z\^{}z\~{}z\textbackslash{})
#$%&_rU   r   ^~rT   rg   c                 3  s    | ]	}  ||V  qd S r	   )get)r   sspecialsr   r   r      r   z3LatexRendererMixin._escape_latex.<locals>.<genexpr>r$   )rt   r   r   r   rF      s   z LatexRendererMixin._escape_latexr   env_namecontentoptionsIterable[str]c              	   C  s8   |rdd | dnd}d|  d| d| d|  d		S )
N[,]rg   z\begin{r   r   z\end{rV   r   )r   r   r   options_strr   r   r   r#      s   zLatexRendererMixin._environment)rt   ru   rv   ru   )r   )r   ru   r   ru   r   r   rv   ru   )#__name__
__module____qualname____doc____annotations__r   r   r   r(   r,   r/   r2   r<   r?   rC   rI   rK   rL   rZ   r\   r^   r_   ra   re   rf   rh   rj   rn   rp   rr   rq   staticmethodrF   r#   __classcell__r   r   r   r   r      sB   
 r   c                   @  s   e Zd ZdZdS )LatexRendererr   N)r   r   r   r   r   r   r   r   r      s    r   c                   C  s   t tgdS )N)renderer_mixins)r   r   r   r   r   r   make_extension   rs   r   )r   
__future__r   loggingtypingr   marko.helpersr   marko.rendererr   	getLoggerr   r9   r   r   r   r   r   r   r   <module>   s    
 