B
    .ÛKc¶H ã               @   sR  d Z ddl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mZ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" 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l0m1Z1 ddl2m3Z3 yddl4m5Z5 W n" e6k
rJ   ddl7m5Z5 Y nX erjddl8m9Z9 ddl:m;Z; e( <e=¡Z>dZ?dddddddgZ@edd„ d d!d"d#d$d%œƒZAd&ZBd'ZCe Dd(¡ZEG d)d*„ d*ejFƒZGG d+d,„ d,e"ƒZHG d-d.„ d.ejIƒZJG d/d0„ d0ƒZKG d1d2„ d2ƒZLeMeMd3œd4d5„ZNd=eMeOeMd7œd8d9„ZPG d:d;„ d;e,ƒZQdd<lRmSZSmTZTmUZU dS )>z~Custom docutils writer for LaTeX.

Much of this code is adapted from Dave Kuhlman's "docpy" writer from his
docutils sandbox.
é    N)Údefaultdict)Úpath)	ÚTYPE_CHECKINGÚAnyÚDictÚIterableÚListÚOptionalÚSetÚTupleÚcast)ÚnodesÚwriters)ÚElementÚNodeÚText)ÚaddnodesÚhighlighting)ÚRemovedInSphinx70Warning)Ú
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 )Nz\arabic© r+   r+   r+   ú3lib/python3.7/site-packages/sphinx/writers/latex.pyÚ<lambda>,   ó    r-   z\arabicz\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,   r1   :   s   r1   c               @   s   e Zd ZdZdS )ÚUnsupportedErrorzMarkup is unsupported in LaTeXN)r2   r3   r4   Úcategoryr+   r+   r+   r,   r6   >   s   r6   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e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
--docclassÚmanualZAuthorz--authorÚsettings_defaultsNr$   )Ú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 )N)	r=   Zcreate_translatorÚdocumentrA   Z	walkaboutr   ÚLaTeXTranslatorÚastextÚoutput)rB   Zvisitorr+   r+   r,   Ú	translateT   s    zLaTeXWriter.translate)r2   r3   r4   Z	supportedZsettings_specr<   r   Ú__annotations__rG   r@   rH   Ú__classcell__r+   r+   )rC   r,   r8   B   s   
r8   c               @   s|   e Zd ZdZeddœdd„Zedœdd„Zedœd	d
„Z	edœdd„Z
eeddœdd„Zdee ee ed dœdd„ZdS )ÚTablezA table dataN)Ú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sÈd| jkrÐd
| _	nd| jkràd| _	g | _
d| _d| _d| _d | _g | _d	| _d	| _ttƒ| _d	| _d S )NÚalignr:   ÚclassesZstandardÚ
borderlessÚbooktabsZnocolorrowsZ	colorrowsr   r9   ú|F)ÚheaderÚbodyÚgetrM   rN   ÚstylesÚappendÚcolcountÚcolspecÚcolsepÚ	colwidthsÚhas_problematicÚhas_oldproblematicÚhas_verbatimÚcaptionÚstubsÚcolÚrowr   ÚintÚcellsÚcell_id)rB   rL   r+   r+   r,   r@   _   s@    






zTable.__init__)r>   c             C   s   | j dkpd| jkS )z5True if and only if table uses longtable environment.é   Ú	longtable)ra   rN   )rB   r+   r+   r,   Úis_longtable…   s    zTable.is_longtablec             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 )z›Returns the LaTeX environment name for the table.

        The class currently supports:

        * longtable
        * tabular
        * tabulary
        rf   ZtabularÚtabularyzcolwidths-givenN)rg   r]   rX   r[   rZ   rN   )rB   r+   r+   r,   Úget_table_type‰   s    	zTable.get_table_typec                sà   | j r| j S | j}| jrXd| jkrXt| jƒ‰ ‡ fdd„| jD ƒ}d|| |¡|f t S | jrvd|| j| j|f t S |  	¡ dkr d| d| | j  d	 t S | j
r¾d|| 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``.
        zcolwidths-givenc                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%s%s}z{%s*{%d}{\X{1}{%d}%s}}rh   Ú{ÚTÚ}ÚlN)rX   rY   rZ   rN   ÚsumÚjoinÚCRr[   rW   ri   r\   )rB   Ú_colsepZcolspecsr+   )rl   r,   Úget_colspec   s     

zTable.get_colspec)Úheightrk   r>   c             C   st   |  j d7  _ x`t|ƒD ]T}xNt|ƒD ]B}| j| j| | j| f dksLt‚| j | j| j| | j| f< q&W qW dS )zsAdds a new cell to a table.

        It will be located at current position: (``self.row``, ``self.col``).
        é   r   N)rd   Úrangerc   ra   r`   ÚAssertionError)rB   rw   rk   r`   ra   r+   r+   r,   Úadd_cell»   s
    "zTable.add_cellÚ	TableCell)ra   r`   r>   c             C   sB   y(|dkr| j }|dkr| j}t| ||ƒS  tk
