U
    \Sh\b                    @  s6  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	m
Z
mZmZ ddlmZ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 ddlmZmZm Z  ddl!m"Z"m#Z#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" e0k
r.   ddl1m/Z/ Y nX e	rNddl2m3Z3 ddl4m5Z5 e"6e7Z8dZ9dddddddgZ:edd d d!d"d#d$d%Z;d&Z<d'Z=e>d(Z?G d)d* d*ej@ZAG d+d, d,eZBG d-d. d.ejCZDG d/d0 d0ZEG d1d2 d2ZFd3d3d4d5d6ZGd?d3d8d3d9d:d;ZHG d<d= d=e&ZIdd>lJmKZKmLZLmMZM 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)path)TYPE_CHECKINGAnyIterablecast)nodeswriters)ElementNodeText)addnodeshighlighting)
IndexEntry)StandardDomain)SphinxError)___admonitionlabels)logging
split_into	texescape)SphinxTranslator)clean_astextget_prev_node)LaTeXRenderer)tex_replace_map)toRoman)LaTeXBuilder)Theme   partchaptersectionZ
subsectionZsubsubsection	paragraphZsubparagraphc                   C  s   dS )N\arabic r'   r'   r'   G/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/writers/latex.py<lambda>,       r)   r&   z\alphz\Alphz\romanz\Roman)arabicZ
loweralphaZ
upperalphaZ
lowerromanZ
upperroman
z

z^(.*\S)\s+\(([^()]*)\)\s*$c                   @  s   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(   r-   :   s   r-   c                   @  s   e Zd ZdZdS )UnsupportedErrorzMarkup is unsupported in LaTeXN)r.   r/   r0   categoryr'   r'   r'   r(   r2   >   s   r2   c                      s|   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Zddd fddZddddZ	  Z
S )LaTeXWriter)ZsphinxlatexzLaTeX writer options zDocument namez	--docnamedefaultzDocument classz
--docclassZmanualAuthorz--authordict[str, Any]settings_defaultsNr   None)builderreturnc                   s   t    || _d | _d S N)super__init__r;   theme)selfr;   	__class__r'   r(   r?   O   s    
zLaTeXWriter.__init__r<   c                 C  s6   | j | j| j | j}| j| tt| | _d S r=   )	r;   Zcreate_translatordocumentr@   Z	walkaboutr   LaTeXTranslatorastextoutput)rA   visitorr'   r'   r(   	translateT   s    zLaTeXWriter.translate)r.   r/   r0   	supportedZsettings_specr9   __annotations__rH   r?   rJ   __classcell__r'   r'   rB   r(   r4   B   s   
r4   c                   @  sp   e Zd ZdZdddddZddd	d
ZddddZddddZddddddZdddddddZ	dS )TablezA table datar   r:   noder<   c                 C  s$  g | _ g | _|dd| _|dg | _g | _d| jkrF| jd n.d| jkr^| jd nd| jkrt| jd d| jkr| jd nd| jkr| jd d	| _d | _d | _	d| jksd| jkrd
| _	nd| jkrd| _	g | _
d| _d| _d| _d | _g | _d	| _d	| _tt| _d	| _d S )Nalignr6   classesstandard
borderlessbooktabsZnocolorrowsZ	colorrowsr   r5   |F)headerbodygetrQ   rR   stylesappendcolcountcolspeccolsep	colwidthshas_problematichas_oldproblematichas_verbatimcaptionstubscolrowr   intcellscell_idrA   rP   r'   r'   r(   r?   _   s@    






zTable.__init__boolrD   c                 C  s   | j dkpd| jkS )z5True if and only if table uses longtable environment.   	longtable)rf   rR   rA   r'   r'   r(   is_longtable   s    zTable.is_longtablestrc                 C  sB   |   rdS | jrdS | jr dS | js6| jr:d| jkr:dS dS dS )zReturns the LaTeX environment name for the table.

        The class currently supports:

        * longtable
        * tabular
        * tabulary
        rm   Ztabulartabularycolwidths-givenN)ro   rb   r]   r`   r_   rR   rn   r'   r'   r(   get_table_type   s    	zTable.get_table_typec                   s   | j r| j S | j}| jr^d| jkr^t| j  fdd| jD }d| || | dt S | jr|d|| j| j|f t S | 	 dkrd| d| | j  d t S | j
rd|| j| j|f t S d| d	| | j  d t S d
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``.
        rr   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}}rq   TlN)r]   r^   r_   rR   sumjoinCRr`   r\   rs   ra   )rA   _colsepZcolspecsr'   rv   r(   get_colspec   s0    

  zTable.get_colspecrg   )heightru   r<   c                 C  sl   |  j d7  _ t|D ]P}t|D ]B}| j| j| | j| f dksHt| 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)ri   rangerh   rf   re   AssertionError)rA   r   ru   re   rf   r'   r'   r(   add_cell   s
    "zTable.add_cellNz
int | NonezTableCell | None)rf   re   r<   c                 C  sF   z*|dkr| j }|dkr| j}t| ||W S  tk
r@   Y dS X dS )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)rf   re   	TableCell
IndexError)rA   rf   re   r'   r'   r(   cell   s    z
Table.cell)NN)
r.   r/   r0   r1   r?   ro   rs   r   r   r   r'   r'   r'   r(   rN   \   s   &   rN   c                   @  sH   e Zd ZdZdddddddZeddd	d
ZeddddZdS )r   zData of a cell in a table.rN   rg   r:   )tablerf   re   r<   c                 C  s   |j ||f dkrt|| _|j ||f | _|| _|| _|j | jd | jf | jkrd|  jd8  _q8|j | j| jd f | jkr|  jd8  _qdd S Nr   r   )rh   r   r   ri   rf   re   )rA   r   rf   re   r'   r'   r(   r?      s    zTableCell.__init__rD   c                 C  s0   d}| j j| j| j| f | jkr,|d7 }q|S )zReturns the cell width.r   r   r   rh   rf   re   ri   )rA   ru   r'   r'   r(   ru      s    
zTableCell.widthc                 C  s0   d}| j j| j| | jf | jkr,|d7 }q|S )zReturns the cell height.r   r   r   )rA   r   r'   r'   r(   r      s    
zTableCell.heightN)r.   r/   r0   r1   r?   propertyru   r   r'   r'   r'   r(   r      s   r   rp   textr<   c                 C  s   t dd| S )z#Adjust spacing after abbreviations.z
\.(?=\s|$)z.\@)resub)r   r'   r'   r(   escape_abbr   s    r   d   rg   	width_strscaler<   c                 C  s   t d| }|st| }| dd \}}|dkrzt| |dkrNd| }q|dkr`d| }q|d	krd
t|d  }nXt|| d }|dkrd| }n6|dkrd| }n$|d	krd|d  }n|d| }|S )z4Convert `width_str` with rst length to LaTeX length.z^(\d*\.?\d*)\s*(\S*)$N   r   )r5   Z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unitZamount_floatr'   r'   r(   rstdim_to_latexdim   s,    



r   c                      s  e Zd ZU ded< dZdZddddd fd	d
ZdddddZddddZddddZ	ddddddddZ
dddddddZddddd Zdddd!d"Zddd#d$d%Zdddd&d'Zdddd(d)d*Zddd+d,Zdd-dd.d/d0Zed1dd2d3Zddd4d5d6Zddd4d7d8Zddd4d9d:Zddd4d;d<Zddd4d=d>Zddd4d?d@Zddd4dAdBZddd4dCdDZddd4dEdFZddd4dGdHZeZeZ ddd4dIdJZ!ddd4dKdLZ"ddd4dMdNZ#ddd4dOdPZ$ddd4dQdRZ%ddd4dSdTZ&ddd4dUdVZ'ddd4dWdXZ(ddd4dYdZZ)ddd4d[d\Z*ddd4d]d^Z+ddd4d_d`Z,ddd4dadbZ-ddd4dcddZ.ddd4dedfZ/ddd4dgdhZ0ddd4didjZ1ddd4dkdlZ2ddd4dmdnZ3ddd4dodpZ4ddd4dqdrZ5ddd4dsdtZ6ddd4dudvZ7ddd4dwdxZ8ddd4dydzZ9ddd4d{d|Z:ddd4d}d~Z;ddd4ddZ<ddd4ddZ=ddd4ddZ>ddd4ddZ?ddd4ddZ@ddddddZAddd4ddZBddd4ddZCddd4ddZDddd4ddZEddddddZFddd4ddZGddd4ddZHddd4ddZIddd4ddZJddd4ddZKddd4ddZLddd4ddZMddd4ddZNddd4ddZOddd4ddZPddd4ddZQddd4ddZRddd4ddZSddd4ddZTddd4ddZUddd4ddZVddd4ddZWddd4ddZXddd4ddZYddd4ddZZddd4ddZ[ddd4ddÄZ\ddd4ddńZ]ddd4ddǄZ^ddd4ddɄZ_ddd4dd˄Z`ddd4dd̈́Zaddd4ddτZbddd4ddфZcddd4ddӄZdddd4ddՄZeddd4ddׄZfddd4ddلZgddd4ddۄZhddd4dd݄Ziddd4dd߄Zjddd4ddZkddd4ddZlddd4ddZmddd4ddZnddd4ddZoddd4ddZpddd4ddZqddd4ddZrddd4ddZsddd4ddZtddd4ddZuddd4ddZvddd4ddZwddd4ddZxddd4ddZyddd4ddZzeqZ{erZ|euZ}evZ~ddd4d dZddd4ddZddd4ddZddd4ddZddd4dd	Zddd4d
dZddd4ddZddd4ddZdddddddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4d d!Zddd4d"d#Zddd4d$d%Zddd4d&d'Zddd4d(d)Zddd4d*d+Zddd4d,d-Zddd4d.d/ZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZddd4d0d1Zddd4d2d3Zddd4d4d5Zddd4d6d7Zddd4d8d9Zddd4d:d;Zddd4d<d=Zddd4d>d?Zddd4d@dAZddd4dBdCZddd4dDdEZddd4dFdGZddd4dHdIZddd4dJdKZddd4dLdMZddd4dNdOZddd4dPdQZddd4dRdSZddd4dTdUZddd4dVdWZddd4dXdYZddd4dZd[Zddd4d\d]Zddd4d^d_Zddd4d`daZddd4dbdcZddd4dddeZddd4dfdgZddd4dhdiZddd4djdkZddd4dldmZddd4dndoZddd4dpdqZddd4drdsZddd4dtduZddd4dvdwZddd4dxdyZddd4dzd{Zddd4d|d}Zddd4d~dZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZeZeZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddÄZddd4dĐdńZddd4dƐdǄZddd4dȐdɄZddd4dʐd˄Zddd4d̐d̈́Zddd4dΐdτZddd4dАdфZddd4dҐdӄZdddԜdՐdքZdddԜdאd؄Zddd4dڐdۄZddd4dܐd݄Zddd4dސd߄Zddd4ddZ ddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZddd4ddZ  ZS (  rF   r   r;   r   Fznodes.documentr    r:   )rE   r;   r@   r<   c                   s  t  || g | _|| _d| _d| _d| _d| _d| _d| _	d| _
d| _d| _d| _d| _d| _d| _d| _d| _g }| jj | _td d  | _| jjdkr| jd d| _| jjrz| j| jj| _W n4 tk
r   t !t"d| jj| jj#f  Y nX | jj$r| jj%| _%| j%dkrt&| jt&tk rZ| jdkrZ|  j%| j7  _%n|  j%| jd 7  _%t'| j%t&td | _%|(d| j%  n
|(d | jj$r| jj)r|(d	 | jj*d
krd| jj+krdt, d t, d | jd< | jj-| _-| j-. st !t"d| jj* | j/}| j01dr| j01dd| j d }t&| jt&tk rr| jdkrr|d7 }|t&td krt !t"d t&td }d| | jd< t2||}| jj$r| jj%dkrt2|| j%d }|| j/krd| | jd< |1d}|r| 3d|| jd< | jd r:|(d| jd   |rTdd4| | jd< | jd rtd| jd  | jd< | jd  r| jd!  d| jd   7  < t5j6d"| jj7| jj8d#| _9g | _g | _:g | _;d | _<g | _=d | _>g | _?g | _@tA | _Bd S )$Nr   r   Fr$   r#   z+unknown %r toplevel_sectioning for class %rznumfigreset=%sZnonumfigresetZ
mathnumfig>   enjaZ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\contentsnameZmaxlistdepthzmaxlistdepth=%sz[,%s],sphinxpkgoptionsZsphinxsetupz\sphinxsetup{%s}ZextraclassoptionsZclassoptionslatexlatex_engine)Cr>   r?   rX   r@   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_listZfirst_paramin_desc_signaturer;   contextcopyelementsLATEXSECTIONNAMESsectionnamesZtoplevel_sectioningremovetop_sectionlevelconfigZlatex_toplevel_sectioningindexr   loggerwarningr   ZdocclassZnumfigZnumfig_secnum_depthlenminr[   Zmath_numfiglanguageZlatex_elementsr   babelZis_supported_languager   rE   rY   maxbabel_renewcommandr~   r   ZPygmentsBridgepygments_styler   highlighterZ	descstacktablesnext_table_colspec	bodystackZfootnote_restrictedZpending_footnotescurfilestacksethandled_abbrs)rA   rE   r;   r@   r   Zminsecnumdepthr   r   rB   r'   r(   r?   #  s    














