o
    Nis                    @  s   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	 ddl
mZmZmZmZ ddlmZmZ dd	lmZmZ dd
lmZ ddlmZmZmZ ddlmZmZ ddlmZ ddl m!Z! ddl"m#Z#m$Z$ ddl%m&Z& ddl'm(Z( zddl)m*Z* W n e+y   ddl,m*Z* Y nw erddl-m.Z.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 e7e8Z9dZ:g dZ;edd dddddd Z<d!Z=d"Z>e?d#Z@G d$d% d%ejAZBG d&d' d'eZCG d(d) d)ejDZEG d*d+ d+ZFG d,d- d-ZGd<d1d2ZHd=d>d7d8ZIG d9d: d:eZJdd;lKmLZLmMZMmNZN dS )?z~Custom docutils writer for LaTeX.

Much of this code is adapted from Dave Kuhlman's "docpy" writer from his
docutils sandbox.
    )annotationsN)defaultdict)Iterable)path)TYPE_CHECKINGAnyClassVarcast)nodeswriters)addnodeshighlighting)SphinxError)___admonitionlabels)logging	texescape)SphinxTranslator)split_index_msg)clean_astextget_prev_node)LaTeXRenderer)tex_replace_map)toRoman)ElementNodeText)LaTeXBuilder)Theme)
IndexEntry   )partchaptersection
subsectionsubsubsection	paragraphsubparagraphc                   C  s   dS )N\arabic r*   r*   r*   H/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/writers/latex.py<lambda>6   s    r,   r)   z\alphz\Alphz\romanz\Roman)arabic
loweralpha
upperalpha
lowerroman
upperroman
z

z^(.*\S)\s+\(([^()]*)\)\s*$c                   @     e Zd ZdZdS )collected_footnotez5Footnotes that are collected are assigned this class.N)__name__
__module____qualname____doc__r*   r*   r*   r+   r4   E       r4   c                   @  r3   )UnsupportedErrorzMarkup is unsupported in LaTeXN)r5   r6   r7   categoryr*   r*   r*   r+   r:   I   r9   r:   c                      sv   e Zd ZU dZddddgddifddgdd	ifd
dgddifffZi Zded< ded< d fddZdddZ  Z	S )LaTeXWriter)sphinxlatexzLaTeX writer options zDocument namez	--docnamedefaultzDocument classz
--docclassmanualAuthorz--authorzClassVar[dict[str, Any]]settings_defaultsr   themebuilderr   returnNonec                   s   t    || _d S N)super__init__rD   )selfrD   	__class__r*   r+   rI   ]   s   

zLaTeXWriter.__init__c                 C  sH   t | jtjs	J | j| j| j| j}| j| tt|	 | _
d S rG   )
isinstancedocumentr
   rD   create_translatorrC   	walkaboutr	   LaTeXTranslatorastextoutput)rJ   visitorr*   r*   r+   	translatea   s   zLaTeXWriter.translate)rD   r   rE   rF   )rE   rF   )
r5   r6   r7   	supportedsettings_specrB   __annotations__rI   rU   __classcell__r*   r*   rK   r+   r<   M   s   
 	r<   c                   @  sR   e Zd ZdZdddZdd	d
ZdddZdddZdddZ		d d!ddZ	dS )"TablezA table datanoder   rE   rF   c                 C  s&  g | _ g | _|dd| _|dg | _g | _d| jv r#| jd nd| jv r/| jd nd| jv r:| jd d| jv rF| jd nd| jv rQ| jd d	| _d
| _d| jv sad| jv red
| _	nd| jv rnd| _	nd | _	g | _
d| _d| _d| _g | _g | _d	| _d	| _tt| _d	| _d S )Nalignr?   classesstandard
borderlessbooktabsnocolorrows	colorrowsr   r>   |F)headerbodygetr\   r]   stylesappendcolcountcolspeccolsep	colwidthshas_problematichas_oldproblematichas_verbatimcaptionstubscolrowr   intcellscell_idrJ   r[   r*   r*   r+   rI   p   s@   







zTable.__init__boolc                 C  s   | j dkp	d| jv S )z5True if and only if table uses longtable environment.   	longtable)rs   r]   rJ   r*   r*   r+   is_longtable   s   zTable.is_longtablestrc                 C  s>   |   rdS | jrdS | jrdS | js| jrd| jv rdS dS )zReturns the LaTeX environment name for the table.

        The class currently supports:

        * longtable
        * tabular
        * tabulary
        rz   tabulartabularycolwidths-given)r|   ro   rj   rm   rl   r]   r{   r*   r*   r+   get_table_type   s   	
zTable.get_table_typec                   s   | j r| j S | j}|dusJ | jr5d| jv r5t| j  fdd| jD }d| || | dt S | jrDd|| j| j|f t S | 	 dkrYd| d	| | j  d t S | j
rhd|| j| j|f t S d| d
| | j  d t S )a  Returns a column spec of table.

        This is what LaTeX calls the 'preamble argument' of the used table environment.

        .. note::

           The ``\\X`` and ``T`` column type specifiers are defined in
           ``sphinxlatextables.sty``.
        Nr   c                   s   g | ]}d | f qS )z
\X{%d}{%d}r*   ).0widthtotalr*   r+   
<listcomp>   s    z%Table.get_colspec.<locals>.<listcomp>{}z{%s*{%d}{\X{1}{%d}%s}}r   Tl)rj   rk   rl   r]   sumjoinCRrm   ri   r   rn   )rJ   _colsepcolspecsr*   r   r+   get_colspec   s2   

zTable.get_colspecheightrt   r   c                 C  sl   |  j d7  _ t|D ](}t|D ]!}| j| j| | j| f dks$J | j | j| j| | j| f< qqdS )zsAdds a new cell to a table.

        It will be located at current position: (``self.row``, ``self.col``).
           r   N)rv   rangeru   rs   rr   )rJ   r   r   rr   rs   r*   r*   r+   add_cell   s   "zTable.add_cellNrs   
int | Nonerr   TableCell | Nonec                 C  s@   z|du r| j }|du r| j}t| ||W S  ty   Y dS w )zReturns a cell object (i.e. rectangular area) containing given position.

        If no option arguments: ``row`` or ``col`` are given, the current position;
        ``self.row`` and ``self.col`` are used to get a cell object by default.
        N)rs   rr   	TableCell
IndexError)rJ   rs   rr   r*   r*   r+   cell   s   
z
Table.cellr[   r   rE   rF   )rE   rx   rE   r}   )r   rt   r   rt   rE   rF   )NN)rs   r   rr   r   rE   r   )
r5   r6   r7   r8   rI   r|   r   r   r   r   r*   r*   r*   r+   rZ   m   s    

'


%rZ   c                   @  s6   e Zd ZdZdd	d
ZedddZedddZdS )r   zData of a cell in a table.tablerZ   rs   rt   rr   rE   rF   c                 C  s   |j ||f dkrt|| _|j ||f | _|| _|| _|j | jd | jf | jkr?|  jd8  _|j | jd | jf | jks*|j | j| jd f | jkrd|  jd8  _|j | j| jd f | jksMd S d S Nr   r   )ru   r   r   rv   rs   rr   )rJ   r   rs   rr   r*   r*   r+   rI      s   $zTableCell.__init__c                 C  sL   d}| j j| j| j| f | jkr$|d7 }| j j| j| j| f | jks|S )zReturns the cell width.r   r   r   ru   rs   rr   rv   )rJ   r   r*   r*   r+   r     
   zTableCell.widthc                 C  sL   d}| j j| j| | jf | jkr$|d7 }| j j| j| | jf | jks|S )zReturns the cell height.r   r   r   )rJ   r   r*   r*   r+   r     r   zTableCell.heightN)r   rZ   rs   rt   rr   rt   rE   rF   )rE   rt   )r5   r6   r7   r8   rI   propertyr   r   r*   r*   r*   r+   r      s    