r<   dS X dS )zöReturns 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)ra   r`   r|   Ú
IndexError)rB   ra   r`   r+   r+   r,   ÚcellÆ   s    z
Table.cell)NN)r2   r3   r4   r5   r   r@   Úboolrg   Ústrri   rv   rb   r{   r	   r~   r+   r+   r+   r,   rK   \   s   &rK   c               @   sH   e Zd ZdZeeeddœdd„Zeedœdd„ƒZeedœd	d
„ƒZ	dS )r|   zData of a cell in a table.N)Útablera   r`   r>   c             C   sœ   |j ||f dkrt‚|| _|j ||f | _|| _|| _x.|j | jd | jf | jkrf|  jd8  _q:W x.|j | j| jd f | jkr–|  jd8  _qjW d S )Nr   rx   )rc   r}   r   rd   ra   r`   )rB   r   ra   r`   r+   r+   r,   r@   Û   s    zTableCell.__init__)r>   c             C   s4   d}x*| j j| j| j| f | jkr.|d7 }qW |S )zReturns the cell width.r   rx   )r   rc   ra   r`   rd   )rB   rk   r+   r+   r,   rk   ê   s     zTableCell.widthc             C   s4   d}x*| j j| j| | jf | jkr.|d7 }qW |S )zReturns the cell height.r   rx   )r   rc   ra   r`   rd   )rB   rw   r+   r+   r,   rw   ò   s     zTableCell.height)
r2   r3   r4   r5   rK   rb   r@   Úpropertyrk   rw   r+   r+   r+   r,   r|   Ø   s   r|   )Ú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   )Ú	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rÐd
t|ƒd  }nVt|ƒ| d }|dkrœd| }n4|dkr®d| }n"|d	krÄd|d  }nd||f }|S )z4Convert `width_str` with rst length to LaTeX length.z^(\d*\.?\d*)\s*(\S*)$Né   r‡   )r9   Zpxz%s\sphinxpxdimenÚptz%sbpú%z%.3f\linewidthg      Y@z%.5f\sphinxpxdimenz%.5fbpz%.5f\linewidthz%.5f%s)r„   ÚmatchÚ
ValueErrorÚgroupsÚfloat)rˆ   r‰   r   ZresÚamountZunitZamount_floatr+   r+   r,   Úrstdim_to_latexdim   s,    



r’   c                   sŒ  e Zd ZU ded< dZdZejddddœ‡ fdd	„Ze	e
 dd
œdd„Ze	e
 dœdd„Ze
dœdd„ZdÕe
eee
dœdd„ZdÖeee
dœdd„Ze
e
dœdd„Ze
e
dœdd„Ze
e
dœdd „Ze
e
dœd!d"„Ze
e
e
d#œd$d%„Ze
dœd&d'„Ze
ee
d(œd)d*„Zeee dœd+d,„ƒZedd-œd.d/„Zedd-œd0d1„Zedd-œd2d3„Z edd-œd4d5„Z!edd-œd6d7„Z"edd-œd8d9„Z#edd-œd:d;„Z$edd-œd<d=„Z%edd-œd>d?„Z&edd-œd@dA„Z'e&Z(e'Z)edd-œdBdC„Z*edd-œdDdE„Z+edd-œdFdG„Z,edd-œdHdI„Z-edd-œdJdK„Z.edd-œdLdM„Z/edd-œdNdO„Z0edd-œdPdQ„Z1edd-œdRdS„Z2edd-œdTdU„Z3edd-œdVdW„Z4edd-œdXdY„Z5edd-œdZd[„Z6edd-œd\d]„Z7edd-œd^d_„Z8edd-œd`da„Z9edd-œdbdc„Z:edd-œddde„Z;edd-œdfdg„Z<edd-œdhdi„Z=edd-œdjdk„Z>edd-œdldm„Z?edd-œdndo„Z@edd-œdpdq„ZAedd-œdrds„ZBedd-œdtdu„ZCedd-œdvdw„ZDedd-œdxdy„ZEedd-œdzd{„ZFedd-œd|d}„ZGedd-œd~d„ZHedd-œd€d„ZIedd-œd‚dƒ„ZJedd-œd„d…„ZKedd-œd†d‡„ZLedd-œdˆd‰„ZMedd-œdŠd‹„ZNedd-œdŒd„ZOedd-œdŽd„ZPedd-œdd‘„ZQedd-œd’d“„ZRedd-œd”d•„ZSedd-œd–d—„ZTedd-œd˜d™„ZUedd-œdšd›„ZVedd-œdœd„ZWedd-œdždŸ„ZXedd-œd d¡„ZYedd-œd¢d£„ZZedd-œd¤d¥„Z[edd-œd¦d§„Z\edd-œd¨d©„Z]edd-œdªd«„Z^edd-œd¬d­„Z_edd-œd®d¯„Z`edd-œd°d±„Zaedd-œd²d³„Zbedd-œd´dµ„Zcedd-œd¶d·„Zdedd-œd¸d¹„Zeedd-œdºd»„Zfedd-œd¼d½„Zgedd-œd¾d¿„Zhedd-œdÀdÁ„Ziedd-œdÂdÃ„Zjedd-œdÄdÅ„Zkedd-œdÆdÇ„Zledd-œdÈdÉ„Zmedd-œdÊdË„Znedd-œdÌdÍ„Zoedd-œdÎdÏ„Zpedd-œdÐdÑ„Zqedd-œdÒdÓ„Zredd-œdÔdÕ„Zsedd-œdÖd×„Ztedd-œdØdÙ„Zuedd-œdÚdÛ„Zvedd-œdÜdÝ„Zwedd-œdÞdß„Zxedd-œdàdá„Zyedd-œdâdã„Zzedd-œdädå„Z{edd-œdædç„Z|esZ}etZ~ewZexZ€edd-œdèdé„Zedd-œdêdë„Z‚edd-œdìdí„Zƒedd-œdîdï„Z„edd-œdðdñ„Z…edd-œdòdó„Z†edd-œdôdõ„Z‡edd-œdöd÷„Zˆd×e
e‰ee
 dùœdúdû„ZŠeed-œdüdý„Z‹edd-œdþdÿ„ZŒedd-œd d„Zedd-œdd„ZŽedd-œdd„Zedd-œdd„Zedd-œdd	„Z‘edd-œd
d„Z’edd-œdd„Z“edd-œdd„Z”edd-œdd„Z•edd-œdd„Z–edd-œdd„Z—e–Z˜e—Z™e–Zše—Z›e–Zœe—Ze–Zže—ZŸe–Z e—Z¡e–Z¢e—Z£e–Z¤e—Z¥e–Z¦e—Z§e–Z¨e—Z©edd-œdd„Zªedd-œdd„Z«edd-œdd„Z¬edd-œdd„Z­edd-œdd„Z®edd-œd d!„Z¯edd-œd"d#„Z°edd-œd$d%„Z±edd-œd&d'„Z²edd-œd(d)„Z³edd-œd*d+„Z´edd-œd,d-„Zµedd-œd.d/„Z¶edd-œd0d1„Z·edd-œd2d3„Z¸edd-œd4d5„Z¹edd-œd6d7„Zºedd-œd8d9„Z»edd-œd:d;„Z¼edd-œd<d=„Z½edd-œd>d?„Z¾edd-œd@dA„Z¿edd-œdBdC„ZÀedd-œdDdE„ZÁedd-œdFdG„ZÂedd-œdHdI„ZÃedd-œdJdK„ZÄedd-œdLdM„ZÅedd-œdNdO„ZÆedd-œdPdQ„ZÇedd-œdRdS„ZÈedd-œdTdU„ZÉedd-œdVdW„ZÊedd-œdXdY„ZËedd-œdZd[„ZÌedd-œd\d]„ZÍedd-œd^d_„ZÎedd-œd`da„ZÏedd-œdbdc„ZÐedd-œddde„ZÑedd-œdfdg„ZÒedd-œdhdi„ZÓedd-œdjdk„ZÔedd-œdldm„ZÕedd-œdndo„ZÖedd-œdpdq„Z×eÖZØe×ZÙedd-œdrds„ZÚedd-œdtdu„ZÛedd-œdvdw„ZÜedd-œdxdy„ZÝedd-œdzd{„ZÞedd-œd|d}„Zßedd-œd~d„Zàedd-œd€d„Záedd-œd‚dƒ„Zâedd-œd„d…„Zãedd-œd†d‡„Zäedd-œdˆd‰„Zåedd-œdŠd‹„Zæedd-œdŒd„Zçedd-œdŽd„Zèedd-œdd‘„Zéedd-œd’d“„Zêedd-œd”d•„Zëedd-œd–d—„Zìedd-œd˜d™„Zíedd-œdšd›„Zîedd-œdœd„Zïedd-œdždŸ„Zðedd-œd d¡„Zñedd-œd¢d£„Zòedd-œd¤d¥„Zóedd-œd¦d§„Zôedd-œd¨d©„Zõedd-œdªd«„Zöedd-œd¬d­„Z÷edd-œd®d¯„Zøedd-œd°d±„Zùedd-œd²d³„Zúedd-œd´dµ„Zûedd-œd¶d·„Züedd-œd¸d¹„Zýe
e
dºœd»d¼„Zþe
e
dºœd½d¾„Zÿe dd-œd¿dÀ„Ze dd-œdÁdÂ„Zedd-œdÃdÄ„Zedd-œdÅdÆ„Zedd-œdÇdÈ„Zedd-œdÉdÊ„Zedd-œdËdÌ„Zedd-œdÍdÎ„Zedd-œdÏdÐ„Z	edd-œdÑdÒ„Z
eee
e
f dœdÓdÔ„ƒZ‡  ZS (Ø  rE   r$   r=   rŠ   Fr%   N)rD   r=   rA   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y| 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r–t&| 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rôd| jj+krôdt, d t, d | jd< | jj-| _-| j- .¡ st  !t"dƒ| jj*¡ | j/}| j0 1d¡r¶| j0 1dd¡| j d }t&| jƒt&tƒk rr| jdkrr|d7 }|t&tƒd kržt  !t"dƒ¡ t&tƒd }d| | jd< t2||ƒ}| jj$rÞ| jj%dkrÞt2|| j%d ƒ}|| j/krød| | 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   rx   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@   rS   rA   Ú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_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ÚminrV   Zmath_numfigÚlanguageZlatex_elementsrt   ÚbabelZis_supported_languager–   rD   rT   ÚmaxÚbabel_renewcommandrs   r   ZPygmentsBridgeZpygments_styler›   ÚhighlighterZ	descstackÚtablesÚnext_table_colspecÚ	bodystackZfootnote_restrictedZpending_footnotesÚcurfilestackÚsetÚhandled_abbrs)rB   rD   r=   rA   r™   Zminsecnumdepthr•   r—   )rC   r+   r,   r@   #  s¶    










zLaTeXTranslator.__init__)Únewbodyr>   c             C   s   | j  | j¡ || _d S )N)r¿   rV   rS   )rB   rÃ   r+   r+   r,   Úpushbody¦  s    zLaTeXTranslator.pushbody)r>   c             C   s   | j }| j ¡ | _ |S )N)rS   r¿   Úpop)rB   rS   r+   r+   r,   Úpopbodyª  s    zLaTeXTranslator.popbodyc             C   s,   | j  d | j¡|  ¡ dœ¡ |  d| j ¡S )Nr9   )rS   Úindiceszlatex.tex_t)r­   Úupdaters   rS   Úgenerate_indicesÚrender)rB   r+   r+   r,   rF   ¯  s    
zLaTeXTranslator.astextT)ÚidÚwithdocÚanchorr>   c             C   s0   |r| j d d | }|rdndd|  |¡  S )Néÿÿÿÿú:z\phantomsectionr9   z
\label{%s})rÀ   Úidescape)rB   rË   rÌ   rÍ   r+   r+   r,   Úhypertarget¶  s    zLaTeXTranslator.hypertarget)rL   rÍ   r>   c                s0   d  ‡ fdd„|d D ƒ¡}|r(d| S |S d S )Nr9   c             3   s   | ]}ˆ j |d dV  qdS )F)rÍ   N)rÑ   )rj   Únode_id)rB   r+   r,   ú	<genexpr>¼  s    z1LaTeXTranslator.hypertarget_to.<locals>.<genexpr>Úidsz\phantomsection)rs   )rB   rL   rÍ   Úlabelsr+   )rB   r,   Úhypertarget_to»  s    zLaTeXTranslator.hypertarget_to)rË   r>   c             C   s   d|   |¡ S )Nz{\hyperref[%s]{)rÐ   )rB   rË   r+   r+   r,   Ú	hyperlinkÂ  s    zLaTeXTranslator.hyperlinkc             C   s   d|   |¡ S )Nz\autopageref*{%s})rÐ   )rB   rË   r+   r+   r,   ÚhyperpagerefÅ  s    zLaTeXTranslator.hyperpageref)Úsr>   c             C   s   t  || jj¡S )N)r   Úescaper²   r›   )rB   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   )r€   rH   r"   ÚencodeÚdecodeÚreplace)rB   rË   r+   r+   r,   rÐ   Ë  s    zLaTeXTranslator.idescape)ÚcommandÚ
definitionr>   c             C   s:   | j d rd| j ¡  }d}nd}d}d||||f t S )NZmultilingualz\addto\captions%s{rp   r9   z%s\renewcommand{%s}{%s}%s)r­   r¹   Zget_languagert   )rB   rá   râ   ÚprefixÚsuffixr+   r+   r,   r»   Ð  s    
z"LaTeXTranslator.babel_renewcommandc                sÈ   t ttt t f  td dœ‡ ‡fdd„}g ‰ ˆjj}|r¾x„ˆjjj	 
¡ D ]r}xl|jD ]b}d|j|jf }t|tƒr|||kr|qT||ƒ ˆjj¡\}}|s˜qTˆ  d|j t ¡ |||ƒ qTW qHW d ˆ ¡S )N)ÚcontentÚ	collapsedr>   c          
      sê   ˆ   dt ¡ ˆ   dt ¡ xºt| ƒD ]®\}\}}|dkrHˆ   dt ¡ ˆ   dˆ |¡ t ¡ xr|D ]j}|d stqfˆ   dˆ |d ¡ ¡ |d r¬ˆ   d	ˆ |d ¡ ¡ ˆ   d