zLaTeXTranslator.__init__z	list[str])newbodyr<   c                 C  s   | j | j || _d S r=   )r   r[   rX   )rA   r   r'   r'   r(   pushbody  s    zLaTeXTranslator.pushbodyrD   c                 C  s   | j }| j | _ |S r=   )rX   r   pop)rA   rX   r'   r'   r(   popbody  s    zLaTeXTranslator.popbodyrp   c                 C  s,   | j d| j|  d | d| j S )Nr5   )rX   indiceszlatex.tex_t)r   updater~   rX   generate_indicesrenderrn   r'   r'   r(   rG     s
    
zLaTeXTranslator.astextTrk   )idwithdocanchorr<   c                 C  s0   |r| j d d | }|rdndd| |  S )N:\phantomsectionr5   
\label{%s})r   idescape)rA   r   r   r   r'   r'   r(   hypertarget  s    zLaTeXTranslator.hypertargetr   )rP   r   r<   c                   s0   d  fdd|d D }|r(d| S |S d S )Nr5   c                 3  s   | ]} j |d dV  qdS )Fr   N)r   )rt   node_idrn   r'   r(   	<genexpr>  s     z1LaTeXTranslator.hypertarget_to.<locals>.<genexpr>idsr   )r~   )rA   rP   r   labelsr'   rn   r(   hypertarget_to  s    zLaTeXTranslator.hypertarget_tor   r<   c                 C  s   d|  | S )Nz{\hyperref[%s]{r   rA   r   r'   r'   r(   	hyperlink  s    zLaTeXTranslator.hyperlinkc                 C  s   d|  | S )Nz\autopageref*{%s}r   r   r'   r'   r(   hyperpageref  s    zLaTeXTranslator.hyperpageref)sr<   c                 C  s   t || jjS r=   )r   escaper   r   )rA   r   r'   r'   r(   r     s    zLaTeXTranslator.escapec                 C  s(   dt |tddddd S )Nz\detokenize{%s}asciibackslashreplace\r   )rp   rJ   r   encodedecodereplacer   r'   r'   r(   r     s      zLaTeXTranslator.idescape)command
definitionr<   c                 C  sD   | j d rd| j  }d}nd}d}| d| d| d| t S )NZmultilingualz\addto\captions%s{rz   r5   z\renewcommand{}{)r   r   Zget_languager   )rA   r   r   prefixsuffixr'   r'   r(   r     s    
z"LaTeXTranslator.babel_renewcommandc                   s   dddd fdd}g  j j}|rjjj D ]p}|jD ]d}|j d|j }t|t	rj||krjq@||
jj\}}|sq@ d|j t  ||| q@q6d	 S )
Nz"list[tuple[str, list[IndexEntry]]]rk   r:   )content	collapsedr<   c              
     s     dt    dt  t| D ]\}\}}|dkrF  dt    d| t  |D ]j}|d spqb  d|d   |d r  d	|d     d
|d |d f t  qbq$  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})r[   r   	enumerater   r   r   )r   r   iletterentriesentryretrA   r'   r(   generate  s(    
z2LaTeXTranslator.generate_indices.<locals>.generate-z\renewcommand{\indexname}{%s}r5   )r   Zlatex_domain_indicesr;   envdomainsvaluesr   name
isinstancelistr  Zdocnamesr[   	localnamer   r~   )rA   r  Zindices_configdomainZindexclsZ	indexnamer   r   r'   r  r(   r     s$    