r   textr}   rE   c                 C  s   t dd| S )z#Adjust spacing after abbreviations.z
\.(?=\s|$)z.\@)resub)r   r*   r*   r+   escape_abbr     r   d   	width_strscalert   c                 C  s   t d| }|s
t| }| dd \}}|dkr@t| |dv r(d| }|S |dkr2d| }|S |d	kr>d
t|d  }|S t|| d }|dv rRd| }|S |dkr\d| }|S |d	krhd|d  }|S |d| }|S )z4Convert `width_str` with rst length to LaTeX length.z^(\d*\.?\d*)\s*(\S*)$N   r   )r>   pxz%s\sphinxpxdimenptz%sbp%z%.3f\linewidth      Y@z%.5f\sphinxpxdimenz%.5fbpz%.5f\linewidthz.5f)r   match
ValueErrorgroupsfloat)r   r   r   resamountunitamount_floatr*   r*   r+   rstdim_to_latexdim  s8   r   c                      sZ  e Zd ZU ded< dZdZd fddZdddZdddZdddZ	ddddZ
dddd Zdd!d"Zdd#d$Zdd&d'Zdd(d)Zdd,d-Zdd.d/Zd d3d4Zedd6d7Zdd8d9Zdd:d;Zdd<d=Zdd>d?Zdd@dAZddBdCZddDdEZddFdGZddHdIZddJdKZddLdMZeZ ddNdOZ!ddPdQZ"ddRdSZ#ddTdUZ$ddVdWZ%ddXdYZ&ddZd[Z'dd\d]Z(dd^d_Z)dd`daZ*ddbdcZ+ddddeZ,ddfdgZ-ddhdiZ.ddjdkZ/ddldmZ0ddndoZ1ddpdqZ2ddrdsZ3ddtduZ4ddvdwZ5ddxdyZ6ddzd{Z7dd|d}Z8dd~dZ9dddZ:dddZ;dddZ<dddZ=dddZ>dddZ?dddZ@dddZAdddZBdddZCdddZDdddZEdddZFdddZGdddZHdddZIdddZJdddZKdddZLdddZMdddZNdddZOdddZPdddZQdddZRdddZSdddZTdddZUdddZVdddZWdddZXdddÄZYdddńZZdddǄZ[dddɄZ\ddd˄Z]ddd̈́Z^dddτZ_dddфZ`dddӄZadddՄZbdddׄZcdddلZddddۄZeddd݄Zfddd߄ZgdddZhdddZidddZjdddZkdddZldddZmdddZndddZodddZpdddZqdddZrdddZsdddZtdddZudddZvdddZwdd dZxdddZydddZzeqZ{erZ|euZ}evZ~dddZddd	Zdd
dZdddZdddZdddZdddZdddZddddZdddZddd Zdd!d"Zdd#d$Zdd%d&Zdd'd(Zdd)d*Zdd+d,Zdd-d.Zdd/d0Zdd1d2Zdd3d4Zdd5d6ZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZdd7d8Zdd9d:Zdd;d<Zdd=d>Zdd?d@ZddAdBZddCdDZddEdFZddGdHZddIdJZddKdLZddMdNZddOdPZddQdRZddSdTZddUdVZddWdXZddYdZZdd[d\Zdd]d^Zdd_d`ZddadbZddcddZddedfZddgdhZddidjZddkdlZddmdnZddodpZÐddqdrZĐddsdtZŐddudvZƐddwdxZǐddydzZȐdd{d|Zɐdd}d~ZʐdddZːdddZ̐dddZ͐dddZΐdddZϐdddZАdddZѐdddZҐdddZӐdddZeZeZ֐dddZאdddZؐdddZِdddZڐdddZېdddZܐdddZݐdddZސdddZߐdddZdddZdddZdddZdddZdddZdddZdddZdddZdddZdddZdddZdddZdddZdddZddÐdĄZddŐdƄZddǐdȄZddɐdʄZddːd̄Zdd͐d΄ZddϐdЄZddѐd҄ZddӐdԄZddՐdքZddאd؄ZddِdڄZd	dܐd݄Zd	dސd߄Zd
ddZd
ddZdddZdddZ dddZdddZdddZdddZdddZdddZ  ZS (  rQ   r   rD   r   FrN   nodes.documentrC   r   rE   rF   c                   s  t  || g | _|| _d| _d| _d| _d| _d| _d| _	d| _
d| _d| _d| _d| _d| _d| _d| _d| _g }| jj | _t | _| jjdkrT| jd d| _| jjr}z| j| jj| _W n ty|   t !t"d| jj| jj# Y nw | jj$r| jj%| _%| j%dkrt&| jt&tk r| jdkr|  j%| j7  _%n
|  j%| jd 7  _%t'| j%t&td | _%|(d| j%  n|(d | jj$r| jj)r|*d	d
| jj+ g | jj,dvrd| jj-vrdt. d t. d | jd< | jj/| _/| j/0 st !t"d| jj, | j1}| j23drR| j23dd| j d }t&| jt&tk r0| jdkr0|d7 }|t&td krFt !t"d t&td }d| | jd< t4||}| jj$rf| jj%dkrft4|| j%d }|| j1krsd| | jd< |3d}|r| 5d|| jd< | jd r|(d| jd   |rdd6| | jd< | jd rd | jd  | jd< | jd! r| jd"  d| jd!  7  < t7j8d#| jj9| jj:d$| _;g | _g | _<g | _=d | _>g | _?d | _@g | _Ag | _BtC | _Dd S )%Nr   r   Fr$   r#   z+unknown %r toplevel_sectioning for class %rznumfigreset=%snonumfigreset
mathnumfigzmathnumsep={%s}>   enjafncychapz\usepackage[Sonny]{fncychap}z&\ChNameVar{\Large\normalfont\sffamily}z'\ChTitleVar{\Large\normalfont\sffamily}z%no Babel option known for language %rtocdepthi  r   ztoo large :maxdepth:, ignored.z\setcounter{tocdepth}{%d}z\setcounter{secnumdepth}{%d}secnumdepthcontentsnamez\contentsnamemaxlistdepthzmaxlistdepth=%sz[,%s],sphinxpkgoptionssphinxsetupz\sphinxsetup{%s}extraclassoptionsclassoptionslatexlatex_engine)ErH   rI   re   rC   in_titlein_production_listin_footnote
in_captionin_termneeds_linetrimmingin_minipageno_latex_floatsfirst_documentthis_is_the_titleliteral_whitespacein_parsed_literalcompact_listfirst_paramin_desc_signaturerD   contextcopyelementsLATEXSECTIONNAMESsectionnamestoplevel_sectioningremovetop_sectionlevelconfiglatex_toplevel_sectioningindexr   loggerwarningr   docclassnumfignumfig_secnum_depthlenminrh   math_numfigextendmath_numseplanguagelatex_elementsr   babelis_supported_languager   rN   rf   maxbabel_renewcommandr   r   PygmentsBridgepygments_styler   highlighter	descstacktablesnext_table_colspec	bodystackfootnote_restrictedpending_footnotescurfilestacksethandled_abbrs)rJ   rN   rD   rC   r   minsecnumdepthr   r   rK   r*   r+   rI   @  s   










zLaTeXTranslator.__init__newbody	list[str]c                 C  s   | j | j || _d S rG   )r   rh   re   )rJ   r   r*   r*   r+   pushbody  s   
zLaTeXTranslator.pushbodyc                 C  s   | j }| j | _ |S rG   )re   r   pop)rJ   re   r*   r*   r+   popbody  s   zLaTeXTranslator.popbodyr}   c                 C  s,   | j d| j|  d | d| j S )Nr>   )re   indiceszlatex.tex.jinja)r   updater   re   generate_indicesrenderr{   r*   r*   r+   rR     s
   
zLaTeXTranslator.astextTidwithdocrx   anchorc                 C  s4   |r| j d d | }| |}|rdndd|  S )N:\phantomsectionr>   
\label{%s})r   idescape)rJ   r	  r
  r  
escaped_idr*   r*   r+   hypertarget  s   
zLaTeXTranslator.hypertargetr[   r   c                   s,   d  fdd|d D }|rd| S |S )Nr>   c                 3  s    | ]
} j |d dV  qdS )Fr  N)r  )r   node_idr{   r*   r+   	<genexpr>  s    
z1LaTeXTranslator.hypertarget_to.<locals>.<genexpr>idsr  )r   )rJ   r[   r  labelsr*   r{   r+   hypertarget_to  s   zLaTeXTranslator.hypertarget_toc                 C     d|  | S )Nz{\hyperref[%s]{r  rJ   r	  r*   r*   r+   	hyperlink     zLaTeXTranslator.hyperlinkc                 C  r  )Nz\autopageref*{%s}r  r  r*   r*   r+   hyperpageref  r  zLaTeXTranslator.hyperpagerefsc                 C  s   t || jjS rG   )r   escaper   r   )rJ   r  r*   r*   r+   r        zLaTeXTranslator.escapec                 C  s0   t |t}|ddd}d|dd S )Nasciibackslashreplacez\detokenize{%s}\r   )r}   rU   r   encodedecodereplacer  r*   r*   r+   r    s   zLaTeXTranslator.idescapecommand
definitionc                 C  sD   | j d rd| j  }d}nd}d}| d| d| d| t S )Nmultilingualz\addto\captions%s{r   r>   z\renewcommand{}{)r   r   get_languager   )rJ   r(  r)  prefixsuffixr*   r*   r+   r   	  s   
z"LaTeXTranslator.babel_renewcommandc           	        s   d fdd}g  j j }rZt|tsd	}t|}nd
}jjj D ]4}|j	D ].}|j
 d|j
 }|r<||vr<q*||jj\}}|rX d|j t  ||| q*q%d S )Ncontent"list[tuple[str, list[IndexEntry]]]	collapsedrx   rE   rF   c              
     s     dt    dt  t| D ]U\}\}}|dkr#  dt    d| t  |D ]5}|d s8q1  d|d   |d rT  d	|d     d
|d |d f t  q1q  dt  d S )Nz\begin{sphinxtheindex}z*\let\bigletter\sphinxstyleindexlettergroupr   z\indexspacez\bigletter{%s}   z%\item\relax\sphinxstyleindexentry{%s}   z\sphinxstyleindexextra{%s}z\sphinxstyleindexpageref{%s:%s}r   z\end{sphinxtheindex})rh   r   	enumerater   r%  r  )r/  r1  iletterentriesentryretrJ   r*   r+   generate  s2   z2LaTeXTranslator.generate_indices.<locals>.generateTF-z\renewcommand{\indexname}{%s}r>   )r/  r0  r1  rx   rE   rF   )r   latex_domain_indicesrM   rx   	frozensetrD   envdomainssortedr  namer;  docnamesrh   	localnamer   r   )	rJ   r;  indices_configcheck_namesdomain	index_cls
index_namer/  r1  r*   r9  r+   r    s.   




z LaTeXTranslator.generate_indicestemplate_name	variablesdict[str, Any]c                 C  s   t | jjd}| jjD ]:}t| jj||}t|r#|	||  S |
drE|dd }t|rEttd|| |	||  S q|	||S )Nr   z.jinja_tz5template %s not found; loading from legacy %s instead)r   r   r   templates_pathr   r   rD   confdirexistsr  endswithremovesuffixr   r   r   )rJ   rJ  rK  renderertemplate_dirtemplatelegacy_templater*   r*   r+   r  G  s    


zLaTeXTranslator.renderTable | Nonec                 C  s   | j r| j d S dS )zGet current table.r  N)r   r{   r*   r*   r+   r   Y  s   
zLaTeXTranslator.tablec                 C  st   | j |dd | jdkrd| _n| jdkr%| jtd t  d| _d|v r2| j| d | jd | _d S )Ndocnamer>   r   r   z	\appendixr  z:doc)	r   rh   rf   r   re   r   r  r   sectionlevelrw   r*   r*   r+   visit_documenta  s   