|d ˆ |d ¡f t ¡ qfW q&W ˆ   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})rV   rt   Ú	enumeraterÚ   rÞ   rÐ   )rå   ræ   ÚiZletterÚentriesÚentry)ÚretrB   r+   r,   ÚgenerateÛ  s     
&z2LaTeXTranslator.generate_indices.<locals>.generatez%s-%sz\renewcommand{\indexname}{%s}r9   )r   r   r€   r   r   r²   Zlatex_domain_indicesr=   ÚenvZdomainsÚvaluesrÇ   ÚnameÚ
isinstanceÚlistrî   ZdocnamesrV   Z	localnamert   rs   )rB   rî   Zindices_configÚdomainZindexclsZ	indexnamerå   ræ   r+   )rí   rB   r,   rÉ   Ú  s"    (
z LaTeXTranslator.generate_indices)Útemplate_nameÚ	variablesr>   c             C   sT   t | jjd}x8| jjD ],}t | jj||¡}t |¡r| 	||¡S qW | 	||¡S )N)r›   )
r!   r²   r›   Ztemplates_pathr   rs   r=   ZconfdirÚexistsrÊ   )rB   rõ   rö   ZrendererZtemplate_dirÚtemplater+   r+   r,   rÊ     s    
zLaTeXTranslator.renderc             C   s   | j r| j d S dS dS )zGet current table.rÎ   N)r½   )rB   r+   r+   r,   r     s    
zLaTeXTranslator.table)rL   r>   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Údocnamer9   rx   r   z	\appendixrÎ   z:doc)	rÀ   rV   rT   r¤   rS   rt   rÑ   r±   Úsectionlevel)rB   rL   r+   r+   r,   Úvisit_document  s    

zLaTeXTranslator.visit_documentc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_document!  s    zLaTeXTranslator.depart_documentc             C   s(   | j  |d ¡ | j td t ¡ d S )Nrù   z\sphinxstepscope)rÀ   rV   rS   rt   )rB   rL   r+   r+   r,   Úvisit_start_of_file$  s    z#LaTeXTranslator.visit_start_of_filec             C   s   | j  ¡  d S )N)rÀ   rÅ   )rB   rL   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 )Nrx   )r¥   rú   rS   rV   Ú	BLANKLINE)rB   rL   r+   r+   r,   Úvisit_section+  s    zLaTeXTranslator.visit_sectionc             C   s   t | jd | jd ƒ| _d S )Nrx   )rº   rú   r±   )rB   rL   r+   r+   r,   Údepart_section0  s    
zLaTeXTranslator.depart_sectionc             C   s   | j  d¡ d S )Nz{\color{red}\bfseries{})rS   rV   )rB   rL   r+   r+   r,   Úvisit_problematic4  s    z!LaTeXTranslator.visit_problematicc             C   s   | j  d¡ d S )Nrp   )rS   rV   )rB   rL   r+   r+   r,   Údepart_problematic7  s    z"LaTeXTranslator.depart_problematicc             C   s   d| _ | j td t ¡ d S )Nrx   z\begin{sphinxShadowBox})r¢   rS   rV   rt   )rB   rL   r+   r+   r,   Úvisit_topic:  s    zLaTeXTranslator.visit_topicc             C   s   d| _ | j dt ¡ d S )Nr   z\end{sphinxShadowBox})r¢   rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_topic>  s    zLaTeXTranslator.depart_topicc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_glossaryD  s    zLaTeXTranslator.visit_glossaryc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_glossaryG  s    zLaTeXTranslator.depart_glossaryc             C   s&   | j  t¡ | j  dt ¡ d| _d S )Nz\begin{productionlist}rx   )rS   rV   rÿ   rt   r   )rB   rL   r+   r+   r,   Úvisit_productionlistJ  s    z$LaTeXTranslator.visit_productionlistc             C   s   | j  dt ¡ d| _d S )Nz\end{productionlist}r   )rS   rV   rÿ   r   )rB   rL   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{)rS   rV   rÑ   rÞ   )rB   rL   Útnr+   r+   r,   Úvisit_productionS  s
    z LaTeXTranslator.visit_productionc             C   s   | j  dt ¡ d S )Nrp   )rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_production[  s    z!LaTeXTranslator.depart_productionc             C   s   | j  | jd ¡ d S )NZ
transition)rS   rV   r­   )rB   rL   r+   r+   r,   Úvisit_transition^  s    z LaTeXTranslator.visit_transitionc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_transitiona  s    z!LaTeXTranslator.depart_transitionc             C   s  |j }t|tjƒrtj‚nÞt|tjƒr.| jrŽt|j	ƒdkrbt|j	d tj
ƒsbtjtdƒ|d | jd s€|  | ¡ ¡| jd< d| _tj‚nžd}t| tj¡ƒr¾d|  d t|ƒ ¡ ¡¡ }y | j d	| j| j |f ¡ W n0 tk
r   | j d	| jd
 |f ¡ Y nX | j dt |  |j ¡ ¡ nÌt|tjƒrZ| j d¡ | j dt ¡ n t|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 )Nrx   r   z(document title is not a single Text node)ÚlocationÚtitler9   z[%s]ú z\%s%s{rÎ   rp   z\sphinxstyletopictitle{z\sphinxstylesidebartitle{rn   zJencountered title node not in section, topic, table, admonition or sidebarz\sphinxstyleothertitle{)%Úparentrò   r   Úseealsor   ÚSkipNoder)   r¥   r¶   Úchildrenr   r´   rµ   r   r­   rÚ   rF   ÚanyÚfindallÚimagers   r   ÚsplitrS   rV   r¯   rú   r}   r«   rt   rÖ   ZtopicÚsidebarZ
Admonitionr   rÄ   rœ   )rB   rL   r  Zshortr+   r+   r,   Úvisit_titled  sJ    


  
zLaTeXTranslator.visit_titlec             C   s8   d| _ t|jtjƒr"|  ¡ | j_n| j | j	 
¡ ¡ d S )Nr   )rœ   rò   r  r   r   rÆ   r^   rS   rV   r«   rÅ   )rB   rL   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{rp   r9   )rò   r  r   r  rS   rV   r«   rt   )rB   rL   r+   r+   r,   Úvisit_subtitle›  s    zLaTeXTranslator.visit_subtitlec             C   s   | j  | j ¡ ¡ d S )N)rS   rV   r«   rÅ   )rB   rL   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_urlsrS   rV   rÿ   rt   r   r[   )rB   rL   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 )Nz\pysigstopsignaturesFr  z"\end{fulllineitems}\end{savenotes}z\end{fulllineitems})rª   rS   rV   rt   r²   r   rÿ   )rB   rL   r+   r+   r,   Údepart_desc¶  s    zLaTeXTranslator.depart_descc             C   s@   x:|D ]"}t |tjƒr| j td ¡ P qW | j td ¡ d S )Nz\pysiglinewithargsret{z\pysigline{)rò   r   Zdesc_parameterlistrS   rV   rt   )rB   rL   Úchildr+   r+   r,   Ú_visit_signature_line¿  s
    
