a
    OcY                     @   s   d Z ddlmZ ddlmZ ddlmZ ddlZejej	 Z
dD ]Ze
ed q@edD ]Zee
ed Z
qZG dd	 d	eZdS )
z
LaTeX renderer for mistletoe.
    )chainN)BaseRenderer* z|!"'=+c                       s   e Z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
edd Zdd Zd2d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ed*d+ Zed,d- Zd.d/ Zd0d1 Z  ZS )3LaTeXRendererc                    s,   |  t}i | _t| _t jt||  dS )zd
        Args:
            extras (list): allows subclasses to add even more custom tokens.
        N)Z_tokens_from_modulelatex_tokenpackagesverb_delimiterssuper__init__r   )selfextrastokens	__class__ P/var/www/html/megastudio/lib/python3.9/site-packages/mistletoe/latex_renderer.pyr      s    
zLaTeXRenderer.__init__c                 C   s   d | |S )Nz\textbf{{{}}}formatrender_innerr   tokenr   r   r   render_strong   s    zLaTeXRenderer.render_strongc                 C   s   d | |S )Nz\textit{{{}}}r   r   r   r   r   render_emphasis!   s    zLaTeXRenderer.render_emphasisc                 C   sN   | j |jd dd}| jD ]}||vr q,q||v r<tdd}|j||dS )Nr   F)escapez'Unable to find delimiter for verb macroz$\verb{delimiter}{content}{delimiter})	delimitercontent)render_raw_textchildrenr	   RuntimeErrorr   )r   r   r   r   templater   r   r   render_inline_code$   s    
z LaTeXRenderer.render_inline_codec                 C   s   dg| j d< d| |S )NZnormalemZulemz\sout{{{}}}r   r   r   r   r   r   r   render_strikethrough2   s    z"LaTeXRenderer.render_strikethroughc                 C   s   g | j d< d|jS )NZgraphicxz
\includegraphics{{{}}}
)r   r   srcr   r   r   r   render_image6   s    
zLaTeXRenderer.render_imagec                 C   s(   g | j d< d}| |}|j|j|dS )Nhyperrefz\href{{{target}}}{{{inner}}})targetinner)r   r   r   r'   r   r   r    r(   r   r   r   render_link:   s    

zLaTeXRenderer.render_linkc                 C   s   g | j d< d|jS )Nr&   z
\url{{{}}})r   r   r'   r   r   r   r   render_auto_link@   s    
zLaTeXRenderer.render_auto_linkc                 C   s   | j S N)r   r   r   r   r   render_mathD   s    zLaTeXRenderer.render_mathc                 C   s
   |  |S r,   r   r   r   r   r   render_escape_sequenceH   s    z$LaTeXRenderer.render_escape_sequenceTc                 C   sH   |rB|j ddddddddd	d
ddddS |j S )N$z\$#z\#{z\{}z\}&z\&_z\_%z\%)r   replace)r   r   r   r   r   r   r   K   s    zLaTeXRenderer.render_raw_textc                 C   s<   |  |}|jdkrd|S |jdkr2d|S d|S )N   z
\section{{{}}}
   z
\subsection{{{}}}
z
\subsubsection{{{}}}
)r   levelr   r   r   r(   r   r   r   render_headingR   s    




zLaTeXRenderer.render_headingc                 C   s    g | j d< d}|j| |dS )NZcsquotesz3\begin{{displayquote}}
{inner}\end{{displayquote}}
r(   r"   r   r   r    r   r   r   render_quoteZ   s    
zLaTeXRenderer.render_quotec                 C   s   d | |S )Nz
{}
r   r   r   r   r   render_paragraph_   s    zLaTeXRenderer.render_paragraphc                 C   s.   g | j d< d}| |jd d}||j|S )Nlistingsz8
\begin{{lstlisting}}[language={}]
{}\end{{lstlisting}}
r   F)r   r   r   r   languager)   r   r   r   render_block_codeb   s    
zLaTeXRenderer.render_block_codec                 C   s8   g | j d< d}|jd urdnd}| |}|j||dS )NrB   z%\begin{{{tag}}}
{inner}\end{{{tag}}}
	enumerateZitemize)tagr(   )r   startr   r   )r   r   r    rF   r(   r   r   r   render_listj   s
    

zLaTeXRenderer.render_listc                 C   s   |  |}d|S )Nz	\item {}
)r   r   r<   r   r   r   render_list_itemq   s    
zLaTeXRenderer.render_list_itemc           	         sl    fdd}dd  d}t drBd}| j}|j|d}nd	}| }|j}|j|| |d
S )Nc                    s6   | d gkr. fddj D }dd|S dS d S )Nc                    s   g | ]} |qS r   r   ).0col)	get_alignr   r   
<listcomp>x       zDLaTeXRenderer.render_table.<locals>.render_align.<locals>.<listcomp>z{{{}}} r   )column_alignr   join)rP   colsrL   r   r   r   render_alignv   s    
z0LaTeXRenderer.render_table.<locals>.render_alignc                 S   s4   | d u rdS | dkrdS | dkr$dS t d|  d S )Nlr   cr9   rzUnrecognized align option: )r   )rK   r   r   r   rL   }   s    z-LaTeXRenderer.render_table.<locals>.get_alignz0\begin{{tabular}}{align}
{inner}\end{{tabular}}
headerz{inner}\hline
r>   r   )r(   align)hasattrrender_table_rowrX   r   r   rP   )	r   r   rT   r    Zhead_templateZ
head_innerZhead_renderedr(   rY   r   rS   r   render_tableu   s    	


zLaTeXRenderer.render_tablec                    s"    fdd|j D }d|d S )Nc                    s   g | ]}  |qS r   )render)rJ   childr   r   r   rM      rN   z2LaTeXRenderer.render_table_row.<locals>.<listcomp>z & z \\
)r   rQ   )r   r   cellsr   r_   r   r[      s    zLaTeXRenderer.render_table_rowc                 C   s
   |  |S r,   r/   r   r   r   r   render_table_cell   s    zLaTeXRenderer.render_table_cellc                 C   s   dS )Nz\hrulefill
r   r-   r   r   r   render_thematic_break   s    z#LaTeXRenderer.render_thematic_breakc                 C   s   | j r
dS dS )N
z	\newline
)Zsoftr-   r   r   r   render_line_break   s    zLaTeXRenderer.render_line_breakc                    s"   d d  fdd| j D S )Nz"\usepackage{options}{{{package}}}
r   c                 3   s$   | ]\}} j |pd |dV  qdS )r   )optionspackageN)r   )rJ   rf   re   patternr   r   	<genexpr>   s   z0LaTeXRenderer.render_packages.<locals>.<genexpr>)rQ   r   itemsr_   r   rg   r   render_packages   s    zLaTeXRenderer.render_packagesc                 C   s*   d}| j |j  |j| ||  dS )NzO\documentclass{{article}}
{packages}\begin{{document}}
{inner}\end{{document}}
)r(   r   )Z	footnotesupdater   r   rk   r?   r   r   r   render_document   s
    zLaTeXRenderer.render_document)T)__name__
__module____qualname__r   r   r   r!   r#   r%   r*   r+   staticmethodr.   r0   r   r=   r@   rA   rD   rH   rI   r\   r[   ra   rb   rd   rk   rm   __classcell__r   r   r   r   r      s6   




r   )__doc__	itertoolsr   Zmistletoe.latex_tokenr   Zmistletoe.base_rendererr   stringpunctuationdigitsr	   r   r8   reversedr   r   r   r   r   <module>   s   