z LaTeXTranslator.generate_indicesr8   )template_name	variablesr<   c                 C  sT   t | jjd}| jjD ]0}t| jj||}t|r|	||  S q|	||S )Nr   )
r   r   r   Ztemplates_pathr   r~   r;   Zconfdirexistsr   )rA   r  r  rendererZtemplate_dirtemplater'   r'   r(   r     s    
zLaTeXTranslator.renderzTable | Nonec                 C  s   | j r| j d S dS dS )zGet current table.r   N)r   rn   r'   r'   r(   r     s    
zLaTeXTranslator.tablerO   c                 C  st   | j |dd | jdkr&d| _n$| jdkrJ| jtd t  d| _d|krd| j| d | jd | _d S )Ndocnamer5   r   r   z	\appendixr   z:doc)	r   r[   rY   r   rX   r   r   r   sectionlevelrj   r'   r'   r(   visit_document  s    

zLaTeXTranslator.visit_documentc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_document!  s    zLaTeXTranslator.depart_documentc                 C  s(   | j |d  | jtd t  d S )Nr  z\sphinxstepscope)r   r[   rX   r   rj   r'   r'   r(   visit_start_of_file$  s    z#LaTeXTranslator.visit_start_of_filec                 C  s   | j   d S r=   )r   r   rj   r'   r'   r(   depart_start_of_file(  s    z$LaTeXTranslator.depart_start_of_filec                 C  s$   | j s|  jd7  _| jt d S Nr   )r   r  rX   r[   	BLANKLINErj   r'   r'   r(   visit_section+  s    zLaTeXTranslator.visit_sectionc                 C  s   t | jd | jd | _d S r  )r   r  r   rj   r'   r'   r(   depart_section0  s    
zLaTeXTranslator.depart_sectionc                 C  s   | j d d S )Nz{\color{red}\bfseries{}rX   r[   rj   r'   r'   r(   visit_problematic4  s    z!LaTeXTranslator.visit_problematicc                 C  s   | j d d S Nrz   r!  rj   r'   r'   r(   depart_problematic7  s    z"LaTeXTranslator.depart_problematicc                 C  s   d| _ | jtd t  d S )Nr   z\begin{sphinxShadowBox}r   rX   r[   r   rj   r'   r'   r(   visit_topic:  s    zLaTeXTranslator.visit_topicc                 C  s   d| _ | jdt  d S )Nr   z\end{sphinxShadowBox}r%  rj   r'   r'   r(   depart_topic>  s    zLaTeXTranslator.depart_topicc                 C  s   d S r=   r'   rj   r'   r'   r(   visit_glossaryD  s    zLaTeXTranslator.visit_glossaryc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_glossaryG  s    zLaTeXTranslator.depart_glossaryc                 C  s&   | j t | j dt  d| _d S )Nz\begin{productionlist}r   )rX   r[   r  r   r   rj   r'   r'   r(   visit_productionlistJ  s    z$LaTeXTranslator.visit_productionlistc                 C  s   | j dt  d| _d S )Nz\end{productionlist}r   )rX   r[   r  r   rj   r'   r'   r(   depart_productionlistO  s    z%LaTeXTranslator.depart_productionlistc                 C  sN   |d r>|d }| j | d|  | j d| |  n| j d d S )NZ	tokennamezgrammar-token-z\production{%s}{z\productioncont{)rX   r[   r   r   )rA   rP   tnr'   r'   r(   visit_productionS  s
    z LaTeXTranslator.visit_productionc                 C  s   | j dt  d S r#  rX   r[   r   rj   r'   r'   r(   depart_production[  s    z!LaTeXTranslator.depart_productionc                 C  s   | j | jd  d S )NZ
transition)rX   r[   r   rj   r'   r'   r(   visit_transition^  s    z LaTeXTranslator.visit_transitionc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_transitiona  s    z!LaTeXTranslator.depart_transitionc              	   C  s  |j }t|tjrtjt|tjr0| jrt|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rd| dt|  }z$| jd	| j| j  | d
 W n4 tk
r   | jd	| jd  | d
 Y nX | jdt | |j   nt|tjr\| jd | jdt  nt|tj r| jd | jdt  ntt|tj!r| jd
 | jdt  nHt|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titler5   [%s] r   ry   r   rz   z\sphinxstyletopictitle{z\sphinxstylesidebartitle{zJencountered title node not in section, topic, table, admonition or sidebarz\sphinxstyleothertitle{)%parentr  r   seealsor	   SkipNoder$   r   r   childrenr   r   r   r   r   r   rG   anyfindallimager~   r   splitrX   r[   r   r  r   r   r   r   ZtopicsidebarZ
Admonitionr   r   r   )rA   rP   r7  shortr'   r'   r(   visit_titled  sP    

$$
zLaTeXTranslator.visit_titlec                 C  s8   d| _ t|jtjr"|  | j_n| j| j	
  d S Nr   )r   r  r7  r	   r   r   rc   rX   r[   r   r   rj   r'   r'   r(   depart_title  s    zLaTeXTranslator.depart_titlec                 C  s<   t |jtjr,| jd | jdt  n| jd d S )Nz\sphinxstylesidebarsubtitle{rz   r5   )r  r7  r	   r?  rX   r[   r   r   rj   r'   r'   r(   visit_subtitle  s    zLaTeXTranslator.visit_subtitlec                 C  s   | j | j  d S r=   rX   r[   r   r   rj   r'   r'   r(   depart_subtitle  s    zLaTeXTranslator.depart_subtitlec                 C  sX   | j jdkr*| jt | jdt  n| jt | jdt  | jrTd| j_d S )Nfootnotez&\begin{savenotes}\begin{fulllineitems}z\begin{fulllineitems}T)r   latex_show_urlsrX   r[   r  r   r   r`   rj   r'   r'   r(   
visit_desc  s    zLaTeXTranslator.visit_descc                 C  sV   | j r| jtd  d| _ | jjdkr>| jtd t  n| jtd t  d S )N\pysigstopsignaturesFrG  z"\end{fulllineitems}\end{savenotes}z\end{fulllineitems})r   rX   r[   r   r   rH  r  rj   r'   r'   r(   depart_desc  s    zLaTeXTranslator.depart_descc                 C  s  ddddd}ddddd	}d
| _ |D ]}t|tjrd| _ ||}t|tjsXt||}||}|r|r| jtd  q| jtd  n&|r| jtd  n| jtd   qt|tjr*||r| jtd  n| jtd   qq*| jtd  d S )Nr   Node | None)er<   c              	   S  s8   z| j | j | d  W S  ttfk
r2   Y d S X d S r  )r7  r   AttributeErrorr   rM  r'   r'   r(   next_sibling  s    z;LaTeXTranslator._visit_signature_line.<locals>.next_siblingr   rk   c                 S  s
   |  dS )Nmulti_line_parameter_list)rY   rO  r'   r'   r(   has_multi_line  s    z=LaTeXTranslator._visit_signature_line.<locals>.has_multi_lineFTz+\pysigwithonelineperargwithonelinepertparg{z)\pysiglinewithargsretwithonelinepertparg{z$\pysigwithonelineperargwithtypelist{z"\pysiglinewithargsretwithtypelist{z\pysigwithonelineperarg{z\pysiglinewithargsret{z\pysigline{)	has_tp_listr  r   Zdesc_type_parameter_listZdesc_parameterlistr   rX   r[   r   )rA   rP   rP  rR  childZarglistZmulti_tp_listZmulti_arglistr'   r'   r(   _visit_signature_line  s0    z%LaTeXTranslator._visit_signature_linec                 C  s   | j d d S r#  r!  rj   r'   r'   r(   _depart_signature_line  s    z&LaTeXTranslator._depart_signature_linec                 C  s   d}|j d dkr6|d r6|d D ]}|| |7 }q"| j| | js^d| _| jtd  |dst| | n| jtd  d S )	Nr5   objtypeZdescriber   Tz\pysigstartsignaturesis_multilinez\pysigstartmultiline)r7  r   rX   r[   r   r   rY   rU  )rA   rP   Zhyperr   r'   r'   r(   visit_desc_signature  s    
z$LaTeXTranslator.visit_desc_signaturec                 C  s*   | ds| | n| jtd  d S )NrX  z\pysigstopmultiline)rY   rV  rX   r[   r   rj   r'   r'   r(   depart_desc_signature  s    
z%LaTeXTranslator.depart_desc_signaturec                 C  s   |  | d S r=   )rU  rj   r'   r'   r(   visit_desc_signature_line  s    z)LaTeXTranslator.visit_desc_signature_linec                 C  s   |  | d S r=   )rV  rj   r'   r'   r(   depart_desc_signature_line  s    z*LaTeXTranslator.depart_desc_signature_linec                 C  s$   | j s
t| jtd  d| _ d S )NrJ  F)r   r   rX   r[   r   rj   r'   r'   r(   visit_desc_content  s    
z"LaTeXTranslator.visit_desc_contentc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_desc_content  s    z#LaTeXTranslator.depart_desc_contentc                 C  s   | j d d S )N\sphinxcode{\sphinxupquote{r!  rj   r'   r'   r(   visit_desc_inline  s    z!LaTeXTranslator.visit_desc_inlinec                 C  s   | j d d S N}}r!  rj   r'   r'   r(   depart_desc_inline  s    z"LaTeXTranslator.depart_desc_inlinec                 C  s   | j d |  jd7  _d S )N\sphinxbfcode{\sphinxupquote{r   rX   r[   r   rj   r'   r'   r(   visit_desc_name  s    zLaTeXTranslator.visit_desc_namec                 C  s   | j d |  jd8  _d S Nrb  r   re  rj   r'   r'   r(   depart_desc_name   s    z LaTeXTranslator.depart_desc_namec                 C  s   | j d |  jd7  _d S )Nr_  r   re  rj   r'   r'   r(   visit_desc_addname$  s    z"LaTeXTranslator.visit_desc_addnamec                 C  s   | j d |  jd8  _d S rg  re  rj   r'   r'   r(   depart_desc_addname(  s    z#LaTeXTranslator.depart_desc_addnamec                 C  s   d S r=   r'   rj   r'   r'   r(   visit_desc_type,  s    zLaTeXTranslator.visit_desc_typec                 C  s   d S r=   r'   rj   r'   r'   r(   depart_desc_type/  s    z LaTeXTranslator.depart_desc_typec                 C  s   | j d d S )Nz{ $\rightarrow$ r!  rj   r'   r'   r(   visit_desc_returns2  s    z"LaTeXTranslator.visit_desc_returnsc                 C  s   | j d d S r#  r!  rj   r'   r'   r(   depart_desc_returns5  s    z#LaTeXTranslator.depart_desc_returnsztype[Element])rP   parameter_groupr<   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'   )r  rt   cro  r'   r(   rx   G  s     z=LaTeXTranslator._visit_sig_parameter_list.<locals>.<listcomp>z\sphinxparamcomma rQ  FN)is_first_paramoptional_param_levelparams_left_at_levelparam_group_indexr:  list_is_required_paramr}   required_params_leftparam_separatorrY   rQ  )rA   rP   ro  r'   rr  r(   _visit_sig_parameter_list8  s    	z)LaTeXTranslator._visit_sig_parameter_listc                 C  s$   | j s| jd | |tj d S Nr   )rS  rX   r[   rz  r   desc_parameterrj   r'   r'   r(   visit_desc_parameterlistM  s    z(LaTeXTranslator.visit_desc_parameterlistc                 C  s   | j d d S r{  r!  rj   r'   r'   r(   depart_desc_parameterlistS  s    z)LaTeXTranslator.depart_desc_parameterlistc                 C  s   | j d | |tj d S r{  )rX   r[   rz  r   Zdesc_type_parameterrj   r'   r'   r(   visit_desc_type_parameter_listW  s    z.LaTeXTranslator.visit_desc_type_parameter_listc                 C  s   | j d d S r{  r!  rj   r'   r'   r(   depart_desc_type_parameter_list\  s    z/LaTeXTranslator.depart_desc_type_parameter_list)rP   parameter_macror<   c                 C  sj   | j rd| _ n| js(| js(| j| j | jdkrB|  jd8  _n|  jd8  _|dsf| j| d S )NFr   r   noemph)	rs  rQ  rx  rX   r[   ry  rt  ru  hasattr)rA   rP   r  r'   r'   r(   _visit_sig_parameter`  s    

z$LaTeXTranslator._visit_sig_parameterc                 C  s   | ds| jd | j| j }| jr|| jd t| jk}| oP| j| jd  }| jdk}|sl|r|sl|r| j| j n| j	r| j| j |r|  jd7  _d S )Nr  rz   r   r   )
r  rX   r[   rw  rv  rQ  r   ru  ry  rx  )rA   rP   Zis_requiredZis_last_groupZnext_is_requiredZopt_param_left_at_levelr'   r'   r(   _depart_sig_parameterl  s    

z%LaTeXTranslator._depart_sig_parameterc                 C  s   |  |d d S )Nz\sphinxparam{r  rj   r'   r'   r(   visit_desc_parameter  s    z$LaTeXTranslator.visit_desc_parameterc                 C  s   |  | d S r=   r  rj   r'   r'   r(   depart_desc_parameter  s    z%LaTeXTranslator.depart_desc_parameterc                 C  s   |  |d d S )Nz\sphinxtypeparam{r  rj   r'   r'   r(   visit_desc_type_parameter  s    z)LaTeXTranslator.visit_desc_type_parameterc                 C  s   |  | d S r=   r  rj   r'   r'   r(   depart_desc_type_parameter  s    z*LaTeXTranslator.depart_desc_type_parameterc                 C  s   t dd |jD | _|  jd7  _| j| _| jr| jrF| jd q| j	rh| j| j
 | jd q| jd | j| j
 n| jd d S )Nc                 S  s   g | ]}t |tjqS r'   )r  r   r|  rp  r'   r'   r(   rx     s   z7LaTeXTranslator.visit_desc_optional.<locals>.<listcomp>r   z\sphinxoptional{)r}   r:  ru  rt  max_optional_param_levelrQ  rs  rX   r[   rx  ry  rj   r'   r'   r(   visit_desc_optional  s    
z#LaTeXTranslator.visit_desc_optionalc                 C  sZ   |  j d8  _ | jr2| j | jd kr2| j| j | jd | j dkrV|  jd7  _d S )Nr   rz   r   )rt  rQ  r  rX   r[   ry  rv  rj   r'   r'   r(   depart_desc_optional  s    
z$LaTeXTranslator.depart_desc_optionalc                 C  s   | j d d S )Nrd  r!  rj   r'   r'   r(   visit_desc_annotation  s    z%LaTeXTranslator.visit_desc_annotationc                 C  s   | j d d S ra  r!  rj   r'   r'   r(   depart_desc_annotation  s    z&LaTeXTranslator.depart_desc_annotationc                 C  s(   | j t | j dtd  t  d S )Nz\begin{sphinxseealso}{%s:}r8  )rX   r[   r  r   r   rj   r'   r'   r(   visit_seealso  s    zLaTeXTranslator.visit_seealsoc                 C  s(   | j t | j d | j t d S )Nz\end{sphinxseealso})rX   r[   r  rj   r'   r'   r(   depart_seealso  s    zLaTeXTranslator.depart_seealsoc                 C  sL   t |dkr&| dtdfkr&tj| jd | jdt  d| _	d S )Nr   Z	Footnotesz\subsubsection*{rz   )
r   rG   r   r	   r9  rX   r[   r   r   r   rj   r'   r'   r(   visit_rubric  s
     zLaTeXTranslator.visit_rubricc                 C  s   d| _ | j| j  d S rB  )r   rX   r[   r   r   rj   r'   r'   r(   depart_rubric  s    zLaTeXTranslator.depart_rubricc                 C  sz   |  j d7  _ ttj|d }| jr:| jd|   n$| jdt  | jd|   d|krf| jdt  d S )Nr   r   z\begin{footnote}[%s]r   Zreferred\sphinxAtStartFootnote)	r   r   r	   labelr   rX   r[   rG   r   rA   rP   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   rX   r[   r   r   rj   r'   r'   r(   depart_footnote  s
    zLaTeXTranslator.depart_footnotec                 C  s
   t jd S r=   r	   r9  rj   r'   r'   r(   visit_label  s    zLaTeXTranslator.visit_labelc                 C  s   |d | _ tjd S )Nspec)r   r	   r9  rj   r'   r'   r(   visit_tabular_col_spec  s    
z&LaTeXTranslator.visit_tabular_col_specc                 C  s2  t | jdkrB| j dkr8td| jd |jp0df d| j_n*t | jdkrltd| jd |jpddf | jt	| | jj
d krd	| jjjksd
| jjjkrdnd| j_
| jr(d| j t | j_d| jjkr| jjd d| j_
n| jjd d| j_
d|dg kr(tjtd|d d | _d S )Nr   rm   z2%s:%s: longtable does not support nesting a table.r   r5   Tr   z0%s:%s: deeply nested tables are not implemented.rU   rT   rV   z{%s}ZvlinesZnovlinesrr   rR   zGboth tabularcolumns and :widths: option are given. :widths: is ignored.r2  )r   r   r   rs   r2   r   liner`   r[   rN   r^   r;   r   Zlatex_table_styler   r   r]   rZ   rY   r   infor   rj   r'   r'   r(   visit_table  sD    


zLaTeXTranslator.visit_tablec                 C  s^   |  |}| j }| |d | j|d}| jt | j| | jt | j	  d S )Nz.tex_t)r   r   )
r   r   rs   r   rX   r[   r  r   r   r   )rA   rP   r   Z
table_typer   r'   r'   r(   depart_table  s    



zLaTeXTranslator.depart_tablec                 C  sL   | j  jd7  _d|kr*| j j|d  d|krH| j j| j jd  d S )Nr   colwidthZstub)r   r\   r_   r[   rd   rj   r'   r'   r(   visit_colspec  s
    zLaTeXTranslator.visit_colspecc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_colspec  s    zLaTeXTranslator.depart_colspecc                 C  s   d S r=   r'   rj   r'   r'   r(   visit_tgroup  s    zLaTeXTranslator.visit_tgroupc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_tgroup  s    zLaTeXTranslator.depart_tgroupc                 C  s   |  | jj d S r=   )r   r   rW   rj   r'   r'   r(   visit_thead  s    zLaTeXTranslator.visit_theadc                 C  s*   | j r| j d dkr| j   |   d S Nr   \sphinxhlinerX   r   r   rj   r'   r'   r(   depart_thead   s    
zLaTeXTranslator.depart_theadc                 C  s   |  | jj d S r=   )r   r   rX   rj   r'   r'   r(   visit_tbody%  s    zLaTeXTranslator.visit_tbodyc                 C  s*   | j r| j d dkr| j   |   d S r  r  rj   r'   r'   r(   depart_tbody)  s    
zLaTeXTranslator.depart_tbodyc                 C  s   d| j _| j j}| j | j j| j j}|d kr0q| j  j|j7  _|jrT| jd |jdkrr| jd|j  q| jd|j|||jf  qd S )Nr   &r   \sphinxtablestrut{%d}z.\multicolumn{%d}{%sl%s}{\sphinxtablestrut{%d}})	r   re   r^   r   rf   ru   rX   r[   ri   )rA   rP   r   r   r'   r'   r(   	visit_row.  s    
zLaTeXTranslator.visit_rowc                   s   j dt   fddt jjD } fdd|D }t|rT j d nd}|dg |d dkrd}| jjk r|| dkr||d  j|| jkr j d	|  |d7 }qt| jjk rZ||d  	d} j d
|d || f  ||7 }|d7 }| jjk r|| dkr||d  j|| jkrL j d	|  |d7 }q
q j d jj   j j
d7  _
d S )Nz\\c                   s   g | ]} j  j j|qS r'   )r   r   rf   )rt   r  rn   r'   r(   rx   C  s     z.LaTeXTranslator.depart_row.<locals>.<listcomp>c                   s$   g | ]}|j |j  jj d  kqS )r   )rf   r   r   )rt   r   rn   r'   r(   rx   D  s     r  r   Fr   z\sphinxvlinecrossing{%d}z\sphinxcline{%d-%d}z\sphinxfixclines{%d})rX   r[   r   r   r   r\   allextendri   r   rf   )rA   rP   rh   Z
underlinedr  jr'   rn   r(   
depart_rowA  s0    
zLaTeXTranslator.depart_rowc                 C  s  | j jdkr| jd | j |ddd |ddd  | j  }d}| j j}|jdkr| j	j
r| j jdkr| 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rV| jd|j| j jf t  dt d t | }d| _tt|tjdkrxd| j _t|jjtjs|j| j jkrt|dkrt|d tjr| dkrn| jd | jr| g  | j| d S )Nr   r  Zmorerowsr   Zmorecolsr5   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   re   rX   r[   r   rY   r   r^   ru   r   Zlatex_use_latex_multicolumnr   r   ri   r\   r   r   r  r<  r	   r%   ra   r  r7  Ztheadrd   rG   r   r   )rA   rP   r   r   r   r'   r'   r(   visit_entry]  sT    &




".
zLaTeXTranslator.visit_entryc                 C  s   | j r<d| _ |  }|r0|d tkr0|d q| j| | j| j  | j	 }| j j
|j7  _
| jj}| j	 }|d krq| jd |jdkr| jd|j  n| jd|j||jf  | j j
|j7  _
qrd S )Nr   r  r   r  z,\multicolumn{%d}{l%s}{\sphinxtablestrut{%d}})r   r   r   r   rX   r  r[   r   r   r   re   ru   r^   ri   )rA   rP   rX   r   r   Znextcellr'   r'   r(   depart_entry  s(    


zLaTeXTranslator.depart_entryc                 C  sb   t tj|d }t ttj |}| jt | jddd |D d  | jt tj	d S )Nr   , c                 s  s   | ]}|  V  qd S r=   rG   )rt   nr'   r'   r(   r     s     z-LaTeXTranslator.visit_acks.<locals>.<genexpr>.)
r   r	   bullet_listr   Z	list_itemrX   r[   r  r~   r9  )rA   rP   r  Z
list_itemsr'   r'   r(   
visit_acks  s     zLaTeXTranslator.visit_acksc                 C  s(   | j s| jdt  | jr$d| j_d S )Nz\begin{itemize}Tr   rX   r[   r   r   r`   rj   r'   r'   r(   visit_bullet_list  s    z!LaTeXTranslator.visit_bullet_listc                 C  s   | j s| jdt  d S )Nz\end{itemize}r   rX   r[   r   rj   r'   r'   r(   depart_bullet_list  s    z"LaTeXTranslator.depart_bullet_listc                   s   dddd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|kr| jd||d d
 f t  | jrd| j_d S )Nr   rp   rO   c                 S  s4   |  dd}d|kr0|  ddt|  dkr0d}|S )Nenumtyper+   alphastartr      )rY   r   )rP   r  r'   r'   r(   get_enumtype  s     z;LaTeXTranslator.visit_enumerated_list.<locals>.get_enumtyperg   c                   s4   | d krdS t | tjr& | jd S  | jS d S r   )r  r	   enumerated_listr7  rP   get_nested_levelr'   r(   r    s
    z?LaTeXTranslator.visit_enumerated_list.<locals>.get_nested_levelzenum%sr   r   r5   r   r  z\begin{enumerate}z*\sphinxsetlistlabels{%s}{%s}{%s}{%s}{%s}%%r  z\setcounter{%s}{%d}T)	r   lowerENUMERATE_LIST_STYLErY   rX   r[   r   r   r`   )rA   rP   r  enumZenumnextstyler   r   r'   r  r(   visit_enumerated_list  s"     z%LaTeXTranslator.visit_enumerated_listc                 C  s   | j dt  d S )Nz\end{enumerate}r.  rj   r'   r'   r(   depart_enumerated_list  s    z&LaTeXTranslator.depart_enumerated_listc                 C  s   | j d d S )Nz	\item {} r!  rj   r'   r'   r(   visit_list_item  s    zLaTeXTranslator.visit_list_itemc                 C  s   | j t d S r=   r.  rj   r'   r'   r(   depart_list_item  s    z LaTeXTranslator.depart_list_itemc                 C  s"   | j dt  | jrd| j_d S )Nz\begin{description}TrX   r[   r   r   r`   rj   r'   r'   r(   visit_definition_list  s    z%LaTeXTranslator.visit_definition_listc                 C  s   | j dt  d S )Nz\end{description}r.  rj   r'   r'   r(   depart_definition_list  s    z&LaTeXTranslator.depart_definition_listc                 C  s   d S r=   r'   rj   r'   r'   r(   visit_definition_list_item  s    z*LaTeXTranslator.visit_definition_list_itemc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_definition_list_item  s    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   r5   r   r   Fr   rz   z\sphinxlineitem{)r   rY   r   rX   r[   r   )rA   rP   ctxr   r'   r'   r(   
visit_term  s    
zLaTeXTranslator.visit_termc                 C  s$   | j | j  |  jd8  _d S r  )rX   r[   r   r   r   rj   r'   r'   r(   depart_term  s    zLaTeXTranslator.depart_termc                 C  s   | j d d S )Nz{[}r!  rj   r'   r'   r(   visit_classifier   s    z LaTeXTranslator.visit_classifierc                 C  s   | j d d S )Nz{]}r!  rj   r'   r'   r(   depart_classifier  s    z!LaTeXTranslator.depart_classifierc                 C  s   d S r=   r'   rj   r'   r'   r(   visit_definition  s    z LaTeXTranslator.visit_definitionc                 C  s   | j t d S r=   r.  rj   r'   r'   r(   depart_definition	  s    z!LaTeXTranslator.depart_definitionc                 C  s"   | j dt  | jrd| j_d S )Nz \begin{quote}\begin{description}Tr  rj   r'   r'   r(   visit_field_list  s    z LaTeXTranslator.visit_field_listc                 C  s   | j dt  d S )Nz\end{description}\end{quote}r.  rj   r'   r'   r(   depart_field_list  s    z!LaTeXTranslator.depart_field_listc                 C  s   d S r=   r'   rj   r'   r'   r(   visit_field  s    zLaTeXTranslator.visit_fieldc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_field  s    zLaTeXTranslator.depart_fieldc                 C  s   |j |}|dkr`t|j tjr`t|j |d  tjs`t|j |d  tjs`| jdt  n0|dkr|t|j tj	t
fr|n| jtdt g d S )Nr   r   	\noindentz\sphinxAtStartPar)r7  r   r  r	   Zcompoundr%   rX   r[   r   rG  footnotetextr  )rA   rP   r   r'   r'   r(   visit_paragraph   s    zLaTeXTranslator.visit_paragraphc                 C  s   | j t d S r=   r.  rj   r'   r'   r(   depart_paragraph1  s    z LaTeXTranslator.depart_paragraphc                 C  s"   | j td  | jrd| j_d S )N\begin{center}Tr  rj   r'   r'   r(   visit_centered4  s    zLaTeXTranslator.visit_centeredc                 C  s   | j td  d S )N\end{center}r.  rj   r'   r'   r(   depart_centered9  s    zLaTeXTranslator.depart_centeredc                 C  sj   |  j d7  _ |d }| j dkr0| jdt  | jd| d t  | jdt  | jrfd| j_d S )Nr   ncolumnsz\setlength{\multicolsep}{0pt}z\begin{multicols}{z}\raggedrightzA\begin{itemize}\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}Tr  )rA   rP   r  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  rj   r'   r'   r(   depart_hlistG  s    zLaTeXTranslator.depart_hlistc                 C  s   d S r=   r'   rj   r'   r'   r(   visit_hlistcolK  s    zLaTeXTranslator.visit_hlistcolc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_hlistcolN  s    zLaTeXTranslator.depart_hlistcolr   rg   z
str | Noner   c                 C  s8   zt ||W S  tk
r2   ttd| Y d S X d S )Nz&dimension unit %s is invalid. Ignored.)r   r   r   r   r   )rA   r   r   r'   r'   r(   latex_image_lengthV  s
    z"LaTeXTranslator.latex_image_lengthc                 C  s   t |jtjS )z2Check whether a node represents an inline element.)r  r7  r	   ZTextElementrj   r'   r'   r(   	is_inline]  s    zLaTeXTranslator.is_inlinec                 C  s  g }g }g }t |jtj}|r,| |j}n
| |}d|kr|d|kr\| |d |d }n| |d }|r||d|  d|krd|kr| |d |d }n| |d }|r|d|  d|kr|s|dt|d d   d|krTd	d
ddddd}	z8||	||d f d  ||	||d f d  W n tk
rR   Y nX | j	rp|d |d |s|s|t
d  |t
 |  |d | jjkr| jj|d  }