z%LaTeXTranslator._visit_signature_linec             C   s   | j  d¡ d S )Nrp   )rS   rV   )rB   rL   r+   r+   r,   Ú_depart_signature_lineÇ  s    z&LaTeXTranslator._depart_signature_linec             C   sŒ   d}|j d dkr:|d r:x|d D ]}||  |¡7 }q$W | j |¡ | jsbd| _| j td ¡ | d¡sx|  |¡ n| j td ¡ d S )	Nr9   ZobjtypeZdescriberÔ   Tz\pysigstartsignaturesÚis_multilinez\pysigstartmultiline)r  rÑ   rS   rV   rª   rt   rT   r$  )rB   rL   ZhyperrË   r+   r+   r,   Úvisit_desc_signatureÊ  s    
z$LaTeXTranslator.visit_desc_signaturec             C   s*   |  d¡s|  |¡ n| j td ¡ d S )Nr&  z\pysigstopmultiline)rT   r%  rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_desc_signatureØ  s    
z%LaTeXTranslator.depart_desc_signaturec             C   s   |   |¡ d S )N)r$  )rB   rL   r+   r+   r,   Úvisit_desc_signature_lineÞ  s    z)LaTeXTranslator.visit_desc_signature_linec             C   s   |   |¡ d S )N)r%  )rB   rL   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 )Nz\pysigstopsignaturesF)rª   rz   rS   rV   rt   )rB   rL   r+   r+   r,   Úvisit_desc_contentä  s    
z"LaTeXTranslator.visit_desc_contentc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_desc_contenté  s    z#LaTeXTranslator.depart_desc_contentc             C   s   | j  d¡ d S )Nz\sphinxcode{\sphinxupquote{)rS   rV   )rB   rL   r+   r+   r,   Úvisit_desc_inlineì  s    z!LaTeXTranslator.visit_desc_inlinec             C   s   | j  d¡ d S )Nz}})rS   rV   )rB   rL   r+   r+   r,   Údepart_desc_inlineï  s    z"LaTeXTranslator.depart_desc_inlinec             C   s   | j  d¡ |  jd7  _d S )Nz\sphinxbfcode{\sphinxupquote{rx   )rS   rV   r¦   )rB   rL   r+   r+   r,   Úvisit_desc_nameõ  s    zLaTeXTranslator.visit_desc_namec             C   s   | j  d¡ |  jd8  _d S )Nz}}rx   )rS   rV   r¦   )rB   rL   r+   r+   r,   Údepart_desc_nameù  s    z LaTeXTranslator.depart_desc_namec             C   s   | j  d¡ |  jd7  _d S )Nz\sphinxcode{\sphinxupquote{rx   )rS   rV   r¦   )rB   rL   r+   r+   r,   Úvisit_desc_addnameý  s    z"LaTeXTranslator.visit_desc_addnamec             C   s   | j  d¡ |  jd8  _d S )Nz}}rx   )rS   rV   r¦   )rB   rL   r+   r+   r,   Údepart_desc_addname  s    z#LaTeXTranslator.depart_desc_addnamec             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_desc_type  s    zLaTeXTranslator.visit_desc_typec             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_desc_type  s    z LaTeXTranslator.depart_desc_typec             C   s   | j  d¡ d S )Nz{ $\rightarrow$ )rS   rV   )rB   rL   r+   r+   r,   Úvisit_desc_returns  s    z"LaTeXTranslator.visit_desc_returnsc             C   s   | j  d¡ d S )Nrp   )rS   rV   )rB   rL   r+   r+   r,   Údepart_desc_returns  s    z#LaTeXTranslator.depart_desc_returnsc             C   s   | j  d¡ d| _d S )Nz}{rx   )rS   rV   r©   )rB   rL   r+   r+   r,   Úvisit_desc_parameterlist  s    z(LaTeXTranslator.visit_desc_parameterlistc             C   s   | j  d¡ d S )Nz}{)rS   rV   )rB   rL   r+   r+   r,   Údepart_desc_parameterlist  s    z)LaTeXTranslator.depart_desc_parameterlistc             C   s4   | j s| j d¡ nd| _ | d¡s0| j d¡ d S )Nz, r   Únoemphz\emph{)r©   rS   rV   Úhasattr)rB   rL   r+   r+   r,   Úvisit_desc_parameter  s
    
z$LaTeXTranslator.visit_desc_parameterc             C   s   |  d¡s| j d¡ d S )Nr9  rp   )r:  rS   rV   )rB   rL   r+   r+   r,   Údepart_desc_parameter"  s    
z%LaTeXTranslator.depart_desc_parameterc             C   s   | j  d¡ d S )Nz\sphinxoptional{)rS   rV   )rB   rL   r+   r+   r,   Úvisit_desc_optional&  s    z#LaTeXTranslator.visit_desc_optionalc             C   s   | j  d¡ d S )Nrp   )rS   rV   )rB   rL   r+   r+   r,   Údepart_desc_optional)  s    z$LaTeXTranslator.depart_desc_optionalc             C   s   | j  d¡ d S )Nz\sphinxbfcode{\sphinxupquote{)rS   rV   )rB   rL   r+   r+   r,   Úvisit_desc_annotation,  s    z%LaTeXTranslator.visit_desc_annotationc             C   s   | j  d¡ d S )Nz}})rS   rV   )rB   rL   r+   r+   r,   Údepart_desc_annotation/  s    z&LaTeXTranslator.depart_desc_annotationc             C   s8   | j  t¡ | j  dtd  t ¡ | j  dt ¡ d S )Nz\sphinxstrong{%s:}r  z\nopagebreak)rS   rV   rÿ   r   rt   )rB   rL   r+   r+   r,   Úvisit_seealso4  s    zLaTeXTranslator.visit_seealsoc             C   s   | j  t¡ d S )N)rS   rV   rÿ   )rB   rL   r+   r+   r,   Údepart_seealso9  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 )Nrx   Z	Footnotesz\subsubsection*{rp   )
r¶   rF   r   r   r  rS   rV   r«   rt   rœ   )rB   rL   r+   r+   r,   Úvisit_rubric<  s
     zLaTeXTranslator.visit_rubricc             C   s   d| _ | j | j ¡ ¡ d S )Nr   )rœ   rS   rV   r«   rÅ   )rB   rL   r+   r+   r,   Údepart_rubricC  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 )Nrx   r   z\begin{footnote}[%s]rŒ   Zreferredz\sphinxAtStartFootnote)	rž   r   r   Úlabelr§   rS   rV   rF   rt   )rB   rL   rE  r+   r+   r,   Úvisit_footnoteG  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Œ   rx   )r§   rS   rV   rt   rž   )rB   rL   r+   r+   r,   Údepart_footnoteT  s
    zLaTeXTranslator.depart_footnotec             C   s
   t j‚d S )N)r   r  )rB   rL   r+   r+   r,   Úvisit_label\  s    zLaTeXTranslator.visit_labelc             C   s   |d | _ tj‚d S )NÚspec)r¾   r   r  )rB   rL   r+   r+   r,   Úvisit_tabular_col_spec_  s    
z&LaTeXTranslator.visit_tabular_col_specc             C   s4  t | jƒdkrD| j ¡ dkr:td| jd |jp0df ƒ‚qnd| j_n*t | jƒdkrntd| jd |jpfdf ƒ‚| j t	|ƒ¡ | jj
d kr²d	| jjjks¦d
| jjjkrªd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 )Nrx   rf   z2%s:%s: longtable does not support nesting a table.rÎ   r9   TrŠ   z0%s:%s: deeply nested tables are not implemented.rP   rO   rQ   z{%s}ZvlinesZnovlineszcolwidths-givenrN   zGboth tabularcolumns and :widths: option are given. :widths: is ignored.)r  )r¶   r½   r   ri   r6   rÀ   Úliner[   rV   rK   rY   r=   r²   Zlatex_table_styler¾   rt   rX   rU   rT   r´   Úinfor   )rB   rL   r+   r+   r,   Úvisit_tablec  s4    


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   ri   rÊ   rS   rV   rÿ   rt   r½   rÅ   )rB   rL   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 )Nrx   ZcolwidthZstub)r   rW   rZ   rV   r_   )rB   rL   r+   r+   r,   Úvisit_colspec  s
    zLaTeXTranslator.visit_colspecc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_colspec—  s    zLaTeXTranslator.depart_colspecc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_tgroupš  s    zLaTeXTranslator.visit_tgroupc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_tgroup  s    zLaTeXTranslator.depart_tgroupc             C   s   |   | jj¡ d S )N)rÄ   r   rR   )rB   rL   r+   r+   r,   Úvisit_thead   s    zLaTeXTranslator.visit_theadc             C   s*   | j r| j d dkr| j  ¡  |  ¡  d S )NrÎ   z\sphinxhline)rS   rÅ   rÆ   )rB   rL   r+   r+   r,   Údepart_thead¤  s    
zLaTeXTranslator.depart_theadc             C   s   |   | jj¡ d S )N)rÄ   r   rS   )rB   rL   r+   r+   r,   Úvisit_tbody©  s    zLaTeXTranslator.visit_tbodyc             C   s*   | j r| j d dkr| j  ¡  |  ¡  d S )NrÎ   z\sphinxhline)rS   rÅ   rÆ   )rB   rL   r+   r+   r,   Údepart_tbody­  s    
zLaTeXTranslator.depart_tbodyc             C   sš   d| j _| j j}x„| j  | j j| j j¡}|d kr4P q| j  j|j7  _|jrX| j d¡ |jdkrv| j d|j ¡ q| j d|j|||jf ¡ qW d S )Nr   ú&rx   z\sphinxtablestrut{%d}z.\multicolumn{%d}{%sl%s}{\sphinxtablestrut{%d}})	r   r`   rY   r~   ra   rk   rS   rV   rd   )rB   rL   ru   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rÂd}xL|ˆ jjk rÀ|| dkrÀ||d  j|| jkr¶ˆ j  d	| ¡ |d7 }qvW x¦|ˆ jjk rh||d …  	d¡}ˆ j  d
|d || f ¡ ||7 }|d7 }xT|ˆ jjk rd|| dkrd||d  j|| jkrXˆ j  d	| ¡ |d7 }qW qÄW ˆ j  dˆ jj ¡ ˆ j j
d7  _
d S )Nz\\c                s   g | ]}ˆ j  ˆ j j|¡‘qS r+   )r   r~   ra   )rj   rê   )rB   r+   r,   rm   Ç  s    z.LaTeXTranslator.depart_row.<locals>.<listcomp>c                s$   g | ]}|j |j ˆ jj d  k‘qS )rx   )ra   rw   r   )rj   r~   )rB   r+   r,   rm   È  s    z\sphinxhliner   Frx   z\sphinxvlinecrossing{%d}z\sphinxcline{%d-%d}z\sphinxfixclines{%d})rS   rV   rt   ry   r   rW   ÚallÚextendrd   r³   ra   )rB   rL   rc   Z
underlinedrê   Újr+   )rB   r,   Ú
depart_rowÅ  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rÖt|ƒdkrÊt|d tjƒrÊ| ¡ dkrÊn| j d¡ | jrè|  g ¡ | j |¡ d S )Nr   rW  Zmorerowsrx   Zmorecolsr9   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   r`   rS   rV   r{   rT   r~   rY   rk   r²   Zlatex_use_latex_multicolumnrt   rw   rd   rW   r¡   r¶   ró   r  r   r*   r\   rò   r  Ztheadr_   rF   rÄ   r«   )rB   rL   r~   r«   ru   r+   r+   r,   Úvisit_entryá  s@    &