zLaTeXTranslator.visit_documentc                 C     d S rG   r*   rw   r*   r*   r+   depart_documento     zLaTeXTranslator.depart_documentc                 C  s(   | j |d  | jtd t  d S )NrX  z\sphinxstepscope)r   rh   re   r   rw   r*   r*   r+   visit_start_of_filer  s   z#LaTeXTranslator.visit_start_of_filec                 C  s   | j   d S rG   )r   r  rw   r*   r*   r+   depart_start_of_filev  r  z$LaTeXTranslator.depart_start_of_filec                 C  s$   | j s
|  jd7  _| jt d S Nr   )r   rY  re   rh   	BLANKLINErw   r*   r*   r+   visit_sectiony  s   zLaTeXTranslator.visit_sectionc                 C  s   t | jd | jd | _d S r`  )r   rY  r   rw   r*   r*   r+   depart_section~  s   zLaTeXTranslator.depart_sectionc                 C     | j d d S )Nz{\color{red}\bfseries{}re   rh   rw   r*   r*   r+   visit_problematic  r!  z!LaTeXTranslator.visit_problematicc                 C  rd  Nr   re  rw   r*   r*   r+   depart_problematic  r!  z"LaTeXTranslator.depart_problematicc                 C  sn   |  j d7  _ d|dg v r#| jtd t  | jdt  d S | jtd t  | jdt  d S )Nr   contentsr]   z\begin{sphinxcontents}z\end{sphinxcontents}z\begin{sphinxtopic}z\end{sphinxtopic})r   rf   re   rh   r   r   rw   r*   r*   r+   visit_topic  s   zLaTeXTranslator.visit_topicc                 C  s$   |  j d8  _ | j| j  d S r`  )r   re   rh   r   r  rw   r*   r*   r+   depart_topic  s   zLaTeXTranslator.depart_topicc                 C  s6   |  j d7  _ | jtd t  | jdt  d S )Nr   z\begin{sphinxsidebar}z\end{sphinxsidebar})r   re   rh   r   r   rw   r*   r*   r+   visit_sidebar  s   zLaTeXTranslator.visit_sidebarc                 C  r[  rG   r*   rw   r*   r*   r+   visit_glossary  r]  zLaTeXTranslator.visit_glossaryc                 C  r[  rG   r*   rw   r*   r*   r+   depart_glossary  r]  zLaTeXTranslator.depart_glossaryc                 C  s&   | j t | j dt  d| _d S )Nz\begin{productionlist}r   )re   rh   ra  r   r   rw   r*   r*   r+   visit_productionlist  s   
z$LaTeXTranslator.visit_productionlistc                 C  s   | j dt  d| _d S )Nz\end{productionlist}r   )re   rh   ra  r   rw   r*   r*   r+   depart_productionlist  s   
z%LaTeXTranslator.depart_productionlistc                 C  sP   |d r |d }| j | d|  | j d| |  d S | j d d S )N	tokennamezgrammar-token-z\production{%s}{z\productioncont{)re   rh   r  r%  )rJ   r[   tnr*   r*   r+   visit_production  s
   z LaTeXTranslator.visit_productionc                 C     | j dt  d S rg  re   rh   r   rw   r*   r*   r+   depart_production     z!LaTeXTranslator.depart_productionc                 C  s   | j | jd  d S )N
transition)re   rh   r   rw   r*   r*   r+   visit_transition     z LaTeXTranslator.visit_transitionc                 C  r[  rG   r*   rw   r*   r*   r+   depart_transition  r]  z!LaTeXTranslator.depart_transitionc              	   C  s  |j }t|tjrtjt|tjr| jrCt|j	dkr.t|j	d tj
s.tjtd|d | jd s=| | | jd< d| _tjd}t|tjr[d| dt|  }z| jd	| j| j  | d
 W n ty   | jd	| jd  | d
 Y nw | jdt | |j   nqt|tjrd| dg v r| jd n| jd | jdt  nMt|tj!r| jd | jdt  n8t|tj"r| jd
 | jdt  n#t|tj#r| $g  ntjtd|d | jd | jdt  d| _%d S )Nr   r   z(document title is not a single Text nodelocationtitler>   [%s] r$  r   r  r   ri  r]   z\sphinxstylecontentstitle{z\sphinxstyletopictitle{z\sphinxstylesidebartitle{zJencountered title node not in section, topic, table, admonition or sidebarz\sphinxstyleothertitle{)&parentrM   r   seealsor
   SkipNoder$   r   r   childrenr   r   r   r   r   r   rR   anyfindallimager   r   splitre   rh   r   rY  r   r   r   r  topicrf   sidebar
Admonitionr   r  r   )rJ   r[   r  shortr*   r*   r+   visit_title  s\   
$"
zLaTeXTranslator.visit_titlec                 C  sH   d| _ t|jtjr| jd usJ |  | j_d S | j| j	
  d S Nr   )r   rM   r  r
   r   r  rp   re   rh   r   r  rw   r*   r*   r+   depart_title  s
   zLaTeXTranslator.depart_titlec                 C  s>   t |jtjr| jd | jdt  d S | jd d S )Nz\sphinxstylesidebarsubtitle{r   r>   )rM   r  r
   r  re   rh   r   r   rw   r*   r*   r+   visit_subtitle  s   zLaTeXTranslator.visit_subtitlec                 C     | j | j  d S rG   re   rh   r   r  rw   r*   r*   r+   depart_subtitle  rz  zLaTeXTranslator.depart_subtitlec                 C  s\   | j jdkr| jt | jdt  n| jt | jdt  | jr,d| j_d S d S )Nfootnotez&\begin{savenotes}\begin{fulllineitems}z\begin{fulllineitems}T)r   latex_show_urlsre   rh   ra  r   r   rm   rw   r*   r*   r+   
visit_desc  s   zLaTeXTranslator.visit_descc                 C  sX   | j r| jtd  d| _ | jjdkr | jtd t  d S | jtd t  d S )N\pysigstopsignaturesFr  z"\end{fulllineitems}\end{savenotes}z\end{fulllineitems})r   re   rh   r   r   r  ra  rw   r*   r*   r+   depart_desc  s   zLaTeXTranslator.depart_descc                 C  s\  ddd}dd	d
}d| _ d| _|D ]}t|tjrwd| _ ||}||}t|tjr0||}nd| _d}|rW|rH| jtd t d   d S | jtd t d   d S |rh| jtd t d   d S | jtd t d   d S t|tjr||r| jtd t d   d S | jtd t d   d S q| jtd t d  d S )Ner   rE   Node | Nonec              	   S  s2   z| j | j | d  W S  ttfy   Y d S w r`  )r  r   AttributeErrorr   r  r*   r*   r+   next_sibling!  s
   z;LaTeXTranslator._visit_signature_line.<locals>.next_siblingr   rx   c                 S  s
   |  dS )Nmulti_line_parameter_list)rf   r  r*   r*   r+   has_multi_line'     
z=LaTeXTranslator._visit_signature_line.<locals>.has_multi_lineFTz*\pysigwithonelineperargwithonelinepertpargr   z(\pysiglinewithargsretwithonelinepertpargz#\pysigwithonelineperargwithtypelistz!\pysiglinewithargsretwithtypelistz\pysigwithonelineperargz\pysiglinewithargsretz
\pysigline)r  r   rE   r  )r  r   rE   rx   )	has_tp_listorphan_tp_listrM   r   desc_type_parameter_listdesc_parameterlistre   rh   r   )rJ   r[   r  r  childmulti_tp_listarglistmulti_arglistr*   r*   r+   _visit_signature_line   s\   


	z%LaTeXTranslator._visit_signature_linec                 C  rd  rg  re  rw   r*   r*   r+   _depart_signature_line]  r!  z&LaTeXTranslator._depart_signature_linec                 C  s   d}|j d dkr|d r|d D ]	}|| |7 }q| j| | js/d| _| jtd  |ds;| | d S | jtd  d S )	Nr>   objtypedescriber  Tz\pysigstartsignaturesis_multilinez\pysigstartmultiline)r  r  re   rh   r   r   rf   r  )rJ   r[   hyperr	  r*   r*   r+   visit_desc_signature`  s   
z$LaTeXTranslator.visit_desc_signaturec                 C  s,   | ds| | d S | jtd  d S )Nr  z\pysigstopmultiline)rf   r  re   rh   r   rw   r*   r*   r+   depart_desc_signaturen  s   
z%LaTeXTranslator.depart_desc_signaturec                 C     |  | d S rG   )r  rw   r*   r*   r+   visit_desc_signature_linet  r  z)LaTeXTranslator.visit_desc_signature_linec                 C  r  rG   )r  rw   r*   r*   r+   depart_desc_signature_linew  r  z*LaTeXTranslator.depart_desc_signature_linec                 C  s$   | j sJ | jtd  d| _ d S )Nr  F)r   re   rh   r   rw   r*   r*   r+   visit_desc_contentz  s   

z"LaTeXTranslator.visit_desc_contentc                 C  r[  rG   r*   rw   r*   r*   r+   depart_desc_content  r]  z#LaTeXTranslator.depart_desc_contentc                 C  rd  )N\sphinxcode{\sphinxupquote{re  rw   r*   r*   r+   visit_desc_inline  r!  z!LaTeXTranslator.visit_desc_inlinec                 C  rd  N}}re  rw   r*   r*   r+   depart_desc_inline  r!  z"LaTeXTranslator.depart_desc_inlinec                 C     | j d |  jd7  _d S )N\sphinxbfcode{\sphinxupquote{r   re   rh   r   rw   r*   r*   r+   visit_desc_name     zLaTeXTranslator.visit_desc_namec                 C     | j d |  jd8  _d S Nr  r   r  rw   r*   r*   r+   depart_desc_name  r  z LaTeXTranslator.depart_desc_namec                 C  r  )Nr  r   r  rw   r*   r*   r+   visit_desc_addname  r  z"LaTeXTranslator.visit_desc_addnamec                 C  r  r  r  rw   r*   r*   r+   depart_desc_addname  r  z#LaTeXTranslator.depart_desc_addnamec                 C  r[  rG   r*   rw   r*   r*   r+   visit_desc_type  r]  zLaTeXTranslator.visit_desc_typec                 C  r[  rG   r*   rw   r*   r*   r+   depart_desc_type  r]  z LaTeXTranslator.depart_desc_typec                 C  rd  )Nz{ $\rightarrow$ re  rw   r*   r*   r+   visit_desc_returns  r!  z"LaTeXTranslator.visit_desc_returnsc                 C  rd  rg  re  rw   r*   r*   r+   depart_desc_returns  r!  z#LaTeXTranslator.depart_desc_returnsparameter_grouptype[Element]c                   sR   d| _ d| _d| _d| _ fdd|jD | _t| j| _d| _|	dd| _
dS )	aK  Visit a signature parameters or type parameters list.

        The *parameter_group* value is the type of a child node acting as a required parameter
        or as a set of contiguous optional parameters.

        The caller is responsible for closing adding surrounding LaTeX macro argument start
        and stop tokens.
        Tr   c                   s   g | ]}t | qS r*   )rM   r   cr  r*   r+   r     s    