n| jrd S |d }
|
ddkrd S | j| d}|rdd| }t|
\}}| jrB|rBd| d| d| d}nd| d| d| d}d|krpd | d }| j| | j| d S )!Nru   r   zwidth=%sr   z	height=%szscale=%sr   rQ   )r5   r5   )z\raisebox{-0.5\height}{rz   )z\raisebox{-\height}{rz   ){\hspace*{\fill}\hspace*{\fill}})ry   r  )r  rz   ))r   top)r   middle)r   bottom)r   center)r   left)r   rightr   r   z!{\sphinxunactivateextrasandspace rz   r  uriz://r   r5   r5  r   z!\lowercase{\sphinxincludegraphicsz}{{z\sphinxincludegraphicsz{{#z{\catcode`\#=12)r  r7  r	   	referencer  r  r[   r   KeyErrorr   r   reverser;   Zimagesignore_missing_imagesfindrX   r  r~   r   splitextr   )rA   rP   prepostZinclude_graphics_optionsZhas_hyperlinkr  whZalign_prepostr  optionsbaseextcmdr'   r'   r(   visit_imagea  s~    





zLaTeXTranslator.visit_imagec                 C  s   d S r=   r'   rj   r'   r'   r(   depart_image  s    zLaTeXTranslator.depart_imagec                 C  s  | j d }| jrd}| jrd|krZ| |d }|rz| jd| t  | jdt  n | jdt  | jdt  tdd |D r| jd	 | jd
t  nH|	dddkrnd }d|kr| |d }n2t
|d tjrd|d kr| |d d }| jt | jd|d dkr2dnd|p<df t  | jd | jdt d t  n| jr| jtd  | jdt  n\| jtd|  t  | jdt  tdd |D r| jd	t  | jdt  d S )NZfigure_alignHru   z!\begin{sphinxfigure-in-table}[%s]z
\centeringz\begin{sphinxfigure-in-table}c                 s  s   | ]}t |tjV  qd S r=   r  r	   rc   rt   rT  r'   r'   r(   r     s     z/LaTeXTranslator.visit_figure.<locals>.<genexpr>z	\capstartz!\end{sphinxfigure-in-table}\relaxrQ   r5   )r  r  r   z\begin{wrapfigure}{%s}{%s}r  rr|   Z0ptz\end{wrapfigure}z6\mbox{}\par\vskip-\dimexpr\baselineskip+\parskip\relaxr  r  z\begin{figure}[%s]c                 s  s   | ]}t |tjV  qd S r=   r  r  r'   r'   r(   r     s     z\end{figure})r   r   r   r  rX   r[   r   r;  r   rY   r  r	   r=  r  r   )rA   rP   rQ   lengthr'   r'   r(   visit_figure  sT    
 zLaTeXTranslator.visit_figurec                 C  s   | j | j  d S r=   rE  rj   r'   r'   r(   depart_figure  s    zLaTeXTranslator.depart_figurec                 C  sz   |  j d7  _ t|jtr(| jd nN| jrJt|jtjrJ| jd n,| j	rj|jj
dkrj| jd n| jd d S )Nr   z\sphinxSetupCaptionForVerbatim{z\captionof{figure}{figurez\sphinxfigcaption{z	\caption{)r   r  r7  captioned_literal_blockrX   r[   r   r	   r  r   tagnamerj   r'   r'   r(   visit_caption  s    zLaTeXTranslator.visit_captionc                 C  sD   | j d t|jtjr2| |j}| j | |  jd8  _d S )Nrz   r   )rX   r[   r  r7  r	   r  r   r   )rA   rP   r   r'   r'   r(   depart_caption  s
    zLaTeXTranslator.depart_captionc                 C  s   | j td  d S )Nz\begin{sphinxlegend}r.  rj   r'   r'   r(   visit_legend  s    zLaTeXTranslator.visit_legendc                 C  s   | j dt  d S )Nz\end{sphinxlegend}r.  rj   r'   r'   r(   depart_legend  s    zLaTeXTranslator.depart_legendc                 C  s"   | j td  |  jd7  _d S )Nz\begin{sphinxadmonition}{note}r   rX   r[   r   r   rj   r'   r'   r(   visit_admonition  s    z LaTeXTranslator.visit_admonitionc                 C  s"   | j dt  |  jd8  _d S Nz\end{sphinxadmonition}r   r  rj   r'   r'   r(   depart_admonition  s    z!LaTeXTranslator.depart_admonitionc                 C  s6   t |j }| jtd|j|f   |  jd7  _d S )Nz!\begin{sphinxadmonition}{%s}{%s:}r   )r   r  rX   r[   r   r   r  r'   r'   r(   _visit_named_admonition  s
    

z'LaTeXTranslator._visit_named_admonitionc                 C  s"   | j dt  |  jd8  _d S r  r  rj   r'   r'   r(   _depart_named_admonition	  s    z(LaTeXTranslator._depart_named_admonitionc                 C  s   d S r=   r'   rj   r'   r'   r(   visit_versionmodified   s    z%LaTeXTranslator.visit_versionmodifiedc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_versionmodified#  s    z&LaTeXTranslator.depart_versionmodifiedc           
        s^  ddd fdd} }t |tjr4|jdd}qttjjd}t |t	rVd S |
|rn||rnd S d	 krzd S d
 krd S  drt }t |tjr d |d krn| d   ddr:ddd fdd}t }||r, d d d  }||r8||d  t|}qnt d }nt d }|D ]}	||	 qJd S )Nrp   r:   r   c                   st   |  drd S |  drd S  j }|dkrRt j|d  tjrRjt j	 }jj