".
zLaTeXTranslator.visit_entryc             C   sì   | j r@d| _ |  ¡ }x|r2|d tkr2| d¡ qW | j |¡ | j | j ¡ ¡ | j 	¡ }| j j
|j7  _
| jj}xp| j 	¡ }|d krŽP qx| j d¡ |jdkr¸| j d|j ¡ n| j d|j||jf ¡ | j j
|j7  _
qxW d S )Nr   rW  rx   z\sphinxtablestrut{%d}z,\multicolumn{%d}{l%s}{\sphinxtablestrut{%d}})r¡   rÆ   rt   rÅ   rS   rZ  rV   r«   r   r~   r`   rk   rY   rd   )rB   rL   rS   r~   ru   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   z, c             s   s   | ]}|  ¡ V  qd S )N)rF   )rj   Únr+   r+   r,   rÓ   /  s    z-LaTeXTranslator.visit_acks.<locals>.<genexpr>Ú.)
r   r   Úbullet_listr   Z	list_itemrS   rV   rÿ   rs   r  )rB   rL   ra  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¨   rS   rV   rt   r   r[   )rB   rL   r+   r+   r,   Úvisit_bullet_list3  s    z!LaTeXTranslator.visit_bullet_listc             C   s   | j s| j dt ¡ d S )Nz\end{itemize})r¨   rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_bullet_list9  s    z"LaTeXTranslator.depart_bullet_listc                sÞ   t tdœdd„}t t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
rÚd| j
_d S )N)rL   r>   c             S   s4   |   dd¡}d|kr0d|   dd¡t| ƒ k r0d}|S )NÚenumtyper/   Zalphaé   Ústartr   )rT   r¶   )rL   re  r+   r+   r,   Úget_enumtype>  s     z;LaTeXTranslator.visit_enumerated_list.<locals>.get_enumtypec                s4   | d krdS t | tjƒr&ˆ | jƒd S ˆ | jƒS d S )Nr   rx   )rò   r   Úenumerated_listr  )rL   )Úget_nested_levelr+   r,   rj  F  s
    z?LaTeXTranslator.visit_enumerated_list.<locals>.get_nested_levelzenum%srx   rã   r9   rä   r`  z\begin{enumerate}z*\sphinxsetlistlabels{%s}{%s}{%s}{%s}{%s}%%rg  z\setcounter{%s}{%d}T)r   r€   rb   r#   ÚlowerÚENUMERATE_LIST_STYLErT   rS   rV   rt   r   r[   )rB   rL   rh  ÚenumZenumnextÚstylerã   rä   r+   )rj  r,   Úvisit_enumerated_list=  s     z%LaTeXTranslator.visit_enumerated_listc             C   s   | j  dt ¡ d S )Nz\end{enumerate})rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_enumerated_list\  s    z&LaTeXTranslator.depart_enumerated_listc             C   s   | j  d¡ d S )Nz	\item {} )rS   rV   )rB   rL   r+   r+   r,   Úvisit_list_item_  s    zLaTeXTranslator.visit_list_itemc             C   s   | j  t¡ d S )N)rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_list_itemd  s    z LaTeXTranslator.depart_list_itemc             C   s"   | j  dt ¡ | jrd| j_d S )Nz\begin{description}T)rS   rV   rt   r   r[   )rB   rL   r+   r+   r,   Úvisit_definition_listg  s    z%LaTeXTranslator.visit_definition_listc             C   s   | j  dt ¡ d S )Nz\end{description})rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_definition_listl  s    z&LaTeXTranslator.depart_definition_listc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_definition_list_itemo  s    z*LaTeXTranslator.visit_definition_list_itemc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_definition_list_itemr  s    z+LaTeXTranslator.depart_definition_list_itemc             C   sh   |  j d7  _ d}| d¡rDd}x"|d D ]}|| j|dd7 }q*W |d7 }| j d¡ | j |¡ d S )	Nrx   r9   rÔ   z\phantomsectionF)rÍ   rp   z\sphinxlineitem{)r    rT   rÑ   rS   rV   r«   )rB   rL   ZctxrÒ   r+   r+   r,   Ú
visit_termu  s    
zLaTeXTranslator.visit_termc             C   s$   | j  | j ¡ ¡ |  jd8  _d S )Nrx   )rS   rV   r«   rÅ   r    )rB   rL   r+   r+   r,   Údepart_term€  s    zLaTeXTranslator.depart_termc             C   s   | j  d¡ d S )Nz{[})rS   rV   )rB   rL   r+   r+   r,   Úvisit_classifier„  s    z LaTeXTranslator.visit_classifierc             C   s   | j  d¡ d S )Nz{]})rS   rV   )rB   rL   r+   r+   r,   Údepart_classifier‡  s    z!LaTeXTranslator.depart_classifierc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_definitionŠ  s    z LaTeXTranslator.visit_definitionc             C   s   | j  t¡ d S )N)rS   rV   rt   )rB   rL   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}T)rS   rV   rt   r   r[   )rB   rL   r+   r+   r,   Úvisit_field_list  s    z LaTeXTranslator.visit_field_listc             C   s   | j  dt ¡ d S )Nz\end{description}\end{quote})rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_field_list•  s    z!LaTeXTranslator.depart_field_listc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_field˜  s    zLaTeXTranslator.visit_fieldc             C   s   d S )Nr+   )rB   rL   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   rx   z	\noindentz\sphinxAtStartPar)r  r³   rò   r   Zcompoundr*   rS   rV   rt   r  ÚfootnotetextrZ  )rB   rL   r³   r+   r+   r,   Úvisit_paragraph¤  s    zLaTeXTranslator.visit_paragraphc             C   s   | j  t¡ d S )N)rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_paragraphµ  s    z LaTeXTranslator.depart_paragraphc             C   s"   | j  td ¡ | jrd| j_d S )Nz\begin{center}T)rS   rV   rt   r   r[   )rB   rL   r+   r+   r,   Úvisit_centered¸  s    zLaTeXTranslator.visit_centeredc             C   s   | j  td ¡ d S )Nz\end{center})rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_centered½  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 )Nrx   Úncolumnsz\setlength{\multicolsep}{0pt}z\begin{multicols}{z}\raggedrightzA\begin{itemize}\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}T)r¨   rS   rV   rt   r   r[   )rB   rL   r†  r+   r+   r,   Úvisit_hlistÀ  s    
zLaTeXTranslator.visit_hlistc             C   s"   |  j d8  _ | j dt ¡ d S )Nrx   z*\end{itemize}\raggedcolumns\end{multicols})r¨   rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_hlistË  s    zLaTeXTranslator.depart_hlistc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_hlistcolÏ  s    zLaTeXTranslator.visit_hlistcolc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_hlistcolÒ  s    zLaTeXTranslator.depart_hlistcolr‡   )rˆ   r‰   r>   c             C   s4   y
t ||ƒS  tk
r.   t tdƒ|¡ d S X d S )Nz&dimension unit %s is invalid. Ignored.)r’   rŽ   r´   rµ   r   )rB   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.)rò   r  r   ZTextElement)rB   rL   r+   r+   r,   Ú	is_inlineá  s    zLaTeXTranslator.is_inlinec             C   sx  g }g }g }t |jtjƒ}|r,|  |j¡}n
|  |¡}d|kr|d|kr\|  |d |d ¡}n|  |d ¡}|r|| d| ¡ d|krÂd|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œ}	y8| |	||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rÌd S |d }
|
 d¡dkrèd S | j |¡ d}|rdd |¡ }t |