z=LaTeXTranslator._visit_sig_parameter_list.<locals>.<listcomp>z\sphinxparamcomma r  FN)is_first_paramoptional_param_levelparams_left_at_levelparam_group_indexr  list_is_required_paramr   required_params_leftparam_separatorrf   r  )rJ   r[   r  r*   r  r+   _visit_sig_parameter_list  s   
z)LaTeXTranslator._visit_sig_parameter_listc                 C  sL   | j r| jr| jdt d  d S n
| jdt d  | |tj d S Nr   r   )r  r  re   rh   r   r  r   desc_parameterrw   r*   r*   r+   visit_desc_parameterlist  s   z(LaTeXTranslator.visit_desc_parameterlistc                 C  s"   | j rJ | jdt d  d S r  r  re   rh   r   rw   r*   r*   r+   depart_desc_parameterlist  s   
z)LaTeXTranslator.depart_desc_parameterlistc                 C  s&   | j dt d  | |tj d S r  )re   rh   r   r  r   desc_type_parameterrw   r*   r*   r+   visit_desc_type_parameter_list  s   z.LaTeXTranslator.visit_desc_type_parameter_listc                 C  s>   | j r| jdt d t d  d S | jdt d  d S )Nr   z{}r   r  rw   r*   r*   r+   depart_desc_type_parameter_list  s    z/LaTeXTranslator.depart_desc_type_parameter_listparameter_macroc                 C  sn   | j rd| _ n| js| js| j| j | jdkr!|  jd8  _n|  jd8  _|ds5| j| d S d S )NFr   r   noemph)	r  r  r  re   rh   r  r  r  hasattr)rJ   r[   r  r*   r*   r+   _visit_sig_parameter  s   

z$LaTeXTranslator._visit_sig_parameterc                 C  s   | ds| jd | j| j }| jr@t| j}| jd |k}| o*| j| jd  }| jdk}|s8|r?|s8|r?| j| j n
| j	rJ| j| j |rU|  jd7  _d S d S )Nr  r   r   r   )
r  re   rh   r  r  r  r   r  r  r  )rJ   r[   is_requiredlen_lirpis_last_groupnext_is_requiredopt_param_left_at_levelr*   r*   r+   _depart_sig_parameter  s2   


z%LaTeXTranslator._depart_sig_parameterc                 C     |  |d d S )Nz\sphinxparam{r  rw   r*   r*   r+   visit_desc_parameter  r!  z$LaTeXTranslator.visit_desc_parameterc                 C  r  rG   r  rw   r*   r*   r+   depart_desc_parameter  r  z%LaTeXTranslator.depart_desc_parameterc                 C  r  )Nz\sphinxtypeparam{r  rw   r*   r*   r+   visit_desc_type_parameter
  r!  z)LaTeXTranslator.visit_desc_type_parameterc                 C  r  rG   r  rw   r*   r*   r+   depart_desc_type_parameter  r  z*LaTeXTranslator.depart_desc_type_parameterc                 C  s   t dd |jD | _|  jd7  _| j| _| jrE| jr$| jd d S | j	r6| j| j
 | jd d S | jd | j| j
 d S | jd d S )Nc                 s      | ]	}t |tjV  qd S rG   )rM   r   r  r  r*   r*   r+   r    s    
z6LaTeXTranslator.visit_desc_optional.<locals>.<genexpr>r   z\sphinxoptional{)r   r  r  r  max_optional_param_levelr  r  re   rh   r  r  rw   r*   r*   r+   visit_desc_optional  s   
z#LaTeXTranslator.visit_desc_optionalc                 C  s^   |  j d8  _ | jr| j | jd kr| j| j | jd | j dkr-|  jd7  _d S d S )Nr   r   r   )r  r  r  re   rh   r  r  rw   r*   r*   r+   depart_desc_optional"  s   
z$LaTeXTranslator.depart_desc_optionalc                 C  rd  )Nr  re  rw   r*   r*   r+   visit_desc_annotation-  r!  z%LaTeXTranslator.visit_desc_annotationc                 C  rd  r  re  rw   r*   r*   r+   depart_desc_annotation0  r!  z&LaTeXTranslator.depart_desc_annotationc                 C  sH   | j t | j dtd  t  |  jd7  _| jr"d| j_d S d S )Nz\begin{sphinxseealso}{%s:}r  r   T)re   rh   ra  r   r   r   r   rm   rw   r*   r*   r+   visit_seealso5  s   zLaTeXTranslator.visit_seealsoc                 C  s6   | j t | j d | j t |  jd8  _d S )Nz\end{sphinxseealso}r   )re   rh   ra  r   rw   r*   r*   r+   depart_seealso>  s   zLaTeXTranslator.depart_seealsonodes.rubricc              	   C  s   t |dkr| dtdfv rtjd}d|v r>|d }z| j| jd |  }W n ty=   tj	t
d|d|d Y nw | jd| d	 | jd
t  d| _d S )Nr   	Footnotesr&   zheading-levelz$unsupported rubric heading level: %sr   )typer}  r$  z*{r   )r   rR   r   r
   r  r   r   	Exceptionr   r   r   re   rh   r   r   r   )rJ   r[   taglevelr*   r*   r+   visit_rubricD  s$    

zLaTeXTranslator.visit_rubricc                 C  s   d| _ | j| j  d S r  )r   re   rh   r   r  rw   r*   r*   r+   depart_rubricX  s   zLaTeXTranslator.depart_rubricc                 C  s|   |  j d7  _ ttj|d }| jr| jd|   n| jdt  | jd|   d|v r4	 | jdt  d S )Nr   r   z\begin{footnote}[%s]r   referred\sphinxAtStartFootnote)	r   r	   r
   labelr   re   rh   rR   r   rJ   r[   r  r*   r*   r+   visit_footnote\  s   zLaTeXTranslator.visit_footnotec                 C  sB   | j r
| jd n| jdt  | jd |  jd8  _d S )Nz\end{footnote}r   r   )r   re   rh   r   r   rw   r*   r*   r+   depart_footnotei  s
   zLaTeXTranslator.depart_footnotec                 C     t jrG   r
   r  rw   r*   r*   r+   visit_labelq     zLaTeXTranslator.visit_labelc                 C  s   |d | _ tj)Nspec)r   r
   r  rw   r*   r*   r+   visit_tabular_col_spect  s   
z&LaTeXTranslator.visit_tabular_col_specc                 C  s,  t | jdkr(| jd usJ | j dkr#td| jd |jpdf d| j_nt | jdkr=td| jd |jp9df t|}| j	| |j
d u r]d	d
| jjjvoZd| jjjv |_
| jrd| j t |_d	|jv rw|j	d d	|_
n	|j	d d|_
d|dg v rtjtd|d d | _d S )Nr   rz   z2%s:%s: longtable does not support nesting a table.r  r>   Tr   z0%s:%s: deeply nested tables are not implemented.rc   r`   r_   z{%s}vlinesnovlinesr   r]   zGboth tabularcolumns and :widths: option are given. :widths: is ignored.r|  )r   r   r   r   r:   r   linerm   rZ   rh   rk   rD   r   latex_table_styler   r   rj   rg   rf   r   infor   )rJ   r[   r   r*   r*   r+   visit_tablex  sJ   



zLaTeXTranslator.visit_tablec                 C  sl   | j d usJ | |}| j  }| |d | j |d}| jt | j| | jt | j	  d S )Nz
.tex.jinja)r   r  )
r   r  r   r  re   rh   ra  r   r   r  )rJ   r[   r  
table_typer   r*   r*   r+   depart_table  s   

zLaTeXTranslator.depart_tablec                 C  s^   | j d usJ | j  jd7  _d|v r| j j|d  d|v r-| j j| j jd  d S d S )Nr   colwidthstub)r   ri   rl   rh   rq   rw   r*   r*   r+   visit_colspec  s   zLaTeXTranslator.visit_colspecc                 C  r[  rG   r*   rw   r*   r*   r+   depart_colspec  r]  zLaTeXTranslator.depart_colspecc                 C  r[  rG   r*   rw   r*   r*   r+   visit_tgroup  r]  zLaTeXTranslator.visit_tgroupc                 C  r[  rG   r*   rw   r*   r*   r+   depart_tgroup  r]  zLaTeXTranslator.depart_tgroupc                 C      | j d usJ | | j j d S rG   )r   r  rd   rw   r*   r*   r+   visit_thead     zLaTeXTranslator.visit_theadc                 C  *   | j r| j d dkr| j   |   d S Nr  \sphinxhlinere   r  r  rw   r*   r*   r+   depart_thead     
zLaTeXTranslator.depart_theadc                 C  r  rG   )r   r  re   rw   r*   r*   r+   visit_tbody  r  zLaTeXTranslator.visit_tbodyc                 C  r  r  r  rw   r*   r*   r+   depart_tbody  r!  zLaTeXTranslator.depart_tbodyc                 C  s   | j d usJ d| j _| j j}	 | j | j j| j j}|d u r!d S | j  j|j7  _|jr3| jd |jdkrB| jd|j  n| jd|j|||jf  q)Nr   T&r   \sphinxtablestrut{%d}z.\multicolumn{%d}{%sl%s}{\sphinxtablestrut{%d}})	r   rr   rk   r   rs   r   re   rh   rv   )rJ   r[   r   r   r*   r*   r+   	visit_row  s$   
zLaTeXTranslator.visit_rowc                   s   j d usJ  jdt   fddt j jD } fdd|D }t|r0 jd nd}|dg |d du rpd}| j jk rp|| du rp||d  j|| jkr` jd	|  |d7 }| j jk rp|| du sL| j jk r||d  	d} jd
|d || f  ||7 }|d7 }| j jk r|| du r||d  j|| jkr jd	|  |d7 }| j jk r|| du s| j jk sv jd j j   j  j
d7  _
d S )Nz\\c                   s   g | ]} j  j j|qS r*   )r   r   rs   )r   r5  r{   r*   r+   r     s    z.LaTeXTranslator.depart_row.<locals>.<listcomp>c                   s$   g | ]}|j |j  jj d  kqS )r   )rs   r   r   )r   r   r{   r*   r+   r     s    r  r   Fr   z\sphinxvlinecrossing{%d}z\sphinxcline{%d-%d}z\sphinxfixclines{%d})r   re   rh   r   r   ri   allr   rv   r   rs   )rJ   r[   ru   
underlinedr5  jr*   r{   r+   
depart_row  s<   

zLaTeXTranslator.depart_rowc                 C  s  | j d usJ | j jdkr| jd | j |ddd |ddd  | j  }|d us1J d}| j j}|jdkrv| j	j
rg| j jdkrU| jd|j||f t  n| jd|j|f t  d	t }n| jd
|j t  dt }|jdkr| jd|j|jf t  d	t | }|jdks|jdkr| jd|j| j jf t  dt d t | }d| _tt|tjdkrd| j _t|jjtjs|j| j jv rt|dkrt|d tjr| dkrn| jd | jr| g  | j| d S )Nr   r$  morerowsr   morecolsr>   z\multicolumn{%d}{%sl%s}{%%z\multicolumn{%d}{l%s}{%%z}%z\sphinxstartmulticolumn{%d}%%z\sphinxstopmulticolumnz\sphinxmultirow{%d}{%d}{%%z,\begin{varwidth}[t]{\sphinxcolwidth{%d}{%d}}z\parz7\vskip-\baselineskip\vbox{\hbox{\strut}}\end{varwidth}%r   Tz\sphinxstyletheadfamily )r   rr   re   rh   r   rf   r   rk   r   r   latex_use_latex_multicolumnr   r   rv   ri   r   r   listr  r
   r'   rn   rM   r  theadrq   rR   r  r   )rJ   r[   r   r   r   r*   r*   r+   visit_entry
  sp   &





zLaTeXTranslator.visit_entryc                 C  s
  | j r%d| _ |  }|r|d tkr|d |r|d tks| j| | j| j  | jd us5J | j	 }|d us@J | j j