| |d d S )Nzindex-z	equation-r   r   r   )
startswithr7  r   r  r	   r%   rX   r[   r   r   r   )r   r   r   rP   rA   r'   r(   
add_target'  s    

z0LaTeXTranslator.visit_target.<locals>.add_targetT)ZascendZstdrefuriZ	anonymousrefidZismodFrL  rk   )sibr<   c                   s   t | tjo| d d kS )Nr%  r   )r  r	   targetrY   )r&  r  r'   r(   has_dup_labelV  s    z3LaTeXTranslator.visit_target.<locals>.has_dup_labelr   )r  r	   r'  	next_noder   r   r;   r
  Z
get_domainHYPERLINK_SUPPORT_NODESZget_enumerable_node_typeZget_numfig_titlerY   r   r  r   iter)
rA   rP   r#  r)  r  Z	prev_noder(  prevr   r   r'   r"  r(   visit_target&  s<    



zLaTeXTranslator.visit_targetc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_targetg  s    zLaTeXTranslator.depart_targetc                 C  s$   | j td t  | j d d S )Nz\begin{flushright}z---r.  rj   r'   r'   r(   visit_attributionj  s    z!LaTeXTranslator.visit_attributionc                 C  s   | j td t  d S )Nz\end{flushright}r.  rj   r'   r'   r(   depart_attributionn  s    z"LaTeXTranslator.depart_attributionc                   s  dddfdd ddddd}| dd	s<jt |d
 }|D ]\}}}}}d}	|rdd}	zZ|dkr&z^ fddtdd|D \}
}||
|| }}jd|
 d| d| d| |	 d
 W nP tk