¡\}}| jr8|r8d|||f }nd|||f }d|kr\d| d }| j |¡ | j |¡ d S )Nrk   r‰   zwidth=%srw   z	height=%szscale=%sg      Y@rM   )r9   r9   )z\raisebox{-0.5\height}{rp   )z\raisebox{-\height}{rp   )z{\hspace*{\fill}z\hspace*{\fill}})rn   z\hspace*{\fill}})z{\hspace*{\fill}rp   ))rx   Útop)rx   Zmiddle)rx   Zbottom)r   Úcenter)r   Úleft)r   Úrightr   rx   z!{\sphinxunactivateextrasandspace rp   z	\noindentÚuriz://rÎ   r9   z[%s]r˜   z,\lowercase{\sphinxincludegraphics%s}{{%s}%s}z \sphinxincludegraphics%s{{%s}%s}ú#z{\catcode`\#=12)rò   r  r   Ú	referencerŒ  r‹  rV   r   ÚKeyErrorr§   rt   Úreverser=   ZimagesÚignore_missing_imagesÚfindrS   rZ  rs   r   Úsplitextrœ   )rB   rL   ZpreZpostZinclude_graphics_optionsZhas_hyperlinkrŒ  ÚwÚhZalign_prepostr‘  ÚoptionsÚbaseZextÚcmdr+   r+   r,   Úvisit_imageå  sz    





zLaTeXTranslator.visit_imagec             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_image7  s    zLaTeXTranslator.depart_imagec             C   sð  | j d }| jrd}| jr¬d|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 ¡ n@| 	dd¡dkrfd }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 ¡ 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ÚHrk   z!\begin{sphinxfigure-in-table}[%s]z
\centeringz\begin{sphinxfigure-in-table}c             s   s   | ]}t |tjƒV  qd S )N)rò   r   r^   )rj   r#  r+   r+   r,   rÓ   H  s    z/LaTeXTranslator.visit_figure.<locals>.<genexpr>z	\capstartz!\end{sphinxfigure-in-table}\relaxrM   r9   )r  r  r   z\begin{wrapfigure}{%s}{%s}r  Úrrq   Z0ptz\end{wrapfigure}z\begin{center}z\end{center}z\begin{figure}[%s]c             s   s   | ]}t |tjƒV  qd S )N)rò   r   r^   )rj   r#  r+   r+   r,   rÓ   ]  s    z\end{figure})r­   r£   r   r‹  rS   rV   rt   r  r«   rT   rò   r   r  rÿ   r¢   )rB   rL   rM   Úlengthr+   r+   r,   Úvisit_figure:  sB    
 (zLaTeXTranslator.visit_figurec             C   s   | j  | j ¡ ¡ d S )N)rS   rV   r«   rÅ   )rB   rL   r+   r+   r,   Údepart_figurea  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 )Nrx   z\sphinxSetupCaptionForVerbatim{z\captionof{figure}{Úfigurez\sphinxfigcaption{z	\caption{)rŸ   rò   r  Úcaptioned_literal_blockrS   rV   r¢   r   r¥  r   Útagname)rB   rL   r+   r+   r,   Úvisit_captiond  s    zLaTeXTranslator.visit_captionc             C   sD   | j  d¡ t|jtjƒr2|  |j¡}| j  |¡ |  jd8  _d S )Nrp   rx   )rS   rV   rò   r  r   r¥  rÖ   rŸ   )rB   rL   rÕ   r+   r+   r,   Údepart_captiono  s
    zLaTeXTranslator.depart_captionc             C   s   | j  td ¡ d S )Nz\begin{sphinxlegend})rS   rV   rt   )rB   rL   r+   r+   r,   Úvisit_legendv  s    zLaTeXTranslator.visit_legendc             C   s   | j  dt ¡ d S )Nz\end{sphinxlegend})rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_legendy  s    zLaTeXTranslator.depart_legendc             C   s"   | j  td ¡ |  jd7  _d S )Nz\begin{sphinxadmonition}{note}rx   )rS   rV   rt   r£   )rB   rL   r+   r+   r,   Úvisit_admonition|  s    z LaTeXTranslator.visit_admonitionc             C   s"   | j  dt ¡ |  jd8  _d S )Nz\end{sphinxadmonition}rx   )rS   rV   rt   r£   )rB   rL   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:}rx   )r   r§  rS   rV   rt   r£   )rB   rL   rE  r+   r+   r,   Ú_visit_named_admonition„  s    

z'LaTeXTranslator._visit_named_admonitionc             C   s"   | j  dt ¡ |  jd8  _d S )Nz\end{sphinxadmonition}rx   )rS   rV   rt   r£   )rB   rL   r+   r+   r,   Ú_depart_named_admonitionŠ  s    z(LaTeXTranslator._depart_named_admonitionc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_versionmodified¡  s    z%LaTeXTranslator.visit_versionmodifiedc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_versionmodified¤  s    z&LaTeXTranslator.depart_versionmodifiedc                sä   t d dœ‡ ‡fdd„}ˆ }xt|tjƒr6|jdd}qW ttˆjj 	d¡ƒ}t|t
ƒrZd S | |¡rr| |¡rrd S dˆ kr~d S dˆ krŠd S ˆ  d	¡rÆtˆ ƒ}t|tjƒrºˆ d	 |d	 krºn|ˆ d	 ƒ xˆ d
 D ]}||ƒ qÐW d S )N)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   rx   )rÍ   )Ú
startswithr  r³   rò   r   r*   rS   rV   rt   rœ   rÑ   )rË   r³   rÍ   )rL   rB   r+   r,   Ú
add_target¨  s    

z0LaTeXTranslator.visit_target.<locals>.add_targetT)ZascendZstdÚrefuriZ	anonymousÚrefidrÔ   )r€   rò   r   ÚtargetÚ	next_noder   r   r=   rï   Z
get_domainÚHYPERLINK_SUPPORT_NODESZget_enumerable_node_typeZget_numfig_titlerT   r    r“  )rB   rL   r³  r·  rô   Z	prev_noderË   r+   )rL   rB   r,   Úvisit_target§  s(    

zLaTeXTranslator.visit_targetc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_targetÕ  s    zLaTeXTranslator.depart_targetc             C   s$   | j  td t ¡ | j  d¡ d S )Nz\begin{flushright}z---)rS   rV   rt   )rB   rL   r+   r+   r,   Úvisit_attributionØ  s    z!LaTeXTranslator.visit_attributionc             C   s   | j  td t ¡ d S )Nz\end{flushright})rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_attributionÜ  s    z"LaTeXTranslator.depart_attributionc                sô  t t dœ‡fdd„‰ t t dœdd„}| dd¡s<ˆj t¡ |d	 }xˆ|D ]~\}}}}}d
}	|rhd}	y.|dkryN‡ fdd„tdd|ƒD ƒ\}
}||
ƒ||ƒ }}ˆj d|
||||	f ¡ W nH tk
r   ˆ tdd|ƒd ƒ}||ƒ}ˆj d|||	f ¡ Y nX n„|dkrt‡ fdd„tdd|ƒD ƒ\}
}||
ƒ||ƒ }}ˆj d|
||||	|||
||	f
 ¡ n"|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|
||f ¡ nX|dkr†‡ fdd„tdd|ƒD ƒ\}
}||
ƒ}ˆj d|
||f ¡ nt t	d ƒ|¡ W qL tk
rÊ } zt t |ƒ¡ W d d }~X Y qLX qLW | dd¡sêˆj d!¡ t
j‚d S )"N)Ú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"!rQ   z
\textbar{})rÞ   rà   )r½  )rB   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)rÁ  r   r+   r+   r,   rn  ê  s    

z*LaTeXTranslator.visit_index.<locals>.styleZinlineTrë   r9   z	|spxpagemZsinglec                s   g | ]}ˆ |ƒ‘qS r+   r+   )rj   Úx)rÚ   r+   r,   rm   û  s    z/LaTeXTranslator.visit_index.<locals>.<listcomp>rŠ   z\index{%s@%s!%s@%s%s}rx   r   z\index{%s@%s%s}Zpairc                s   g | ]}ˆ |ƒ‘qS r+   r+   )rj   rÄ  )rÚ   r+   r,   rm     s    z*\index{%s@%s!%s@%s%s}\index{%s@%s!%s@%s%s}Ztriplec                s   g | ]}ˆ |ƒ‘qS r+   r+   )rj   rÄ  )rÚ   r+   r,   rm     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                s   g | ]}ˆ |ƒ‘qS r+   r+   )rj   rÄ  )rÚ   r+   r,   rm     s    z\index{%s@%s|see{%s}}r  c                s   g | ]}ˆ |ƒ‘qS r+   r+   )rj   rÄ  )rÚ   r+   r,   rm     s    z!unknown index entry type %s foundz\ignorespaces )r€   rT   rS   rV   rt   r   rŽ   r´   rµ   r   r   r  )rB   rL   rn  rë   ÚtyperÁ  Z_tidZismainZ_keyÚmZp1Zp2ZP1ZP2ÚpÚPZp3ZP3Úerrr+   )rÚ   rB   r,   Úvisit_indexß  s\    

 
 
 

$zLaTeXTranslator.visit_indexc             C   sZ   |   |¡s| j t¡ d| dd¡ ¡ kr:| j | ¡ ¡ |   |¡sP| j t¡ tj‚d S )Nrš   Úformatr9   )	rŒ  rS   rV   rt   rT   r  rF   r   r  )rB   rL   r+   r+   r,   Ú	visit_raw!  s    

zLaTeXTranslator.visit_rawc             C   sˆ  | j s:x2| d¡D ]$}| j }|  j| j||d7  _qW |  |¡sP| j t¡ | dd¡}|s„| d¡r„d| 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rN|d
d … d }n|d
d …  dd	¡}| j |  |¡¡ t|ƒrÀt|d tjƒrÀd|d  dg ¡krÀ| j	 d¡ | j d¡ nB| j d¡ | jjrö| jsö| j	 d|  |¡ ¡ n| j	 d¡ n€t|ƒd
krb||d krb| d¡rD| j d|  |¡ ¡ n| j d|  |¡ ¡ tj‚n"| j d|  |¡ ¡ | j	 d¡ d S )NrÔ   )rÍ   r´  r9   rµ  rŒ   rÎ   r’  rÏ   rx   z\emph{z}}} (%s)z}}}z::docr   zstd-termrN   z\sphinxtermref{z\sphinxcrossref{Z	nolinkurlz\sphinxnolinkurl{%s}z\sphinxurl{%s}z\sphinxhref{%s}{rp   )rœ   rT   rŸ   rS   rÑ   rŒ  rV   rt   rÀ   r«   r²  r×   r²   Zlatex_show_pagerefsr   rØ   r—  rà   r¶   rò   r   r   Ú
encode_urir  )rB   rL   rË   rÍ   r‘  Z	hashindexr+   r+   r,   Úvisit_reference*  sR    