|j7  _
| jj}	 | j	 }|d u rYd S | jd |jdkrn| jd|j  n| jd|j||jf  | j j
|j7  _
qN)Nr   Tr$  r   r%  z,\multicolumn{%d}{l%s}{\sphinxtablestrut{%d}})r   r  r   r  re   r   rh   r   r   r   rr   r   rk   rv   )rJ   r[   re   r   r   nextcellr*   r*   r+   depart_entryE  s6   



zLaTeXTranslator.depart_entryc                 C  s^   t tj|d }t ttj |}| jt | jddd |D d  | jt tj	)Nr   , c                 s      | ]}|  V  qd S rG   rR   )r   nr*   r*   r+   r  p      z-LaTeXTranslator.visit_acks.<locals>.<genexpr>.)
r	   r
   bullet_listr   	list_itemre   rh   ra  r   r  )rJ   r[   r9  
list_itemsr*   r*   r+   
visit_acksj  s    zLaTeXTranslator.visit_acksc                 C  s,   | j s| jdt  | jrd| j_d S d S )Nz\begin{itemize}Tr   re   rh   r   r   rm   rw   r*   r*   r+   visit_bullet_listt  s
   z!LaTeXTranslator.visit_bullet_listc                 C  s   | j s| jdt  d S d S )Nz\end{itemize}r   re   rh   r   rw   r*   r*   r+   depart_bullet_listz  s   z"LaTeXTranslator.depart_bullet_listc                   s   ddd}d fdd	 d
t  |  }d
t  |d   }t||}|dd}|dd}| jdt  | jd|||||f t  d|v r`| jd||d d f t  | jrid| j_d S d S )Nr[   r   rE   r}   c                 S  s4   |  dd}d|v r|  ddt|  dkrd}|S )Nenumtyper-   alphastartr      )rf   r   )r[   rA  r*   r*   r+   get_enumtype  s    z;LaTeXTranslator.visit_enumerated_list.<locals>.get_enumtypert   c                   s0   | d u rdS t | tjr | jd S  | jS r   )rM   r
   enumerated_listr  r[   get_nested_levelr*   r+   rI    s
   
z?LaTeXTranslator.visit_enumerated_list.<locals>.get_nested_levelzenum%sr   r-  r>   r.  r8  z\begin{enumerate}z*\sphinxsetlistlabels{%s}{%s}{%s}{%s}{%s}%%rC  z\setcounter{%s}{%d}T)r[   r   rE   r}   )r[   r   rE   rt   )	r   lowerENUMERATE_LIST_STYLErf   re   rh   r   r   rm   )rJ   r[   rE  enumenumnextstyler-  r.  r*   rH  r+   visit_enumerated_list~  s(   
 z%LaTeXTranslator.visit_enumerated_listc                 C  rt  )Nz\end{enumerate}ru  rw   r*   r*   r+   depart_enumerated_list  rw  z&LaTeXTranslator.depart_enumerated_listc                 C  rd  )Nz	\item {} re  rw   r*   r*   r+   visit_list_item  s   zLaTeXTranslator.visit_list_itemc                 C     | j t d S rG   ru  rw   r*   r*   r+   depart_list_item  r!  z LaTeXTranslator.depart_list_itemc                 C  &   | j dt  | jrd| j_d S d S )Nz\begin{description}Tre   rh   r   r   rm   rw   r*   r*   r+   visit_definition_list     z%LaTeXTranslator.visit_definition_listc                 C  rt  )Nz\end{description}ru  rw   r*   r*   r+   depart_definition_list  rw  z&LaTeXTranslator.depart_definition_listc                 C  r[  rG   r*   rw   r*   r*   r+   visit_definition_list_item  r]  z*LaTeXTranslator.visit_definition_list_itemc                 C  r[  rG   r*   rw   r*   r*   r+   depart_definition_list_item  r]  z+LaTeXTranslator.depart_definition_list_itemc                 C  sd   |  j d7  _ d}|dr d}|d D ]}|| j|dd7 }q|d7 }| jd | j| d S )	Nr   r>   r  r  Fr  r   z\sphinxlineitem{)r   rf   r  re   rh   r   )rJ   r[   ctxr  r*   r*   r+   
visit_term  s   
zLaTeXTranslator.visit_termc                 C  s$   | j | j  |  jd8  _d S r`  )re   rh   r   r  r   rw   r*   r*   r+   depart_term  s   zLaTeXTranslator.depart_termc                 C  rd  )Nz{[}re  rw   r*   r*   r+   visit_classifier  r!  z LaTeXTranslator.visit_classifierc                 C  rd  )Nz{]}re  rw   r*   r*   r+   depart_classifier  r!  z!LaTeXTranslator.depart_classifierc                 C  r[  rG   r*   rw   r*   r*   r+   visit_definition  r]  z LaTeXTranslator.visit_definitionc                 C  rR  rG   ru  rw   r*   r*   r+   depart_definition  r!  z!LaTeXTranslator.depart_definitionc                 C  rT  )Nz \begin{quote}\begin{description}TrU  rw   r*   r*   r+   visit_field_list  rW  z LaTeXTranslator.visit_field_listc                 C  rt  )Nz\end{description}\end{quote}ru  rw   r*   r*   r+   depart_field_list  rw  z!LaTeXTranslator.depart_field_listc                 C  r[  rG   r*   rw   r*   r*   r+   visit_field  r]  zLaTeXTranslator.visit_fieldc                 C  r[  rG   r*   rw   r*   r*   r+   depart_field  r]  zLaTeXTranslator.depart_fieldc                 C  s   |j |}|dkr1t|j tjr1t|j |d  tjs1t|j |d  tjs1| jdt  d S |dkr@t|j tj	t
B r@d S | jtdt g d S )Nr   r   	\noindentz\sphinxAtStartPar)r  r   rM   r
   compoundr'   re   rh   r   r  footnotetextr   )rJ   r[   r   r*   r*   r+   visit_paragraph  s   zLaTeXTranslator.visit_paragraphc                 C  rR  rG   ru  rw   r*   r*   r+   depart_paragraph  r!  z LaTeXTranslator.depart_paragraphc                 C  s&   | j td  | jrd| j_d S d S )N\begin{center}TrU  rw   r*   r*   r+   visit_centered  rW  zLaTeXTranslator.visit_centeredc                 C     | j td  d S )N\end{center}ru  rw   r*   r*   r+   depart_centered  rw  zLaTeXTranslator.depart_centeredc                 C  sn   |  j d7  _ |d }| j dkr| jdt  | jd| d t  | jdt  | jr5d| j_d S d S )Nr   ncolumnsz\setlength{\multicolsep}{0pt}z\begin{multicols}{z}\raggedrightzA\begin{itemize}\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}Tr=  )rJ   r[   rp  r*   r*   r+   visit_hlist  s   
zLaTeXTranslator.visit_hlistc                 C  s"   |  j d8  _ | jdt  d S )Nr   z*\end{itemize}\raggedcolumns\end{multicols}r?  rw   r*   r*   r+   depart_hlist  s   zLaTeXTranslator.depart_hlistc                 C  r[  rG   r*   rw   r*   r*   r+   visit_hlistcol  r]  zLaTeXTranslator.visit_hlistcolc                 C  r[  rG   r*   rw   r*   r*   r+   depart_hlistcol  s   zLaTeXTranslator.depart_hlistcolr   r   r   rt   
str | Nonec                 C  s2   zt ||W S  ty   ttd| Y d S w )Nz&dimension unit %s is invalid. Ignored.)r   r   r   r   r   )rJ   r   r   r*   r*   r+   latex_image_length#  s   z"LaTeXTranslator.latex_image_lengthc                 C  s   t |jtjS )z2Check whether a node represents an inline element.)rM   r  r
   TextElementrw   r*   r*   r+   	is_inline*  r   zLaTeXTranslator.is_inlinec                 C  sx  g }g }g }t |jtj}|r| |j}n| |}d|v r>d|v r.| |d |d }n| |d }|r>|d|  d|v rad|v rQ| |d |d }n| |d }|ra|d|  d|v rt|st|dt|d d   d|v rd	d
ddddd}	z||	||d f d  ||	||d f d  W n	 ty   Y nw | j	r|d |d |s|s|t
d  |t
 |  |d | jjv r| jj|d  }