r     tdd|d }||}jd| d| |	 d Y nX n|dkr fddtdd|D \}
}||
|| }}jd|
||||	|||
||	f
  n6|dkr
 fddtdd|D \}
}}||
||||  }}}jd|
||||||	||||
|||	|||
||||	f  n|dkr\ fddtdd|D \}
}||
}jd|
 d| d | d! nb|d"kr fd#dtdd"|D \}
}||
}jd|
 d| d | d! nttd$| W qH tk
r } ztt	| W 5 d }~X Y qHX qH| dd	sjd% t
jd S )&Nrp   )valuer<   c                   sV     | } | dd} | dd} | dd} | dd} | d	d
} | dd} | S )Nz\{z\sphinxleftcurlybrace{}z\}z\sphinxrightcurlybrace{}"z""@z"@!z"!rV   z
\textbar{}r   r   )r1  rn   r'   r(   r   r  s    
z+LaTeXTranslator.visit_index.<locals>.escape)stringr<   c                 S  s$   t | }|r|dS d|  S d S )Nz\\spxentry{\1}\\spxextra{\2}z\spxentry{%s})EXTRA_REr   expand)r6  r   r'   r'   r(   r  |  s    

z*LaTeXTranslator.visit_index.<locals>.styleinlineTr  r5   z	|spxpagemZsinglec                 3  s   | ]} |V  qd S r=   r'   rt   xr   r'   r(   r     s     z.LaTeXTranslator.visit_index.<locals>.<genexpr>r   z\index{r3  r4  rz   r   r   pairc                 3  s   | ]} |V  qd S r=   r'   r:  r<  r'   r(   r     s     z*\index{%s@%s!%s@%s%s}\index{%s@%s!%s@%s%s}Ztriplec                 3  s   | ]} |V  qd S r=   r'   r:  r<  r'   r(   r     s     r   zS\index{%s@%s!%s %s@%s %s%s}\index{%s@%s!%s, %s@%s, %s%s}\index{%s@%s!%s %s@%s %s%s}Zseec                 3  s   | ]} |V  qd S r=   r'   r:  r<  r'   r(   r     s     z|see{rb  r8  c                 3  s   | ]} |V  qd S r=   r'   r:  r<  r'   r(   r     s     z!unknown index entry type %s foundz\ignorespaces )rY   rX   r[   r   r   r   r   r   r   rp   r	   r9  )rA   rP   r  r  typer6  Z_tidZismain_keymp1Zp2ZP1ZP2pPZp3ZP3errr'   )r   rA   r(   visit_indexq  s|    

