
    gi                        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j
        e          Z G d d          Z G d	 d
ee	          Zd ZdS )z
LaTeX renderer
    )annotationsN)Iterable)MarkoExtension)Rendererc                       e Zd ZU dZded<    fdZ fdZ fdZd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zed(d!            Z ed)d*d'            Z! xZ"S )+LatexRendererMixin+Render the parsed Markdown to LaTeX format.zset[str]	_packagesc                n    t                                                       t                      | _        d S N)super__init__setr
   self	__class__s    p/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/marko/ext/latex_renderer.pyr   zLatexRendererMixin.__init__   s(        c                    | j                                         | _        t                                                      S r   )r
   copy_packages_backr   	__enter__r   s    r   r   zLatexRendererMixin.__enter__   s/    "n1133ww  """r   c                L    | j         | _         t                      j        |  d S r   )r   r
   r   __exit__)r   argsr   s     r   r   zLatexRendererMixin.__exit__   s'    ,$r   c                    |                      |          }dg}|                    d | j        D                        |                    |                     d|                     d                    |          S )Nz\documentclass{article}c              3  "   K   | ]
}d | dV  dS )z\usepackage{}N ).0ps     r   	<genexpr>z5LatexRendererMixin.render_document.<locals>.<genexpr>'   s.      DD+a+++DDDDDDr   document
)render_childrenextendr
   append_environmentjoin)r   elementchildrenitemss       r   render_documentz"LatexRendererMixin.render_document!   st    ''00+,DDT^DDDDDDT&&z8<<===yyr   c                H    |                      |          }|j        r|n| dS Nr$   )r%   _tightr   r*   r+   s      r   render_paragraphz#LatexRendererMixin.render_paragraph,   s,    ''00">>xx(>r   c                    dS r/   r   r   r*   s     r   render_blank_linez$LatexRendererMixin.render_blank_line0   s    tr   c                    |j         rdndS )Nr$   z\\
)softr4   s     r   render_line_breakz$LatexRendererMixin.render_line_break3   s    |1tt1r   c                    |                      |          }|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+   envs       r   render_listzLatexRendererMixin.render_list6   se    ''00$_;kk)= 	YW]a//OOWXXX  h///r   c                8    |                      |          }d| dS )Nz\item r$   r%   r1   s      r   render_list_itemz#LatexRendererMixin.render_list_item>   s&    ''00%%%%%r   c                    | j                             d           |                     |          }|                     d|          S )Ncsquotesdisplayquote)r
   addr%   r(   r1   s      r   render_quotezLatexRendererMixin.render_quoteB   sA    :&&&''00  :::r   c                    | j                             d           |                     |j                  }|                     d|j        d         j        d| g          S )Nlistings
lstlistingr   z	language=)r
   rI   _escape_latexlangr(   r+   )r   r*   languages      r   render_fenced_codez%LatexRendererMixin.render_fenced_codeG   sc    :&&&%%gl33  '*1-69OX9O9O8P
 
 	
r   c                N    |                      d|j        d         j                  S )Nverbatimr   )r(   r+   r4   s     r   render_code_blockz$LatexRendererMixin.render_code_blockN   s#      W-=a-@-IJJJr   c                    dS )Nz \noindent\rule{\textwidth}{1pt}
r   r4   s     r   render_thematic_breakz(LatexRendererMixin.render_thematic_breakQ   s    55r   c                l    |                      |          }g d}||j        dz
           dz   }d| d| dS )N)partsection