n	| jrd S |d }
|
ddkrd S | j| d}|rdd| }t|
\}}| jr|rd| d| d| d}nd| d| d| d}d|v r.d | d }| j| | j| d S )!Nr   r   zwidth=%sr   z	height=%szscale=%sr   r\   )r>   r>   )z\raisebox{-0.5\height}{r   )z\raisebox{-\height}{r   ){\hspace*{\fill}\hspace*{\fill}})r   rz  )ry  r   ))r   top)r   middle)r   bottom)r   center)r   left)r   rightr   r   z!{\sphinxunactivateextrasandspace r   rf  uriz://r  r>   r  r   z!\lowercase{\sphinxincludegraphicsz}{{z\sphinxincludegraphicsz{{#z{\catcode`\#=12)rM   r  r
   	referencerx  rv  rh   r   KeyErrorr   r   reverserD   imagesignore_missing_imagesfindre   r   r   r   splitextr   )rJ   r[   prepostinclude_graphics_optionshas_hyperlinkrx  whalign_prepostr  optionsbaseextcmdr*   r*   r+   visit_image.  s   




zLaTeXTranslator.visit_imagec                 C  r[  rG   r*   rw   r*   r*   r+   depart_image  r]  zLaTeXTranslator.depart_imagec                 C  s  | j d }| jr
d}| jr\| jt d|v r3| |d }|r2| jd| t  | jdt  n| jdt  | jdt  tdd |D rR| jd	 | j	d
t  d S |
dddv rd }d|v rr| |d }nt|d tjrd|d v r| |d d }| jt | jd|d dkrdnd|pdf t  | jd | j	dt d t  d S | jr| jtd  | j	dt  d S | jtd|  t  | jdt  tdd |D r| jd	t  | j	dt  d S )Nfigure_alignHr   z!\begin{sphinxfigure-in-table}[%s]z
\centeringz\begin{sphinxfigure-in-table}c                 s  r  rG   rM   r
   rp   r   r  r*   r*   r+   r        z/LaTeXTranslator.visit_figure.<locals>.<genexpr>z	\capstartz!\end{sphinxfigure-in-table}\relaxr\   r>   )r  r  r   z\begin{wrapfigure}{%s}{%s}r  rr   0ptz\end{wrapfigure}z6\mbox{}\par\vskip-\dimexpr\baselineskip+\parskip\relaxrk  rn  z\begin{figure}[%s]c                 s  r  rG   r  r  r*   r*   r+   r    r  z\end{figure})r   r   r   re   rh   ra  rv  r   r  r   rf   rM   r
   r  r   )rJ   r[   r\   lengthr*   r*   r+   visit_figure  s`   
zLaTeXTranslator.visit_figurec                 C  r  rG   r  rw   r*   r*   r+   depart_figure  rz  zLaTeXTranslator.depart_figurec                 C  s   |  j d7  _ t|jtr| jd d S | jr't|jtjr'| jd d S | j	r8|jj
dkr8| jd d S | jd d S )Nr   z\sphinxSetupCaptionForVerbatim{z\captionof{figure}{figurez\sphinxfigcaption{z	\caption{)r   rM   r  captioned_literal_blockre   rh   r   r
   r  r   tagnamerw   r*   r*   r+   visit_caption  s   zLaTeXTranslator.visit_captionc                 C  sD   | j d t|jtjr| |j}| j | |  jd8  _d S )Nr   r   )re   rh   rM   r  r
   r  r  r   )rJ   r[   r  r*   r*   r+   depart_caption  s
   zLaTeXTranslator.depart_captionc                 C  rm  )Nz\begin{sphinxlegend}ru  rw   r*   r*   r+   visit_legend  rw  zLaTeXTranslator.visit_legendc                 C  rt  )Nz\end{sphinxlegend}ru  rw   r*   r*   r+   depart_legend  rw  zLaTeXTranslator.depart_legendc                 C  s4   | j td  |  jd7  _| jrd| j_d S d S )Nz\begin{sphinxadmonition}{note}r   T)re   rh   r   r   r   rm   rw   r*   r*   r+   visit_admonition  s
   z LaTeXTranslator.visit_admonitionc                 C  "   | j dt  |  jd8  _d S Nz\end{sphinxadmonition}r   re   rh   r   r   rw   r*   r*   r+   depart_admonition     z!LaTeXTranslator.depart_admonitionc                 C  sH   t |j }| jtd|j|f   |  jd7  _| jr"d| j_d S d S )Nz!\begin{sphinxadmonition}{%s}{%s:}r   T)r   r  re   rh   r   r   r   rm   r  r*   r*   r+   _visit_named_admonition  s   
z'LaTeXTranslator._visit_named_admonitionc                 C  r  r  r  rw   r*   r*   r+   _depart_named_admonition  r  z(LaTeXTranslator._depart_named_admonitionc                 C  r[  rG   r*   rw   r*   r*   r+   visit_versionmodified  r]  z%LaTeXTranslator.visit_versionmodifiedc                 C  r[  rG   r*   rw   r*   r*   r+   depart_versionmodified  r]  z&LaTeXTranslator.depart_versionmodifiedc           
        sP  d fdd} }t |tjr|jdd}t |tjsjjjj}t |tr)d S |	|r5|
|r5d S d	 v r;d S d
 v rAd S  dr_t }t |tjrY d |d krYn| d   ddrd fdd}t }||r d d d  }||r||d  t|}||snt d }nt d }|D ]}	||	 qd S )Nr	  r}   rE   rF   c                   st   |  drd S |  drd S  j }|dkr)t j|d  tjr)jt j	 }jj
| |d d S )Nzindex-z	equation-r   r   r  )
startswithr  r   rM   r
   r'   re   rh   r   r   r  )r	  r   r  r[   rJ   r*   r+   
add_target  s   

z0LaTeXTranslator.visit_target.<locals>.add_targetT)ascendrefuri	anonymousrefidismodFsibr  rx   c                   s   t | tjo| d d v S )Nr  r  )rM   r
   targetrf   )r  rG  r*   r+   has_dup_label7  s   z3LaTeXTranslator.visit_target.<locals>.has_dup_labelr  )r	  r}   rE   rF   )r  r  rE   rx   )rM   r
   r  	next_noderD   r?  r@  standard_domainHYPERLINK_SUPPORT_NODESget_enumerable_node_typeget_numfig_titlerf   r   r  r   iter)
rJ   r[   r  r  rG  	prev_noder  prevr  r	  r*   r  r+   visit_target  sN   



zLaTeXTranslator.visit_targetc                 C  r[  rG   r*   rw   r*   r*   r+   depart_targetH  r]  zLaTeXTranslator.depart_targetc                 C  s$   | j td t  | j d d S )Nz\begin{flushright}z---ru  rw   r*   r*   r+   visit_attributionK  s   z!LaTeXTranslator.visit_attributionc                 C  s   | j td t  d S )Nz\end{flushright}ru  rw   r*   r*   r+   depart_attributionO  s   z"LaTeXTranslator.depart_attributionc                   s  d fdd}ddd}| d	d
s jt |d }|D ]Q\}}}}}	d}
|r,d}
z)tt|t||}tt||}|dkrz|\}}|\}} jd| d| d| d| |
 d
 W n ty   |\}|\} jd| d| |
 d Y nw |dkr|\}}|\}} jd| d| d| d| |
 d| d| d| d| |
 d n|dkr/|\}}}|\}}} jdg d| d| d| d| d| d| |
 d| d| d| d| d| d| |
 d| d| d| d| d| d| |
 d n&|dv rM|\}}|\}} jd| d| d| d nt	
td| W q typ } zt	
t| W Y d }~qd }~ww | d	d
s~ jd tj)Nvaluer}   rE   c                   sV     | } | dd} | dd} | dd} | dd} | d	d
} | dd} | S )Nz\{z\sphinxleftcurlybrace{}z\}z\sphinxrightcurlybrace{}"z""@z"@!z"!rc   z
\textbar{}r%  r'  )r  r{   r*   r+   r   S  s   
z+LaTeXTranslator.visit_index.<locals>.escapestringc                 S  s    t | }|r|dS d|  S )Nz\\spxentry{\1}\\spxextra{\2}z\spxentry{%s})EXTRA_REr   expand)r  r   r*   r*   r+   rN  ]  s   

z*LaTeXTranslator.visit_index.<locals>.styleinlineTr7  r>   z	|spxpagemsinglez\index{r  r  r   pairz}\index{tripler  r3  >   seer  z|see{r  z!unknown index entry type %s foundz\ignorespaces )r  r}   rE   r}   )r  r}   rE   r}   )rf   re   rh   r   tuplemapr   r   r   r   r   r   r}   r
   r  )rJ   r[   r   rN  r7  r  r  _tidismain_keympartsstyledp1p2P1P2pPp3P3_P2errr*   r{   r+   visit_indexR  s   

."


L

"zLaTeXTranslator.visit_indexc                 C  sV   |  |s| jt d|dd v r| j|  |  |s(| jt tj)Nr   formatr>   )	rx  re   rh   r   rf   r  rR   r
   r  rw   r*   r*   r+   	visit_raw  s   

zLaTeXTranslator.visit_rawc                 C  sz  | j s|dD ]}| j }|  j| j||d7  _q| |s&| jt |dd}|s@|dr@d| jd  d |d  }| j sE|sM| j	d d S |
dr| jd d	 |d
d   }| j| | | jd | jjr| js| j	d| |  d S | j	d d S |
dr|d}|dkr|d
d  d }n
|d
d  dd	}| j| | t|rt|d tjrd|d dg v r| j	d | jd d S | jd | jjr| js| j	d| |  d S | j	d d S t|d
kr*||d kr*|dr| jd| |  tj| jd| |  tj| jd| |  | j	d d S )Nr  r  r  r>   r  r   r  r  r  r   z\sphinxsamedocref{z}}} (%s)z}}}z::docr   zstd-termr]   z\sphinxtermref{z\sphinxcrossref{	nolinkurlz\sphinxnolinkurl{%s}z\sphinxurl{%s}z\sphinxhref{%s}{r   )r   rf   r   re   r  rx  rh   r   r   r   r  r  r   latex_show_pagerefsr   r  r  r'  r   rM   r
   r   
encode_urir  )rJ   r[   r	  r  r  	hashindexr*   r*   r+   visit_reference  sV   




zLaTeXTranslator.visit_referencec                 C  s0   | j | j  | |s| j t d S d S rG   )re   rh   r   r  rx  r   rw   r*   r*   r+   depart_reference  s   
z LaTeXTranslator.depart_referencec                 C  s   | dr| jd d |d  }n| dddd  dd}| | dd	d
d	}d|v s4d|v rR|dddd}t|jd| | d| | d}nt|d| |  }d| | d| d}| j| t	j
)Nr  r  r  r  r>   r   r  r~  z%sz\%sz\{name\}z
\{number\}z{name}z{number}z\nameref{%s}\ref{%s})rB  numberz
\hyperref[]{r   )rf   r   r'  r   r   r  r  re   rh   r
   r  )rJ   r[   r	  r~  r   hyperrefr*   r*   r+   visit_number_reference  s    
z&LaTeXTranslator.visit_number_referencec                 C  r[  rG   r*   rw   r*   r*   r+   visit_download_reference  r]  z(LaTeXTranslator.visit_download_referencec                 C  r[  rG   r*   rw   r*   r*   r+   depart_download_reference  r]  z)LaTeXTranslator.depart_download_referencec                 C  r[  rG   r*   rw   r*   r*   r+   visit_pending_xref  r]  z"LaTeXTranslator.visit_pending_xrefc                 C  r[  rG   r*   rw   r*   r*   r+   depart_pending_xref  r]  z#LaTeXTranslator.depart_pending_xrefc                 C  rd  )Nz\sphinxstyleemphasis{re  rw   r*   r*   r+   visit_emphasis  r!  zLaTeXTranslator.visit_emphasisc                 C  rd  rg  re  rw   r*   r*   r+   depart_emphasis   r!  zLaTeXTranslator.depart_emphasisc                 C  rd  )Nz+\sphinxstyleliteralemphasis{\sphinxupquote{re  rw   r*   r*   r+   visit_literal_emphasis  r!  z&LaTeXTranslator.visit_literal_emphasisc                 C  rd  r  re  rw   r*   r*   r+   depart_literal_emphasis  r!  z'LaTeXTranslator.depart_literal_emphasisc                 C  rd  )Nz\sphinxstylestrong{re  rw   r*   r*   r+   visit_strong	  r!  zLaTeXTranslator.visit_strongc                 C  rd  rg  re  rw   r*   r*   r+   depart_strong  r!  zLaTeXTranslator.depart_strongc                 C  rd  )Nz)\sphinxstyleliteralstrong{\sphinxupquote{re  rw   r*   r*   r+   visit_literal_strong  r!  z$LaTeXTranslator.visit_literal_strongc                 C  rd  r  re  rw   r*   r*   r+   depart_literal_strong  r!  z%LaTeXTranslator.depart_literal_strongc                 C  sb   |  }| jd |dr)|| jvr)| jd| |d   | j| d S | jd d S )Nz\sphinxstyleabbreviation{explanationz} (%s)r   )rR   re   rh   r  r   r   r%  add)rJ   r[   abbrr*   r*   r+   visit_abbreviation  s   z"LaTeXTranslator.visit_abbreviationc                 C  r  rG   r  rw   r*   r*   r+   depart_abbreviation  rz  z#LaTeXTranslator.depart_abbreviationc                 C  
   |  |S rG   )r  rw   r*   r*   r+   visit_manpage"  r  zLaTeXTranslator.visit_manpagec                 C  r  rG   )r  rw   r*   r*   r+   depart_manpage%  r  zLaTeXTranslator.depart_manpagec                 C  rd  )Nz\sphinxtitleref{re  rw   r*   r*   r+   visit_title_reference(  r!  z%LaTeXTranslator.visit_title_referencec                 C  rd  rg  re  rw   r*   r*   r+   depart_title_reference+  r!  z&LaTeXTranslator.depart_title_referencec                 C  sn   t ttj |}dd |D }tdd |D td}t|tkr&|d t }| jt	d| 
|  t	  d S )Nc                 s  s     | ]}t tj|d  V  qdS )r   N)r	   r
   r  )r   citationr*   r*   r+   r  0  s    z8LaTeXTranslator.visit_thebibliography.<locals>.<genexpr>c                 s  r4  rG   r5  )r   r  r*   r*   r+   r  1  r7  )keyz!\begin{sphinxthebibliography}{%s})r	   r   r
   r  r   r   MAX_CITATION_LABEL_LENGTHre   rh   r   r%  )rJ   r[   	citationsr  longest_labelr*   r*   r+   visit_thebibliography.  s   z%LaTeXTranslator.visit_thebibliographyc                 C  rt  )Nz\end{sphinxthebibliography}ru  rw   r*   r*   r+   depart_thebibliography:  rw  z&LaTeXTranslator.depart_thebibliographyc              	   C  sJ   t tj|d }| jd| |  d|d  d|d d  d d S )Nr   z	\bibitem[r  rX  r  r  r   )r	   r
   r  re   rh   r%  rR   r  r*   r*   r+   visit_citation=  s   
zLaTeXTranslator.visit_citationc                 C  r[  rG   r*   rw   r*   r*   r+   depart_citationD  r]  zLaTeXTranslator.depart_citationc                 C  s2   | j rd S | jd|d  d|d  d tj)Nz\sphinxcite{rX  r  refnamer   )r   re   rh   r
   r  rw   r*   r*   r+   visit_citation_referenceG  s   "z(LaTeXTranslator.visit_citation_referencec                 C  r[  rG   r*   rw   r*   r*   r+   depart_citation_referenceN  r]  z)LaTeXTranslator.depart_citation_referencec                 C  s   | j r| jd d S d|d v r| jd d S |dd }d|d vs'|s/| jd d S | jj|i }| jj| |||dd	}| jd
t	 |
  d t	 d  tj)Nz*\sphinxstyleliteralintitle{\sphinxupquote{kbdr]   z\sphinxkeyboard{\sphinxupquote{r   coder  T)optsr}  nowrapz\sphinxcode{\sphinxupquote{%r   r  )r   re   rh   rf   r   highlight_optionsr   highlight_blockrR   r   rstripr
   r  )rJ   r[   langr  hlcoder*   r*   r+   visit_literalQ  s$   zLaTeXTranslator.visit_literalc                 C  rd  r  re  rw   r*   r*   r+   depart_literalf  r!  zLaTeXTranslator.depart_literalc                 C  r  rG   r  rw   r*   r*   r+   visit_footnote_referencei  r  z(LaTeXTranslator.visit_footnote_referencec                 C  rd  )Nz\sphinxfootnotemark[re  rw   r*   r*   r+   visit_footnotemarkl  r!  z"LaTeXTranslator.visit_footnotemarkc                 C  rd  )N]re  rw   r*   r*   r+   depart_footnotemarko  r!  z#LaTeXTranslator.depart_footnotemarkc                 C  sH   t tj|d }| jdt  | jd|   | jdt  d S )Nr   r   z\begin{footnotetext}[%s]r   )r	   r
   r  re   rh   r   rR   r  r*   r*   r+   visit_footnotetextr  s   z"LaTeXTranslator.visit_footnotetextc                 C  s    | j dt  | j d d S )Nr   z \end{footnotetext}\ignorespaces ru  rw   r*   r*   r+   depart_footnotetextx  s   z#LaTeXTranslator.depart_footnotetextc                 C  r[  rG   r*   rw   r*   r*   r+   visit_captioned_literal_block}  r]  z-LaTeXTranslator.visit_captioned_literal_blockc                 C  r[  rG   r*   rw   r*   r*   r+   depart_captioned_literal_block  r]  z.LaTeXTranslator.depart_captioned_literal_blockc           	      C  s  |j | kr|  jd7  _| jdt  d S | |}t|jt	r+|| |j7 }|r<| j
s<| jtd | d  |dd}|dd}|d	i }|d
d|d
< | jj|i }| jj|j |f|||d|}| j
r| jtd  |dd}n| jrd| j_d| j_|dd}n|dd}| d d }| jr| j
s|d7 }n|d7 }t|dg dd }|r| jtd|   | jt| t  |r| jdt  tj)Nr   z\begin{sphinxalltt}z\def\sphinxLiteralBlockLabel{r   r   r?   linenosFhighlight_argsforce)r  r+  r}  z\sphinxSetupCodeBlockInFootnotez\begin{Verbatim}z\begin{sphinxVerbatim}Tz\begin{sphinxVerbatimintable}iz\end{sphinxVerbatimintable}z\end{sphinxVerbatim}hl_linesr  z\fvset{hllines={, %s,}}%%z\sphinxresetverbatimhllines)	rawsourcerR   r   re   rh   r   r  rM   r  r  r   rf   r   r  r   r  r'  r   rm   ro   r  r}   r
   r  )	rJ   r[   r  r  r+  r,  r  r   hllinesr*   r*   r+   visit_literal_block  sX   


z#LaTeXTranslator.visit_literal_blockc                 C  s&   | j td t  |  jd8  _d S )Nz\end{sphinxalltt}r   )re   rh   r   r   rw   r*   r*   r+   depart_literal_block  s   z$LaTeXTranslator.depart_literal_blockc                 C  rd  )Nz\item[] re  rw   r*   r*   r+   
visit_line  r!  zLaTeXTranslator.visit_linec                 C  rR  rG   ru  rw   r*   r*   r+   depart_line  r!  zLaTeXTranslator.depart_linec                 C  sZ   t |jtjr| jdt  | jdt  n
| jtd t  | jr+d| j_d S d S )Nz\item[]z'\begin{DUlineblock}{\DUlineblockindent}z\begin{DUlineblock}{0em}T)	rM   r  r
   
line_blockre   rh   r   r   rm   rw   r*   r*   r+   visit_line_block  s   z LaTeXTranslator.visit_line_blockc                 C  rt  )Nz\end{DUlineblock}ru  rw   r*   r*   r+   depart_line_block  rw  z!LaTeXTranslator.depart_line_blockc                 C  s`   d}t |jdkr|jd }t|tjtjB rd}|s,| jdt  | j	r.d| j	_
d S d S d S )Nr   r   z\begin{quote}T)r   r  rM   r
   r9  rF  re   rh   r   r   rm   rJ   r[   doner  r*   r*   r+   visit_block_quote  s   
z!LaTeXTranslator.visit_block_quotec                 C  sN   d}t |jdkr|jd }t|tjtjB rd}|s%| jdt  d S d S )Nr   r   z\end{quote})	r   r  rM   r
   r9  rF  re   rh   r   r8  r*   r*   r+   depart_block_quote  s   