zLaTeXTranslator.visit_referencec             C   s,   | j  | j ¡ ¡ |  |¡s(| j  t¡ d S )N)rS   rV   r«   rÅ   rŒ  rt   )rB   rL   r+   r+   r,   Údepart_referenceb  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|  |¡|f }| j |¡ t	j
‚d S )Nrµ  rÎ   rÏ   r´  r9   rx   r’  r  z%sz\%sz\{name\}z
\{number\}z{name}z{number}z\nameref{%s}z\ref{%s})rñ   Únumberz\hyperref[%s]{%s})rT   rÀ   rà   rÚ   r†   rË  rÐ   rS   rV   r   r  )rB   rL   rË   r  rƒ   Zhyperrefr+   r+   r,   Úvisit_number_referenceg  s    
z&LaTeXTranslator.visit_number_referencec             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_download_reference{  s    z(LaTeXTranslator.visit_download_referencec             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_download_reference~  s    z)LaTeXTranslator.depart_download_referencec             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_pending_xref  s    z"LaTeXTranslator.visit_pending_xrefc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_pending_xref„  s    z#LaTeXTranslator.depart_pending_xrefc             C   s   | j  d¡ d S )Nz\sphinxstyleemphasis{)rS   rV   )rB   rL   r+   r+   r,   Úvisit_emphasis‡  s    zLaTeXTranslator.visit_emphasisc             C   s   | j  d¡ d S )Nrp   )rS   rV   )rB   rL   r+   r+   r,   Údepart_emphasisŠ  s    zLaTeXTranslator.depart_emphasisc             C   s   | j  d¡ d S )Nz+\sphinxstyleliteralemphasis{\sphinxupquote{)rS   rV   )rB   rL   r+   r+   r,   Úvisit_literal_emphasis  s    z&LaTeXTranslator.visit_literal_emphasisc             C   s   | j  d¡ d S )Nz}})rS   rV   )rB   rL   r+   r+   r,   Údepart_literal_emphasis  s    z'LaTeXTranslator.depart_literal_emphasisc             C   s   | j  d¡ d S )Nz\sphinxstylestrong{)rS   rV   )rB   rL   r+   r+   r,   Úvisit_strong“  s    zLaTeXTranslator.visit_strongc             C   s   | j  d¡ d S )Nrp   )rS   rV   )rB   rL   r+   r+   r,   Údepart_strong–  s    zLaTeXTranslator.depart_strongc             C   s   | j  d¡ d S )Nz)\sphinxstyleliteralstrong{\sphinxupquote{)rS   rV   )rB   rL   r+   r+   r,   Úvisit_literal_strong™  s    z$LaTeXTranslator.visit_literal_strongc             C   s   | j  d¡ d S )Nz}})rS   rV   )rB   rL   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)rp   )rF   rS   rV   r:  rÂ   r«   rÞ   Úadd)rB   rL   Zabbrr+   r+   r,   Úvisit_abbreviationŸ  s    z"LaTeXTranslator.visit_abbreviationc             C   s   | j  | j ¡ ¡ d S )N)rS   rV   r«   rÅ   )rB   rL   r+   r+   r,   Údepart_abbreviation©  s    z#LaTeXTranslator.depart_abbreviationc             C   s
   |   |¡S )N)rØ  )rB   rL   r+   r+   r,   Úvisit_manpage¬  s    zLaTeXTranslator.visit_manpagec             C   s
   |   |¡S )N)rÙ  )rB   rL   r+   r+   r,   Údepart_manpage¯  s    zLaTeXTranslator.depart_manpagec             C   s   | j  d¡ d S )Nz\sphinxtitleref{)rS   rV   )rB   rL   r+   r+   r,   Úvisit_title_reference²  s    z%LaTeXTranslator.visit_title_referencec             C   s   | j  d¡ d S )Nrp   )rS   rV   )rB   rL   r+   r+   r,   Údepart_title_referenceµ  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   rE  )rj   Úcitationr+   r+   r,   rÓ   º  s    z8LaTeXTranslator.visit_thebibliography.<locals>.<genexpr>c             s   s   | ]}|  ¡ V  qd S )N)rF   )rj   rE  r+   r+   r,   rÓ   »  s    )Úkeyz!\begin{sphinxthebibliography}{%s})r   r   r   rå  rº   r¶   ÚMAX_CITATION_LABEL_LENGTHrS   rV   rt   rÞ   )rB   rL   Z	citationsrÕ   Zlongest_labelr+   r+   r,   Úvisit_thebibliography¸  s    z%LaTeXTranslator.visit_thebibliographyc             C   s   | j  dt ¡ d S )Nz\end{sphinxthebibliography})rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_thebibliographyÃ  s    z&LaTeXTranslator.depart_thebibliographyc             C   s@   t tj|d ƒ}| j d|  | ¡ ¡|d |d d f ¡ d S )Nr   z\bibitem[%s]{%s:%s}rù   rÔ   )r   r   rE  rS   rV   rÞ   rF   )rB   rL   rE  r+   r+   r,   Úvisit_citationÆ  s    zLaTeXTranslator.visit_citationc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_citationË  s    zLaTeXTranslator.depart_citationc             C   s.   | j rn"| j d|d |d f ¡ tj‚d S )Nz\sphinxcite{%s:%s}rù   Zrefname)rœ   rS   rV   r   r  )rB   rL   r+   r+   r,   Úvisit_citation_referenceÎ  s    z(LaTeXTranslator.visit_citation_referencec             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_citation_referenceÕ  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kbdrN   z\sphinxkeyboard{\sphinxupquote{r¸   Úcodez\sphinxcode{\sphinxupquote{T)Úoptsr  Únowrapz\sphinxcode{\sphinxupquote{%rŒ   z}})rœ   rS   rV   rT   r²   Úhighlight_optionsr¼   Úhighlight_blockrF   rt   Úrstripr   r  )rB   rL   Úlangrï  Úhlcoder+   r+   r,   Úvisit_literalØ  s     zLaTeXTranslator.visit_literalc             C   s   | j  d¡ d S )Nz}})rS   rV   )rB   rL   r+   r+   r,   Údepart_literalì  s    zLaTeXTranslator.depart_literalc             C   s
   t j‚d S )N)r   r  )rB   rL   r+   r+   r,   Úvisit_footnote_referenceï  s    z(LaTeXTranslator.visit_footnote_referencec             C   s   | j  d¡ d S )Nz\sphinxfootnotemark[)rS   rV   )rB   rL   r+   r+   r,   Úvisit_footnotemarkò  s    z"LaTeXTranslator.visit_footnotemarkc             C   s   | j  d¡ d S )Nú])rS   rV   )rB   rL   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]z\sphinxAtStartFootnote)r   r   rE  rS   rV   rt   rF   )rB   rL   rE  r+   r+   r,   Úvisit_footnotetextø  s    z"LaTeXTranslator.visit_footnotetextc             C   s    | j  dt ¡ | j  d¡ d S )NrŒ   z \end{footnotetext}\ignorespaces )rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_footnotetextþ  s    z#LaTeXTranslator.depart_footnotetextc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_captioned_literal_block  s    z-LaTeXTranslator.visit_captioned_literal_blockc             C   s   d S )Nr+   )rB   rL   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 )Nrx   z\begin{sphinxalltt}z\def\sphinxLiteralBlockLabel{rp   r¸   r:   ÚlinenosFÚhighlight_argsÚforce)rï  r   r  z\sphinxSetupCodeBlockInFootnotez\begin{Verbatim}z\begin{sphinxVerbatim}Tz\begin{sphinxVerbatimintable}iòÿÿÿz\end{sphinxVerbatimintable}z\end{sphinxVerbatim}Zhl_linesrÎ   z\fvset{hllines={, %s,}}%%z\sphinxresetverbatimhllines)Z	rawsourcerF   r§   rS   rV   rt   rÖ   rò   r  r¦  rž   rT   r²   rñ  r¼   rò  rà   r   r[   r]   ró  r€   r   r  )	rB   rL   rÕ   rô  r   r  rï  rõ  Zhllinesr+   r+   r,   Úvisit_literal_block	  sL    