subsectionsubsubsection	paragraphsubparagraphr<   *\{}
)r%   level)r   r*   r+   headersheaders        r   render_headingz!LatexRendererMixin.render_headingT   sW    ''00
 
 
 *+c1,F,,h,,,,r   c                ,    |                      |          S r   )re   r4   s     r   render_setext_headingz(LatexRendererMixin.render_setext_headinga   s    ""7+++r   c                8    |                      |          }d| dS )Nz\textit{r   rD   r1   s      r   render_emphasisz"LatexRendererMixin.render_emphasisd   &    ''00(H((((r   c                8    |                      |          }d| dS )Nz\textbf{r   rD   r1   s      r   render_strong_emphasisz)LatexRendererMixin.render_strong_emphasish   rj   r   c                B    |                      |j                  }d| dS )Nz\texttt{r   rN   r+   r1   s      r   render_code_spanz#LatexRendererMixin.render_code_spanl   s)    %%g&677(H((((r   c                    |j         rt                              d           |                     |          }d|j         d| dS )Nz+Setting a title for links is not supported!z\href{z}{r   )titler?   r@   r%   dest)r   r*   bodys      r   render_linkzLatexRendererMixin.render_linkp   sN    = 	KOOIJJJ##G,,4',44D4444r   c                    d|j          dS )Nz\url{r   )rr   r4   s     r   render_auto_linkz#LatexRendererMixin.render_auto_linkv   s    )))))r   c                    dS )N r   r4   s     r   render_link_ref_defz&LatexRendererMixin.render_link_ref_defy   s    rr   c                L    | j                             d           d|j         dS )Ngraphicxz\includegraphics{r   )r
   rI   rr   r4   s     r   render_imagezLatexRendererMixin.render_image|   s+    :&&&5W\5555r   c                :    t                               d           dS Nz Rendering HTML is not supported!rx   r?   r@   r4   s     r   render_html_blockz$LatexRendererMixin.render_html_block       :;;;rr   c                :    t                               d           dS r~   r   r4   s     r   render_inline_htmlz%LatexRendererMixin.render_inline_html   r   r   c                ,    |                      |          S r   )render_raw_textr4   s     r   render_literalz!LatexRendererMixin.render_literal   s    ##G,,,r   c                6    |                      |j                  S r   rn   r4   s     r   r   z"LatexRendererMixin.render_raw_text   s    !!'"2333r   textstrreturnc                `    ddddddddd	d
d
d                     fd| D                       S )Nz\#z\$z\%z\&z\_z\{z\}z\^{}z\~{}z\textbackslash{})
#$%&_r`   r   ^~r_   rx   c              3  D   K   | ]}                     ||          V  d S r   )get)r    sspecialss     r   r"   z3LatexRendererMixin._escape_latex.<locals>.<genexpr>   s1      88ax||Aq))888888r   r)   )r   r   s    @r   rN   z LatexRendererMixin._escape_latex   sX     %
 
 ww88884888888r   r   env_namecontentoptionsIterable[str]c           	     Z    |rdd                     |           dnd}d|  d| d| d|  d		S )
N[,]rx   z\begin{r   r$   z\end{ra   r   )r   r   r   options_strs       r   r(   zLatexRendererMixin._environment   sR    29A.#((7++....rT8TT{TTgTThTTTTr   )r   r   r   r   )r   )r   r   r   r   r   r   r   r   )#__name__
__module____qualname____doc____annotations__r   r   r   r-   r2   r5   r8   rB   rE   rJ   rQ   rT   rV   re   rg   ri   rl   ro   rt   rv   ry   r|   r   r   r   r   staticmethodrN   r(   __classcell__)r   s   @r   r   r      s(        55    # # # # #         	  	  	 ? ? ?  2 2 20 0 0& & &; ; ;

 
 
K K K6 6 6- - -, , ,) ) )) ) )) ) )5 5 5* * *  6 6 6
    - - -4 4 4 9 9 9 \9" U U U U \U U U U Ur   r   c                      e Zd ZdZdS )LatexRendererr	   N)r   r   r   r   r   r   r   r   r      s        5555r   r   c                 .    t          t          g          S )N)renderer_mixins)r   r   r   r   r   make_extensionr      s    +=*>????r   )r   
__future__r   loggingtypingr   marko.helpersr   marko.rendererr   	getLoggerr   r?   r   r   r   r   r   r   <module>r      s     # " " " " "        ( ( ( ( ( ( # # # # # #
'
H
%
%TU TU TU TU TU TU TU TUn6 6 6 6 6& 6 6 6@ @ @ @ @r   