z"LaTeXTranslator.depart_block_quotec                 C  s   | j d r| jd d S d S )Nr  r3  )r   re   rh   rw   r*   r*   r+   visit_option  s   
zLaTeXTranslator.visit_optionc                 C  s   | j d  d7  < d S )Nr  r   )r   rw   r*   r*   r+   depart_option  s   zLaTeXTranslator.depart_optionc                 C  s   | j |dd dS )z1The delimiter between an option and its argument.	delimiterr  N)re   rh   rf   rw   r*   r*   r+   visit_option_argument  s   z%LaTeXTranslator.visit_option_argumentc                 C  r[  rG   r*   rw   r*   r*   r+   depart_option_argument  r]  z&LaTeXTranslator.depart_option_argumentc                 C  s   | j d | jd d S )Nz\item [r   )re   rh   r   rw   r*   r*   r+   visit_option_group  s   z"LaTeXTranslator.visit_option_groupc                 C  s   | j   | jd d S )Nz] )r   r  re   rh   rw   r*   r*   r+   depart_option_group 	  s   
z#LaTeXTranslator.depart_option_groupc                 C  rT  )Nz\begin{optionlist}{3cm}TrU  rw   r*   r*   r+   visit_option_list	  rW  z!LaTeXTranslator.visit_option_listc                 C  rt  )Nz\end{optionlist}ru  rw   r*   r*   r+   depart_option_list		  rw  z"LaTeXTranslator.depart_option_listc                 C  r[  rG   r*   rw   r*   r*   r+   visit_option_list_item	  r]  z&LaTeXTranslator.visit_option_list_itemc                 C  r[  rG   r*   rw   r*   r*   r+   depart_option_list_item	  r]  z'LaTeXTranslator.depart_option_list_itemc                 C  s    |  }| j| | tjrG   )rR   re   rh   r%  r
   r  )rJ   r[   ostringr*   r*   r+   visit_option_string	  s   z#LaTeXTranslator.visit_option_stringc                 C  rd  )Nr  re  rw   r*   r*   r+   visit_description	  r!  z!LaTeXTranslator.visit_descriptionc                 C  r[  rG   r*   rw   r*   r*   r+   depart_description	  r]  z"LaTeXTranslator.depart_descriptionc                 C  rd  )Nz	$^{\text{re  rw   r*   r*   r+   visit_superscript	  r!  z!LaTeXTranslator.visit_superscriptc                 C  rd  Nz}}$re  rw   r*   r*   r+   depart_superscript 	  r!  z"LaTeXTranslator.depart_superscriptc                 C  rd  )Nz	$_{\text{re  rw   r*   r*   r+   visit_subscript#	  r!  zLaTeXTranslator.visit_subscriptc                 C  rd  rL  re  rw   r*   r*   r+   depart_subscript&	  r!  z LaTeXTranslator.depart_subscriptc                 C  s   | dg }|dgkr| jd | jd d S |dgkr,| jd | jd d S |dgkr?| jd | jd d S |r]| js]| jd	d
| d  | jdt|  d S | jd d S )Nr]   menuselectionz\sphinxmenuselection{r   guilabelz\sphinxguilabel{acceleratorz\sphinxaccelerator{z\DUrole{z
}{\DUrole{r+  r>   )rf   re   rh   r   r   r   r   )rJ   r[   r]   r*   r*   r+   visit_inline)	  s   



zLaTeXTranslator.visit_inlinec                 C  r  rG   r  rw   r*   r*   r+   depart_inline:	  rz  zLaTeXTranslator.depart_inlinec                 C  r[  rG   r*   rw   r*   r*   r+   visit_generated=	  r]  zLaTeXTranslator.visit_generatedc                 C  r[  rG   r*   rw   r*   r*   r+   depart_generated@	  r]  z LaTeXTranslator.depart_generatedc                 C  r[  rG   r*   rw   r*   r*   r+   visit_compoundC	  r]  zLaTeXTranslator.visit_compoundc                 C  r[  rG   r*   rw   r*   r*   r+   depart_compoundF	  r]  zLaTeXTranslator.depart_compoundc                 C  s*   | dg }|D ]
}| jd|  qd S )Nr]   z
\begin{sphinxuseclass}{%s}rf   re   rh   )rJ   r[   r]   r  r*   r*   r+   visit_containerI	  s   zLaTeXTranslator.visit_containerc                 C  s&   | dg }|D ]}| jd qd S )Nr]   z
\end{sphinxuseclass}rY  )rJ   r[   r]   _cr*   r*   r+   depart_containerN	  s   z LaTeXTranslator.depart_containerc                 C  r[  rG   r*   rw   r*   r*   r+   visit_decorationS	  r]  z LaTeXTranslator.visit_decorationc                 C  r[  rG   r*   rw   r*   r*   r+   depart_decorationV	  r]  z!LaTeXTranslator.depart_decorationc                 C  r  rG   r  rw   r*   r*   r+   visit_header[	  r  zLaTeXTranslator.visit_headerc                 C  r  rG   r  rw   r*   r*   r+   visit_footer^	  r  zLaTeXTranslator.visit_footerc                 C  r  rG   r  rw   r*   r*   r+   visit_docinfoa	  r  zLaTeXTranslator.visit_docinfor   c                 C  s,   |  |}| jr|tdt dd}|S )Nz~\\r  ~)r   r   r'  r   rJ   r   r*   r*   r+   r%  f	  s   
zLaTeXTranslator.encodec                 C  s"   |  |ddddddS )Nz\textasciitilde{}rb  z\sphinxhyphen{}r<  z\textquotesingle{}'r  rc  r*   r*   r+   r  n	  s
   zLaTeXTranslator.encode_urir   c                 C  s   |  | }| j| d S rG   )r%  rR   re   rh   )rJ   r[   r   r*   r*   r+   
visit_Textz	  s   zLaTeXTranslator.visit_Textc                 C  r[  rG   r*   rw   r*   r*   r+   depart_Text~	  r]  zLaTeXTranslator.depart_Textc                 C  r  rG   r  rw   r*   r*   r+   visit_comment	  r  zLaTeXTranslator.visit_commentc                 C  r  rG   r  rw   r*   r*   r+   
visit_meta	  s   zLaTeXTranslator.visit_metac                 C  r[  rG   r*   rw   r*   r*   r+   visit_system_message	  r]  z$LaTeXTranslator.visit_system_messagec                 C  rR  rG   ru  rw   r*   r*   r+   depart_system_message	  r!  z%LaTeXTranslator.depart_system_messagec                 C  s:   | j r| jd|   tj| jd|   tj)Nz\protect\(%s\protect\)z\(%s\))r   re   rh   rR   r
   r  rw   r*   r*   r+   