z#LaTeXTranslator.visit_literal_blockc             C   s&   | j  td t ¡ |  jd8  _d S )Nz\end{sphinxalltt}rx   )rS   rV   rt   r§   )rB   rL   r+   r+   r,   Údepart_literal_block<  s    z$LaTeXTranslator.depart_literal_blockc             C   s   | j  d¡ d S )Nz\item[] )rS   rV   )rB   rL   r+   r+   r,   Ú
visit_lineB  s    zLaTeXTranslator.visit_linec             C   s   | j  t¡ d S )N)rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_lineE  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ò   r  r   Z
line_blockrS   rV   rt   r   r[   )rB   rL   r+   r+   r,   Úvisit_line_blockH  s    z LaTeXTranslator.visit_line_blockc             C   s   | j  dt ¡ d S )Nz\end{DUlineblock})rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_line_blockQ  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   rx   z\begin{quote}T)r¶   r  rò   r   ra  ri  rS   rV   rt   r   r[   )rB   rL   Údoner#  r+   r+   r,   Úvisit_block_quoteT  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   rx   z\end{quote})	r¶   r  rò   r   ra  ri  rS   rV   rt   )rB   rL   r	  r#  r+   r+   r,   Údepart_block_quoteb  s    
z"LaTeXTranslator.depart_block_quotec             C   s   | j d r| j d¡ d S )NrÎ   z, )r«   rS   rV   )rB   rL   r+   r+   r,   Úvisit_optionm  s    
zLaTeXTranslator.visit_optionc             C   s   | j d  d7  < d S )NrÎ   rx   )r«   )rB   rL   r+   r+   r,   Údepart_optionr  s    zLaTeXTranslator.depart_optionc             C   s   | j  | dd¡¡ dS )z1The delimiter between an option and its argument.Z	delimiterr  N)rS   rV   rT   )rB   rL   r+   r+   r,   Úvisit_option_argumentv  s    z%LaTeXTranslator.visit_option_argumentc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_option_argumentz  s    z&LaTeXTranslator.depart_option_argumentc             C   s   | j  d¡ | j d¡ d S )Nz\item [r   )rS   rV   r«   )rB   rL   r+   r+   r,   Úvisit_option_group}  s    z"LaTeXTranslator.visit_option_groupc             C   s   | j  ¡  | j d¡ d S )Nz] )r«   rÅ   rS   rV   )rB   rL   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}T)rS   rV   rt   r   r[   )rB   rL   r+   r+   r,   Úvisit_option_list†  s    z!LaTeXTranslator.visit_option_listc             C   s   | j  dt ¡ d S )Nz\end{optionlist})rS   rV   rt   )rB   rL   r+   r+   r,   Údepart_option_list‹  s    z"LaTeXTranslator.depart_option_listc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_option_list_itemŽ  s    z&LaTeXTranslator.visit_option_list_itemc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_option_list_item‘  s    z'LaTeXTranslator.depart_option_list_itemc             C   s$   |  ¡ }| j |  |¡¡ tj‚d S )N)rF   rS   rV   rÞ   r   r  )rB   rL   Zostringr+   r+   r,   Úvisit_option_string”  s    z#LaTeXTranslator.visit_option_stringc             C   s   | j  d¡ d S )Nr  )rS   rV   )rB   rL   r+   r+   r,   Úvisit_description™  s    z!LaTeXTranslator.visit_descriptionc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_descriptionœ  s    z"LaTeXTranslator.depart_descriptionc             C   s   | j  d¡ d S )Nz	$^{\text{)rS   rV   )rB   rL   r+   r+   r,   Úvisit_superscriptŸ  s    z!LaTeXTranslator.visit_superscriptc             C   s   | j  d¡ d S )Nz}}$)rS   rV   )rB   rL   r+   r+   r,   Údepart_superscript¢  s    z"LaTeXTranslator.depart_superscriptc             C   s   | j  d¡ d S )Nz	$_{\text{)rS   rV   )rB   rL   r+   r+   r,   Úvisit_subscript¥  s    zLaTeXTranslator.visit_subscriptc             C   s   | j  d¡ d S )Nz}}$)rS   rV   )rB   rL   r+   r+   r,   Údepart_subscript¨  s    z LaTeXTranslator.depart_subscriptc             C   s¼   |  dg ¡}|dggkr2| j d¡ | j d¡ n†|dggkrX| j d¡ | j d¡ n`|dggkr~| j d¡ | j d¡ n:|r¬| js¬| j d	d
 |¡ ¡ | j d¡ n| j d¡ d S )NrN   Zmenuselectionz\sphinxmenuselection{rp   Zguilabelz\sphinxguilabel{Zacceleratorz\sphinxaccelerator{z\DUrole{%s}{r˜   r9   )rT   rS   rV   r«   rœ   rs   )rB   rL   rN   r+   r+   r,   Úvisit_inline«  s    
zLaTeXTranslator.visit_inlinec             C   s   | j  | j ¡ ¡ d S )N)rS   rV   r«   rÅ   )rB   rL   r+   r+   r,   Údepart_inline¼  s    zLaTeXTranslator.depart_inlinec             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_generated¿  s    zLaTeXTranslator.visit_generatedc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_generatedÂ  s    z LaTeXTranslator.depart_generatedc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_compoundÅ  s    zLaTeXTranslator.visit_compoundc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_compoundÈ  s    zLaTeXTranslator.depart_compoundc             C   s.   |  dg ¡}x|D ]}| j d| ¡ qW d S )NrN   z
\begin{sphinxuseclass}{%s})rT   rS   rV   )rB   rL   rN   Úcr+   r+   r,   Úvisit_containerË  s    
zLaTeXTranslator.visit_containerc             C   s*   |  dg ¡}x|D ]}| j d¡ qW d S )NrN   z
\end{sphinxuseclass})rT   rS   rV   )rB   rL   rN   Z_cr+   r+   r,   Údepart_containerÐ  s    
z LaTeXTranslator.depart_containerc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_decorationÕ  s    z LaTeXTranslator.visit_decorationc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_decorationØ  s    z!LaTeXTranslator.depart_decorationc             C   s
   t j‚d S )N)r   r  )rB   rL   r+   r+   r,   Úvisit_headerÝ  s    zLaTeXTranslator.visit_headerc             C   s
   t j‚d S )N)r   r  )rB   rL   r+   r+   r,   Úvisit_footerà  s    zLaTeXTranslator.visit_footerc             C   s
   t j‚d S )N)r   r  )rB   rL   r+   r+   r,   Úvisit_docinfoã  s    zLaTeXTranslator.visit_docinfo)rƒ   r>   c             C   s,   |   |¡}| jr(| tdt ¡ dd¡}|S )Nz~\\r  ú~)rÚ   r¦   rà   rt   )rB   rƒ   r+   r+   r,   rÞ   è  s    
zLaTeXTranslator.encodec             C   s"   |   |¡ dd¡ dd¡ dd¡S )Nz\textasciitilde{}r+  z\sphinxhyphen{}ú-z\textquotesingle{}ú')rÞ   rà   )rB   rƒ   r+   r+   r,   rÍ  ð  s    zLaTeXTranslator.encode_uric             C   s   |   | ¡ ¡}| j |¡ d S )N)rÞ   rF   rS   rV   )rB   rL   rƒ   r+   r+   r,   Ú
visit_Textù  s    zLaTeXTranslator.visit_Textc             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_Textý  s    zLaTeXTranslator.depart_Textc             C   s
   t j‚d S )N)r   r  )rB   rL   r+   r+   r,   Úvisit_comment   s    zLaTeXTranslator.visit_commentc             C   s
   t j‚d S )N)r   r  )rB   rL   r+   r+   r,   Ú
visit_meta  s    zLaTeXTranslator.visit_metac             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Úvisit_system_message  s    z$LaTeXTranslator.visit_system_messagec             C   s   | j  t¡ d S )N)rS   rV   rt   )rB   rL   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œ   rS   rV   rF   r   r  )rB   rL   r+   r+   r,   Ú
visit_math  s    zLaTeXTranslator.visit_mathc             C   s†   |  d¡r d|d |d f }nd }|  d¡rT|rB| j d| ¡ | j | ¡ ¡ n(ddlm} | j || ¡ || jjƒ¡ tj	‚d S )NrE  zequation:%s:%srù   rð  z
\label{%s}r   )Úwrap_displaymath)
rT   rS   rV   rF   Zsphinx.util.mathr5  r²   Zmath_number_allr   r  )rB   rL   rE  r5  r+   r+   r,   Úvisit_math_block  s    

z LaTeXTranslator.visit_math_blockc          
   C   sž   d|d |d f }| j j}|rŠy d| }| j |j|d¡ W qš tk
r† } z(tjtdƒ||d | j d| ¡ W d d }~X Y qšX n| j d| ¡ d S )	Nzequation:%s:%srù   r¶  z\ref{%s})rÐ  zInvalid math_eqref_format: %r)r  z
\eqref{%s})	r²   Zmath_eqref_formatrS   rV   rË  r”  r´   rµ   r   )rB   rL   rE  Zeqref_formatÚrefÚexcr+   r+   r,   Úvisit_math_reference$  s    $z$LaTeXTranslator.visit_math_referencec             C   s   d S )Nr+   )rB   rL   r+   r+   r,   Údepart_math_reference2  s    z%LaTeXTranslator.depart_math_referencec             C   s   t jdtdd dS )z*Prepends prefix to sphinx document classesz'LaTeXWriter.docclasses() is deprecated.rŠ   )Ú
stacklevel)Zhowtor;   )ÚwarningsÚwarnr   )rB   r+   r+   r,   Ú
docclasses5  s    
zLaTeXTranslator.docclasses)TT)F)r‡   (  r2   r3   r4   rI   r–   r–  r   rD   r@   r   r€   rÄ   rÆ   rF   r   rÑ   r   rÖ   r×   rØ   rÚ   rÐ   r»   rÉ   r   rÊ   r‚   r	   rK   r   rû   rü   rý   rþ   r   r  r  r  r  r  Zvisit_sidebarZdepart_sidebarr  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  r1  r2  r3  r4  r5  r6  r7  r8  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rF  rG  rH  rJ  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rX  r\  r]  r^  rb  rc  rd  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  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Š  rb   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»  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_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Þ   rÍ  r   r.  r/  r0  r1  r2  r3  r4  r6  r9  r:  r   r>  rJ   r+   r+   )rC   r,   rE     s  
 
'
0

	"'!
R'.B	8
3		rE   )r¸  r¦  r  )r‡   )Vr5   r„   r<  Úcollectionsr   Úosr   Útypingr   r   r   r   r   r	   r
   r   r   Zdocutilsr   r   Zdocutils.nodesr   r   r   Zsphinxr   r   Zsphinx.deprecationr   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#   ÚImportErrorZromanZsphinx.builders.latexr$   Zsphinx.builders.latex.themingr%   Z	getLoggerr2   r´   rç  r®   rl  rt   rÿ   ÚcompilerÂ  r  r1   r6   ÚWriterr8   rK   r|   r€   r†   rb   r’   rE   Zsphinx.builders.latex.nodesr¸  r¦  r  r+   r+   r+   r,   Ú<module>   sz   ,



|#              1