.(


             
"
""zLaTeXTranslator.visit_indexc                 C  sZ   |  |s| jt d|dd kr:| j|  |  |sP| jt tjd S )Nr   formatr5   )	r  rX   r[   r   rY   r>  rG   r	   r9  rj   r'   r'   r(   	visit_raw  s    

zLaTeXTranslator.visit_rawc                 C  s  | j s6|dD ]$}| j }|  j| j||d7  _q| |sL| jt |dd}|s|drd| jd  d |d  }| j s|s| j	d n|
dr| jd d	 |d
d   }| j| | | jd | jjr| js| j	d| |  n| j	d nh|
dr |d}|dkrJ|d
d  d }n|d
d  dd	}| j| | t|rt|d tjrd|d dg kr| j	d | jd nB| jd | jjr| js| j	d| |  n| j	d nt|d
kr^||d kr^|dr@| jd| |  n| jd| |  tjn"| jd| |  | j	d d S )Nr   r   r$  r5   r%  r   r   r  r   r   z\sphinxsamedocref{z}}} (%s)z}}}z::docr   zstd-termrR   z\sphinxtermref{z\sphinxcrossref{Z	nolinkurlz\sphinxnolinkurl{%s}z\sphinxurl{%s}z\sphinxhref{%s}{rz   )r   rY   r   rX   r   r  r[   r   r   r   r!  r   r   Zlatex_show_pagerefsr   r   r  r   r   r  r	   r   
encode_urir9  )rA   rP   r   r   r  Z	hashindexr'   r'   r(   visit_reference  sX    





zLaTeXTranslator.visit_referencec                 C  s,   | j | j  | |s(| j t d S r=   )rX   r[   r   r   r  r   rj   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|kshd|kr|dddd}t|jd| | d| | d}nt|d| |  }d| | d| d}| j| t	j
d S )Nr%  r   r   r$  r5   r   r  r4  z%sz\%sz\{name\}z
\{number\}z{name}z{number}z\nameref{%s}\ref{%s})r  numberz
\hyperref[]{rz   )rY   r   r   r   r   rF  r   rX   r[   r	   r9  )rA   rP   r   r4  r   Zhyperrefr'   r'   r(   visit_number_reference  s    
z&LaTeXTranslator.visit_number_referencec                 C  s   d S r=   r'   rj   r'   r'   r(   visit_download_reference  s    z(LaTeXTranslator.visit_download_referencec                 C  s   d S r=   r'   rj   r'   r'   r(   depart_download_reference  s    z)LaTeXTranslator.depart_download_referencec                 C  s   d S r=   r'   rj   r'   r'   r(   visit_pending_xref  s    z"LaTeXTranslator.visit_pending_xrefc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_pending_xref  s    z#LaTeXTranslator.depart_pending_xrefc                 C  s   | j d d S )Nz\sphinxstyleemphasis{r!  rj   r'   r'   r(   visit_emphasis  s    zLaTeXTranslator.visit_emphasisc                 C  s   | j d d S r#  r!  rj   r'   r'   r(   depart_emphasis  s    zLaTeXTranslator.depart_emphasisc                 C  s   | j d d S )Nz+\sphinxstyleliteralemphasis{\sphinxupquote{r!  rj   r'   r'   r(   visit_literal_emphasis  s    z&LaTeXTranslator.visit_literal_emphasisc                 C  s   | j d d S ra  r!  rj   r'   r'   r(   depart_literal_emphasis"  s    z'LaTeXTranslator.depart_literal_emphasisc                 C  s   | j d d S )Nz\sphinxstylestrong{r!  rj   r'   r'   r(   visit_strong%  s    zLaTeXTranslator.visit_strongc                 C  s   | j d d S r#  r!  rj   r'   r'   r(   depart_strong(  s    zLaTeXTranslator.depart_strongc                 C  s   | j d d S )Nz)\sphinxstyleliteralstrong{\sphinxupquote{r!  rj   r'   r'   r(   visit_literal_strong+  s    z$LaTeXTranslator.visit_literal_strongc                 C  s   | j d d S ra  r!  rj   r'   r'   r(   depart_literal_strong.  s    z%LaTeXTranslator.depart_literal_strongc                 C  s`   |  }| jd |drP|| jkrP| jd| |d   | j| n| jd d S )Nz\sphinxstyleabbreviation{Zexplanationz} (%s)rz   )rG   rX   r[   r  r   r   r   add)rA   rP   Zabbrr'   r'   r(   visit_abbreviation1  s    z"LaTeXTranslator.visit_abbreviationc                 C  s   | j | j  d S r=   rE  rj   r'   r'   r(   depart_abbreviation;  s    z#LaTeXTranslator.depart_abbreviationc                 C  s
   |  |S r=   )rU  rj   r'   r'   r(   visit_manpage>  s    zLaTeXTranslator.visit_manpagec                 C  s
   |  |S r=   )rV  rj   r'   r'   r(   depart_manpageA  s    zLaTeXTranslator.depart_manpagec                 C  s   | j d d S )Nz\sphinxtitleref{r!  rj   r'   r'   r(   visit_title_referenceD  s    z%LaTeXTranslator.visit_title_referencec                 C  s   | j d d S r#  r!  rj   r'   r'   r(   depart_title_referenceG  s    z&LaTeXTranslator.depart_title_referencec                 C  sn   t ttj |}dd |D }tdd |D td}t|tkrL|d t }| jt	d| 
|  t	  d S )Nc                 s  s   | ]}t tj|d  V  qdS )r   N)r   r	   r  )rt   citationr'   r'   r(   r   L  s     z8LaTeXTranslator.visit_thebibliography.<locals>.<genexpr>c                 s  s   | ]}|  V  qd S r=   r  )rt   r  r'   r'   r(   r   M  s     )keyz!\begin{sphinxthebibliography}{%s})r   r   r	   rb  r   r   MAX_CITATION_LABEL_LENGTHrX   r[   r   r   )rA   rP   Z	citationsr   Zlongest_labelr'   r'   r(   visit_thebibliographyJ  s    
z%LaTeXTranslator.visit_thebibliographyc                 C  s   | j dt  d S )Nz\end{sphinxthebibliography}r.  rj   r'   r'   r(   depart_thebibliographyU  s    z&LaTeXTranslator.depart_thebibliographyc              	   C  sJ   t tj|d }| jd| |  d|d  d|d d  d d S )Nr   z	\bibitem[rM  r  r   r   rz   )r   r	   r  rX   r[   r   rG   r  r'   r'   r(   visit_citationX  s    zLaTeXTranslator.visit_citationc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_citation]  s    zLaTeXTranslator.depart_citationc                 C  s4   | j rn(| jd|d  d|d  d tjd S )Nz\sphinxcite{r  r   Zrefnamerz   )r   rX   r[   r	   r9  rj   r'   r'   r(   visit_citation_reference`  s    "z(LaTeXTranslator.visit_citation_referencec                 C  s   d S r=   r'   rj   r'   r'   r(   depart_citation_referenceg  s    z)LaTeXTranslator.depart_citation_referencec                 C  s   | j r| jd d S d|d kr2| jd d S |dd }d|d ksN|s^| jd d S | jj|i }| jj| |||dd	}| jd
t	 |
  d t	 d  tjd S )Nz*\sphinxstyleliteralintitle{\sphinxupquote{ZkbdrR   z\sphinxkeyboard{\sphinxupquote{r   coder_  T)optsr3  nowrapz\sphinxcode{\sphinxupquote{%r   rb  )r   rX   r[   rY   r   highlight_optionsr   highlight_blockrG   r   rstripr	   r9  )rA   rP   langrl  hlcoder'   r'   r(   visit_literalj  s8        zLaTeXTranslator.visit_literalc                 C  s   | j d d S ra  r!  rj   r'   r'   r(   depart_literal~  s    zLaTeXTranslator.depart_literalc                 C  s
   t jd S r=   r  rj   r'   r'   r(   visit_footnote_reference  s    z(LaTeXTranslator.visit_footnote_referencec                 C  s   | j d d S )Nz\sphinxfootnotemark[r!  rj   r'   r'   r(   visit_footnotemark  s    z"LaTeXTranslator.visit_footnotemarkc                 C  s   | j d d S )N]r!  rj   r'   r'   r(   depart_footnotemark  s    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  rX   r[   r   rG   r  r'   r'   r(   visit_footnotetext  s    z"LaTeXTranslator.visit_footnotetextc                 C  s    | j dt  | j d d S )Nr   z \end{footnotetext}\ignorespaces r.  rj   r'   r'   r(   depart_footnotetext  s    z#LaTeXTranslator.depart_footnotetextc                 C  s   d S r=   r'   rj   r'   r'   r(   visit_captioned_literal_block  s    z-LaTeXTranslator.visit_captioned_literal_blockc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_captioned_literal_block  s    z.LaTeXTranslator.depart_captioned_literal_blockc           	      C  s  |j | kr0|  jd7  _| jdt  n| |}t|jt	rV|| |j7 }|rx| j
sx| 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}n2| jr(d| 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d S )Nr   z\begin{sphinxalltt}z\def\sphinxLiteralBlockLabel{rz   r   r6   linenosFhighlight_argsforce)rl  r}  r3  z\sphinxSetupCodeBlockInFootnotez\begin{Verbatim}z\begin{sphinxVerbatim}Tz\begin{sphinxVerbatimintable}iz\end{sphinxVerbatimintable}z\end{sphinxVerbatim}Zhl_linesr   z\fvset{hllines={, %s,}}%%z\sphinxresetverbatimhllines)Z	rawsourcerG   r   rX   r[   r   r   r  r7  r  r   rY   r   rn  r   ro  r   r   r`   rb   rp  rp   r	   r9  )	rA   rP   r   rq  r}  r~  rl  rr  Zhllinesr'   r'   r(   visit_literal_block  s`    

  
z#LaTeXTranslator.visit_literal_blockc                 C  s&   | j td t  |  jd8  _d S )Nz\end{sphinxalltt}r   )rX   r[   r   r   rj   r'   r'   r(   depart_literal_block  s    z$LaTeXTranslator.depart_literal_blockc                 C  s   | j d d S )Nz\item[] r!  rj   r'   r'   r(   
visit_line  s    zLaTeXTranslator.visit_linec                 C  s   | j t d S r=   r.  rj   r'   r'   r(   depart_line  s    zLaTeXTranslator.depart_linec                 C  sV   t |jtjr0| jdt  | jdt  n| jtd t  | jrRd| j_d S )Nz\item[]z'\begin{DUlineblock}{\DUlineblockindent}z\begin{DUlineblock}{0em}T)	r  r7  r	   Z
line_blockrX   r[   r   r   r`   rj   r'   r'   r(   visit_line_block  s    z LaTeXTranslator.visit_line_blockc                 C  s   | j dt  d S )Nz\end{DUlineblock}r.  rj   r'   r'   r(   depart_line_block  s    z!LaTeXTranslator.depart_line_blockc                 C  sX   d}t |jdkr2|jd }t|tjtjfr2d}|sT| jdt  | j	rTd| j	_
d S )Nr   r   z\begin{quote}T)r   r:  r  r	   r  r  rX   r[   r   r   r`   rA   rP   donerT  r'   r'   r(   visit_block_quote  s    
z!LaTeXTranslator.visit_block_quotec                 C  sJ   d}t |jdkr2|jd }t|tjtjfr2d}|sF| jdt  d S )Nr   r   z\end{quote})	r   r:  r  r	   r  r  rX   r[   r   r  r'   r'   r(   depart_block_quote  s    
z"LaTeXTranslator.depart_block_quotec                 C  s   | j d r| jd d S )Nr   r  )r   rX   r[   rj   r'   r'   r(   visit_option  s    
zLaTeXTranslator.visit_optionc                 C  s   | j d  d7  < d S )Nr   r   )r   rj   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.	delimiterr6  N)rX   r[   rY   rj   r'   r'   r(   visit_option_argument  s    z%LaTeXTranslator.visit_option_argumentc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_option_argument  s    z&LaTeXTranslator.depart_option_argumentc                 C  s   | j d | jd d S )Nz\item [r   )rX   r[   r   rj   r'   r'   r(   visit_option_group  s    z"LaTeXTranslator.visit_option_groupc                 C  s   | j   | jd d S )Nz] )r   r   rX   r[   rj   r'   r'   r(   depart_option_group  s    
z#LaTeXTranslator.depart_option_groupc                 C  s"   | j dt  | jrd| j_d S )Nz\begin{optionlist}{3cm}Tr  rj   r'   r'   r(   visit_option_list  s    z!LaTeXTranslator.visit_option_listc                 C  s   | j dt  d S )Nz\end{optionlist}r.  rj   r'   r'   r(   depart_option_list  s    z"LaTeXTranslator.depart_option_listc                 C  s   d S r=   r'   rj   r'   r'   r(   visit_option_list_item   s    z&LaTeXTranslator.visit_option_list_itemc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_option_list_item#  s    z'LaTeXTranslator.depart_option_list_itemc                 C  s$   |  }| j| | tjd S r=   )rG   rX   r[   r   r	   r9  )rA   rP   Zostringr'   r'   r(   visit_option_string&  s    z#LaTeXTranslator.visit_option_stringc                 C  s   | j d d S )Nr6  r!  rj   r'   r'   r(   visit_description+  s    z!LaTeXTranslator.visit_descriptionc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_description.  s    z"LaTeXTranslator.depart_descriptionc                 C  s   | j d d S )Nz	$^{\text{r!  rj   r'   r'   r(   visit_superscript1  s    z!LaTeXTranslator.visit_superscriptc                 C  s   | j d d S Nz}}$r!  rj   r'   r'   r(   depart_superscript4  s    z"LaTeXTranslator.depart_superscriptc                 C  s   | j d d S )Nz	$_{\text{r!  rj   r'   r'   r(   visit_subscript7  s    zLaTeXTranslator.visit_subscriptc                 C  s   | j d d S r  r!  rj   r'   r'   r(   depart_subscript:  s    z LaTeXTranslator.depart_subscriptc                 C  s   | dg }|dgfkr2| jd | jd n|dgfkrX| jd | jd n`|dgfkr~| jd | jd n:|r| js| jd	d
|  | jd n| jd d S )NrR   Zmenuselectionz\sphinxmenuselection{rz   Zguilabelz\sphinxguilabel{Zacceleratorz\sphinxaccelerator{z\DUrole{%s}{r   r5   )rY   rX   r[   r   r   r~   )rA   rP   rR   r'   r'   r(   visit_inline=  s    
zLaTeXTranslator.visit_inlinec                 C  s   | j | j  d S r=   rE  rj   r'   r'   r(   depart_inlineN  s    zLaTeXTranslator.depart_inlinec                 C  s   d S r=   r'   rj   r'   r'   r(   visit_generatedQ  s    zLaTeXTranslator.visit_generatedc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_generatedT  s    z LaTeXTranslator.depart_generatedc                 C  s   d S r=   r'   rj   r'   r'   r(   visit_compoundW  s    zLaTeXTranslator.visit_compoundc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_compoundZ  s    zLaTeXTranslator.depart_compoundc                 C  s*   | dg }|D ]}| jd|  qd S )NrR   z
\begin{sphinxuseclass}{%s}rY   rX   r[   )rA   rP   rR   rq  r'   r'   r(   visit_container]  s    zLaTeXTranslator.visit_containerc                 C  s&   | dg }|D ]}| jd qd S )NrR   z
\end{sphinxuseclass}r  )rA   rP   rR   Z_cr'   r'   r(   depart_containerb  s    z LaTeXTranslator.depart_containerc                 C  s   d S r=   r'   rj   r'   r'   r(   visit_decorationg  s    z LaTeXTranslator.visit_decorationc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_decorationj  s    z!LaTeXTranslator.depart_decorationc                 C  s
   t jd S r=   r  rj   r'   r'   r(   visit_headero  s    zLaTeXTranslator.visit_headerc                 C  s
   t jd S r=   r  rj   r'   r'   r(   visit_footerr  s    zLaTeXTranslator.visit_footerc                 C  s
   t jd S r=   r  rj   r'   r'   r(   visit_docinfou  s    zLaTeXTranslator.visit_docinfor   c                 C  s,   |  |}| jr(|tdt dd}|S )Nz~\\r6  ~)r   r   r   r   rA   r   r'   r'   r(   r   z  s    
zLaTeXTranslator.encodec                 C  s"   |  |ddddddS )Nz\textasciitilde{}r  z\sphinxhyphen{}r	  z\textquotesingle{}'r5  r  r'   r'   r(   rH    s      zLaTeXTranslator.encode_urir   c                 C  s   |  | }| j| d S r=   )r   rG   rX   r[   )rA   rP   r   r'   r'   r(   
visit_Text  s    zLaTeXTranslator.visit_Textc                 C  s   d S r=   r'   rj   r'   r'   r(   depart_Text  s    zLaTeXTranslator.depart_Textc                 C  s
   t jd S r=   r  rj   r'   r'   r(   visit_comment  s    zLaTeXTranslator.visit_commentc                 C  s
   t jd S r=   r  rj   r'   r'   r(   
visit_meta  s    zLaTeXTranslator.visit_metac                 C  s   d S r=   r'   rj   r'   r'   r(   visit_system_message  s    z$LaTeXTranslator.visit_system_messagec                 C  s   | j t d S r=   r.  rj   r'   r'   r(   depart_system_message  s    z%LaTeXTranslator.depart_system_messagec                 C  s:   | j r| jd|   n| jd|   tjd S )Nz\protect\(%s\protect\)z\(%s\))r   rX   r[   rG   r	   r9  rj   r'   r'   r(   
visit_math  s    zLaTeXTranslator.visit_mathc                 C  s   | dr$d|d  d|d  }nd }| drX|rF| jd|  | j|  n(ddlm} | j|| || jj tj	d S )	Nr  	equation:r  r   rm  r   r   )wrap_displaymath)
rY   rX   r[   rG   Zsphinx.util.mathr  r   Zmath_number_allr	   r9  )rA   rP   r  r  r'   r'   r(   visit_math_block  s    

z LaTeXTranslator.visit_math_blockc              
   C  s   d|d  d|d  }| j j}|rz d| }| j|j|d W q tk