visit_math	  s
   zLaTeXTranslator.visit_mathc                 C  s   | drd|d  d|d  }nd }| dr.|r#| jd|  | j|  tj	ddlm} | j|| || jj tj	)	Nr  	equation:rX  r  r  r  r   )wrap_displaymath)
rf   re   rh   rR   sphinx.util.mathrm  r   math_number_allr
   r  )rJ   r[   r  rm  r*   r*   r+   visit_math_block	  s   

z LaTeXTranslator.visit_math_blockc              
   C  s   d|d  d|d  }| j j}|rIzd| }| j|j|d W d S  tyH } ztjtd||d | jd	|  W Y d }~d S d }~ww | jd	|  d S )
Nrl  rX  r  r  r  )r  zInvalid math_eqref_format: %rr|  z
\eqref{%s})	r   math_eqref_formatre   rh   r  r  r   r   r   )rJ   r[   r  eqref_formatrefexcr*   r*   r+   visit_math_reference	  s   z$LaTeXTranslator.visit_math_referencec                 C  r[  rG   r*   rw   r*   r*   r+   depart_math_reference	  r]  z%LaTeXTranslator.depart_math_reference)rN   r   rD   r   rC   r   rE   rF   )r   r  rE   rF   )rE   r  r   )TT)r	  r}   r
  rx   r  rx   rE   r}   )F)r[   r   r  rx   rE   r}   )r	  r}   rE   r}   )r  r}   rE   r}   )r(  r}   r)  r}   rE   r}   )rJ  r}   rK  rL  rE   r}   )rE   rW  r   )r[   r   r  r  rE   rF   )r[   r   r  r}   rE   rF   )r[   r  rE   rF   r   )r   r}   r   rt   rE   ru  )r[   r   rE   rx   r   r}   rE   r}   )r[   r   rE   rF   (  r5   r6   r7   rX   r   r  rI   r  r  rR   r  r  r  r  r   r  r   r  r  r   r   rZ  r\  r^  r_  rb  rc  rf  rh  rj  rk  rl  depart_sidebarrm  rn  ro  rp  rs  rv  ry  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r   r"  r#  r&  r*  r0  r2  r<  r>  r@  rO  rP  rQ  rS  rV  rX  rY  rZ  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  visit_field_namedepart_field_namevisit_field_bodydepart_field_bodyri  rj  rl  ro  rq  rr  rs  rt  rv  rx  r  r  r  r  r  r  r  r  r  r  r  r  visit_attentiondepart_attentionvisit_cautiondepart_cautionvisit_dangerdepart_dangervisit_errordepart_error
visit_hintdepart_hintvisit_importantdepart_important
visit_notedepart_note	visit_tip
depart_tipvisit_warningdepart_warningr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r	  r
  r  r  r  r  r  r  r  r!  r"  r#  r$  r&  r'  r(  r)  r*  r1  r2  visit_doctest_blockdepart_doctest_blockr3  r4  r6  r7  r:  r;  r<  r=  r?  r@  rA  rB  rC  rD  rE  rF  rH  rI  rJ  rK  rM  rN  rO  rS  rT  rU  rV  rW  rX  rZ  r\  r]  r^  r_  r`  ra  r%  r  re  rf  rg  rh  ri  rj  rk  rp  ru  rv  rY   r*   r*   rK   r+   rQ   9  s  
  	
4	9

	=		* ;%
"S2	G@	9
6	rQ   )r  r  rh  rx  rw  )r   r}   r   rt   rE   r}   )Or8   
__future__r   r   collectionsr   collections.abcr   osr   typingr   r   r   r	   docutilsr
   r   sphinxr   r   sphinx.errorsr   sphinx.localer   r   r   sphinx.utilr   r   sphinx.util.docutilsr   sphinx.util.index_entriesr   sphinx.util.nodesr   r   sphinx.util.templater   sphinx.util.texescaper   docutils.utils.romanr   ImportErrorromandocutils.nodesr   r   r   sphinx.builders.latexr   sphinx.builders.latex.themingr   sphinx.domainsr    	getLoggerr5   r   r  r   rK  r   ra  compiler  r  r4   r:   Writerr<   rZ   r   r   r   rQ   sphinx.builders.latex.nodesr  r  rh  r*   r*   r*   r+   <module>   s    
	
  	
#                 