r } z(tjtd||d | jd	|  W 5 d }~X Y qX n| jd	|  d S )
Nr  r  r   r'  rK  )rL  zInvalid math_eqref_format: %rr2  z
\eqref{%s})	r   Zmath_eqref_formatrX   r[   rF  r  r   r   r   )rA   rP   r  Zeqref_formatrefexcr'   r'   r(   visit_math_reference  s    $z$LaTeXTranslator.visit_math_referencec                 C  s   d S r=   r'   rj   r'   r'   r(   depart_math_reference  s    z%LaTeXTranslator.depart_math_reference)TT)F)r   (  r.   r/   r0   rL   r   r  r?   r   r   rG   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r"  r$  r&  r'  Zvisit_sidebarZdepart_sidebarr(  r)  r*  r+  r-  r/  r0  r1  rA  rC  rD  rF  rI  rK  rU  rV  rY  rZ  r[  r\  r]  r^  r`  rc  rf  rh  ri  rj  rk  rl  rm  rn  rz  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  Zvisit_field_nameZdepart_field_nameZvisit_field_bodyZdepart_field_bodyr  r  r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  Zvisit_attentionZdepart_attentionZvisit_cautionZdepart_cautionZvisit_dangerZdepart_dangerZvisit_errorZdepart_errorZ
visit_hintZdepart_hintZvisit_importantZdepart_importantZ
visit_noteZdepart_noteZ	visit_tipZ
depart_tipZvisit_warningZdepart_warningr  r   r-  r.  r/  r0  rE  rG  rI  rJ  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r\  r]  r^  r_  r`  ra  re  rf  rg  rh  ri  rj  rs  rt  ru  rv  rx  ry  rz  r{  r|  r  r  Zvisit_doctest_blockZdepart_doctest_blockr  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   rH  r  r  r  r  r  r  r  r  r  r  rM   r'   r'   rB   r(   rF     s
  
 
'
/

	0!'!
 R*AB	8
3		rF   )r*  r  r  )r   )Nr1   
__future__r   r   collectionsr   osr   typingr   r   r   r   Zdocutilsr	   r
   Zdocutils.nodesr   r   r   Zsphinxr   r   Zsphinx.domainsr   Zsphinx.domains.stdr   Zsphinx.errorsr   Zsphinx.localer   r   r   Zsphinx.utilr   r   r   Zsphinx.util.docutilsr   Zsphinx.util.nodesr   r   Zsphinx.util.templater   Zsphinx.util.texescaper   Zdocutils.utils.romanr   ImportErrorromanZsphinx.builders.latexr   Zsphinx.builders.latex.themingr    	getLoggerr.   r   rd  r   r  r   r  compiler7  rG  r-   r2   Writerr4   rN   r   r   r   rF   Zsphinx.builders.latex.nodesr*  r  r  r'   r'   r'   r(   <module>   s   
  	
|#               =