U
    \Sh                     @  sX  d Z ddlmZ ddlZddlZddlmZ ddl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mZm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( erddl)m*Z* e"+e,Z-dZ.de d Z/dddddZ0d#ddddddZ1G dd  d ej2Z3G d!d" d"e$Z4dS )$z#Custom docutils writer for Texinfo.    )annotationsN)path)TYPE_CHECKINGAnyIterableIteratorcast)nodeswriters)ElementNodeText)__display_version__addnodes)
IndexEntry)IndexDomain)ExtensionError)___admonitionlabels)logging)SphinxTranslator)format_date)collected_footnote)TexinfoBuilderzn@quotation
%(project)s %(release)s, %(date)s

%(author)s

Copyright @copyright{} %(copyright)s
@end quotation
z\input texinfo   @c -*-texinfo-*-
@c %%**start of header
@setfilename %(filename)s
@documentencoding UTF-8
@ifinfo
@*Generated by Sphinx a  .@*
@end ifinfo
@settitle %(title)s
@defindex ge
@paragraphindent %(paragraphindent)s
@exampleindent %(exampleindent)s
@finalout
%(direntry)s
@c %%**end of header

@copying
%(copying)s
@end copying

@titlepage
@title %(title)s
@insertcopying
@end titlepage
@contents

@c %%** start of user preamble
%(preamble)s
@c %%** end of user preamble

@ifnottex
@node Top
@top %(title)s
@insertcopying
@end ifnottex

@c %%**start of body
%(body)s
@c %%**end of body
@bye
r   zlist[nodes.section])sectionreturnc                 C  sD   g }| D ]6}t |tjr$|| qt |tjr|t| q|S )z7Return a list of subsections for the given ``section``.)
isinstancer	   r   appendr   extendfind_subsections)r   resultchild r#   I/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/writers/texinfo.pyr    S   s    
r    strz
str | None)ssepr   c                 C  sH   |  |}t|D ]&\}}tdd |D r| ||< q|p@d|S )z_Like string.capwords() but does not capitalize words that already
    contain a capital letter.c                 s  s   | ]}|  V  qd S N)islower).0xr#   r#   r$   	<genexpr>d   s     z!smart_capwords.<locals>.<genexpr> )split	enumerateall
capitalizejoin)r&   r'   wordsiwordr#   r#   r$   smart_capwords_   s
    
r6   c                	      s   e Zd ZU dZ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ddgddifffZded< i Zded< ded< dZddd fddZ	ddddZ
  ZS )TexinfoWriterz0Texinfo writer for generating Texinfo documents.)texinfotexizTexinfo Specific OptionsNzName of the Info filez--texinfo-filenamedefault z	Dir entryz--texinfo-dir-entryDescriptionz--texinfo-dir-descriptionZCategoryz--texinfo-dir-categoryZMiscellaneouszBtuple[str, Any, tuple[tuple[str, list[str], dict[str, str]], ...]]settings_speczdict[str, Any]settings_defaultsr%   output)r?   fragmentr   None)builderr   c                   s   t    || _d S r(   )super__init__rB   )selfrB   	__class__r#   r$   rD   {   s    
zTexinfoWriter.__init__r   c                 C  sX   | j | j| j }tt|| _| j| | j  | jD ]}t	| |t
| j| q:d S r(   )rB   Zcreate_translatordocumentr   TexinfoTranslatorvisitor	walkaboutfinishvisitor_attributessetattrgetattr)rE   rK   attrr#   r#   r$   	translate   s    

zTexinfoWriter.translate)__name__
__module____qualname____doc__	supportedr=   __annotations__r>   rN   rD   rR   __classcell__r#   r#   rF   r$   r7   i   s"   
 r7   c                      s  e Zd ZU dZded< dddddddddddddZddd	d
 fddZd	dddZ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ZdddddZdddddZdddd d!Zd	dd"d#Zddddd$d%d&Zed'fd(d)d	d*d+d,Zdd	d-d.d/Zddd0d1d2Zd	dd3d4Zd5d6d7d8d9Zddd:d;d<Zdd=d	d>d?d@Zddd=d	dAdBdCZd5d	d7dDdEZd5d	d7dFdGZdHd	d7dIdJZdHd	d7dKdLZd5d	d7dMdNZ d5d	d7dOdPZ!dQZ"dRZ#d5d	d7dSdTZ$d5d	d7dUdVZ%d5d	d7dWdXZ&d5d	d7dYdZZ'd5d	d7d[d\Z(d5d	d7d]d^Z)d5d	d7d_d`Z*d5d	d7dadbZ+d5d	d7dcddZ,d5d	d7dedfZ-d5d	d7dgdhZ.d5d	d7didjZ/d5d	d7dkdlZ0d5d	d7dmdnZ1d5d	d7dodpZ2d5d	d7dqdrZ3dsd	d7dtduZ4dsd	d7dvdwZ5e4Z6e5Z7d5d	d7dxdyZ8d5d	d7dzd{Z9d5d	d7d|d}Z:d5d	d7d~dZ;d5d	d7ddZ<d5d	d7ddZ=d5d	d7ddZ>d5d	d7ddZ?d5dd7ddZ@d5d	d7ddZAd5d	d7ddZBd5d	d7ddZCd5d	d7ddZDd5d	d7ddZEd5d	d7ddZFd5d	d7ddZGd5d	d7ddZHd5d	d7ddZId5d	d7ddZJd5d	d7ddZKd5d	d7ddZLd5d	d7ddZMd5d	d7ddZNd5d	d7ddZOd5d	d7ddZPd5d	d7ddZQd5d	d7ddZRd5d	d7ddZSd5d	d7ddZTd5d	d7ddZUd5d	d7ddZVd5d	d7ddZWd5d	d7ddZXd5d	d7ddZYd5d	d7ddZZd5d	d7ddZ[d5d	d7ddZ\d5d	d7ddĄZ]d5d	d7ddƄZ^d5d	d7ddȄZ_d5d	d7ddʄZ`d5d	d7dd̄Zad5d	d7dd΄Zbd5d	d7ddЄZcd5d	d7dd҄Zdd5d	d7ddԄZed5d	d7ddքZfd5d	d7dd؄Zgd5d	d7ddڄZhd5d	d7dd܄Zid5d	d7ddބZjd5d	d7ddZkd5d	d7ddZld5d	d7ddZmd5d	d7ddZnd5d	d7ddZod5d	d7ddZpd5d	d7ddZqd5d	d7ddZrd5d	d7ddZsd5d	d7ddZtd5d	d7ddZud5d	d7ddZvd5d	d7ddZwd5d	d7ddZxd5d	d7ddZyd5d	d7ddZzd5d	d7dd Z{d5d	d7ddZ|d5d	d7ddZ}d5d	d7ddZ~d5d	d7ddZd5d	d7d	d
Zd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZdd5dd	dddZd5d	d7ddZd5d	d7ddZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7d d!Zd5d	d7d"d#Zd5d	d7d$d%Zd5d	d7d&d'Zd5d	d7d(d)Zd5d	d7d*d+Zd5d	d7d,d-Zd5d	d7d.d/Zd5d	d7d0d1Zd5d	d7d2d3Zd5d	d7d4d5Zd5d	d7d6d7Zd5d	d7d8d9Zd5d	d7d:d;Zd5d	d7d<d=Zd5d	d7d>d?Zd5d	d7d@dAZd5d	d7dBdCZd5d	d7dDdEZd5d	d7dFdGZd5d	d7dHdIZd5d	d7dJdKZd5d	d7dLdMZd5d	d7dNdOZd5d	d7dPdQZd5d	d7dRdSZd5d	d7dTdUZd5d	d7dVdWZd5d	d7dXdYZd5d	d7dZd[Zd5d	d7d\d]Zd5d	d7d^d_Zd5d	d7d`daZd5d	d7dbdcZd=d	d7dddeZd5d	d7dfdgZd5d	d7dhdiZd5d	d7djdkZd5d	d7dldmZd5d	d7dndoZd5d	d7dpdqZd5d	d7drdsZd5d	d7dtduZd5d	d7dvdwZd5d	d7dxdyZd5d	d7dzd{Zd5d	d7d|d}Zd5d	d7d~dZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZҐdd	d7ddZӐdd	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7ddZd5d	d7dÐdĄZd5d	d7dŐdƄZd5d	d7dǐdȄZd5d	d7dɐdʄZd5d	d7dːd̄Zd5d	d7d͐d΄Zd5d	d7dϐdЄZd5d	d7dѐd҄Zd5d	d7dӐdԄZd5d	d7dՐdքZd5d	d7dאd؄Zd5d	d7dِdڄZd5d	d7dېd܄Zd5d	d7dݐdބZd5d	d7dߐdZd5d	d7ddZd5d	d7ddZ  ZS (  rJ   Fr   rB   r;      r   )authorbodycopyingdatedirentryZexampleindentfilenameZparagraphindentpreambleprojectreleasetitleznodes.documentrA   )rI   rB   r   c                   s   t  || |   t | _t | _g | _i | _i | _i | _	i | _
|   |   |   |   g | _g | _g | _d | _d| _d| _t | _d| _d| _g | _g | _d| _d| _t | _g | _d S )Nr   F)rC   rD   init_settingssetwritten_idsreferenced_idsindices	short_ids
node_names
node_menusrellinkscollect_indicescollect_node_namescollect_node_menuscollect_rellinksr\   contextdescsprevious_sectionsection_level
seen_titlenext_section_idsescape_newlinesescape_hyphenscurfilestackfootnotestackin_footnotein_samphandled_abbrs	colwidths)rE   rI   rB   rF   r#   r$   rD      s8    zTexinfoTranslator.__init__rH   c                 C  s   | j d kr| d | jD ]J}|\}}t|g| j|  }| jd|  | jd| d| d q| jr| j }|| j	krf| jd
|d qf|   d| j| _| j| jd	< t| j | _d S )
NTop
@node %s,%s,%s,%s
z@unnumbered 


z@anchor{{{}}}@w{{{}}}
z                              r;   r\   )rt   add_menuri   tuplerm   r\   r   rh   poprg   format
ensure_eolr2   r@   elementsTEMPLATEr?   )rE   indexnamecontentpointersrr#   r#   r$   rM      s    




zTexinfoTranslator.finishc                 C  sx  | j   }| _|| jj| jj| jj| | j	j
| | j	j| | j	j| | j	jppt| j	jpftd| j	jdd | jj}|s| jtj}|r| nd}| |pd|d< |d s| jdpd|d< |d d	d  d
kr|d d d	 |d< |d  d7  < | jjrZ| | | jjd|d  | | jj}d| | jj|f |d< t| |d< || jj d S )Nz	%b %d, %Y)language)rd   r[   r`   rc   rb   	copyrightr^   
<untitled>rd   r`   sourceZuntitled)z.txtz.rstz.infoz(%s)z*@dircategory %s
@direntry
%s@end direntry
r_   r]   ) default_elementscopyr   updatesettingsrd   r[   Ztexinfo_filenameescapeconfigrc   rb   r   todayr   Z	today_fmtr   r   rI   	next_noder	   astext	escape_idgetZtexinfo_dir_entryformat_menu_entryescape_menu
escape_argZtexinfo_dir_descriptionZtexinfo_dir_categoryCOPYINGZtexinfo_elements)rE   r   rd   Z
title_nodeentryr#   r#   r$   re      sJ    


 zTexinfoTranslator.init_settingsc                   s   dddfdd dj d<  d  d  fdd	jD _j tjD ]4}ttj|tj}|rv|	 nd
} ||d< qRdS )zeGenerates a unique id for each section.

        Assigns the attribute ``node_name`` to each section.r%   r   r   c                   sb     | }d\}}||  jks.||  jkr@|d7 }d| }q||7 } j| |  j|< |S )N)   r;   r   z<%s>)r   rg   rk   add)r   Znode_idZnthsuffixrE   r#   r$   add_node_name  s    


z;TexinfoTranslator.collect_node_names.<locals>.add_node_namer   	node_nametopc                   s   g | ]\}} ||fqS r#   r#   )r*   r   r   )r   r#   r$   
<listcomp>  s   z8TexinfoTranslator.collect_node_names.<locals>.<listcomp>r   N)
rI   ri   findallr	   r   r   ZTextElementr   ZTitularr   )rE   r   rd   r   r#   )r   rE   r$   ro      s    

z$TexinfoTranslator.collect_node_namesc           	      C  s  | j }| jg}|| jtj |D ]6}d|kr:|d s>tdd t|D }|||d < q&| jtj	}|rv|j
n| j}t|tjtjfs| j}|| jk	r||d  }||d dd 7 }||d< ||d = d|d< | jD ]\}}g ||< |d | qdS )z1Collect the menu entries for each "node" section.r   c                 S  s   g | ]}|d  qS )r   r#   )r*   r&   r#   r#   r$   r   "  s     z8TexinfoTranslator.collect_node_menus.<locals>.<listcomp>r   r   N)rl   rI   r   r   r	   r   AssertionErrorr    r   rd   parentr   ri   r   )	rE   rl   targetsnodeentriesrd   r   r   _contentr#   r#   r$   rp     s(    

z$TexinfoTranslator.collect_node_menusc                 C  s   | j }| j}|D ]}dddg||< q| D ]\}}|D ]}||| d< q8q,| D ]Z\}}t|D ]H\}}|dkr||d  || d< |t|d krd||d  || d< qdqTz|d d }W n tk
r   Y nX ||d d< d|| d< dS )z@Collect the relative links (next, previous, up) for each "node".r;      r   r   r   N)rm   rl   itemsr/   len
IndexError)rE   rm   rl   idr   er4   firstr#   r#   r$   rq   4  s&    z"TexinfoTranslator.collect_rellinksr%   )r&   r   c                 C  s@   | dd}| dd}| dd}| dd}| d	d
}|S )z8Return a string with Texinfo command characters escaped.@z@@{z@{}z@}z``z`@w{`}z''z'@w{'})replacerE   r&   r#   r#   r$   r   U  s    zTexinfoTranslator.escapec                 C  s,   |  |}|dd}d|  }|S )zVReturn an escaped string suitable for use as an argument
        to a Texinfo command.,z@comma{}r-   )r   r   r2   r.   stripr   r#   r#   r$   r   _  s    
zTexinfoTranslator.escape_argc                 C  sN   d}|D ]}| |d}qtd|r2| dd}d|  }| |S )z=Return an escaped string suitable for node names and anchors.z,:()r-   z[^ .].)r   researchr2   r.   r   r   )rE   r&   Z	bad_charsbcr#   r#   r$   r   i  s    zTexinfoTranslator.escape_idc                 C  s,   |  |}|dd}d|  }|S )z3Return an escaped string suitable for menu entries.:;r-   )r   r   r2   r.   r   r   r#   r#   r$   r   t  s    
zTexinfoTranslator.escape_menuc                 C  s,   | j r(| j d dd dkr(| j d dS )z7Ensure the last line in body is terminated by new line.Nr   r\   r   r   r#   r#   r$   r   {  s    zTexinfoTranslator.ensure_eol)r   r   descr   c                   sv   ||krd| d}nd| d| d}t dt|d d f d fd	d
tj|d  dD }||  d S )Nz* z:: : z.    rZ   N   r   c                 3  s   | ]}d   | V  qdS )r-   Nr#   )r*   loffsetr#   r$   r,     s     z6TexinfoTranslator.format_menu_entry.<locals>.<genexpr>)width)maxr   r2   textwrapwrapr   )rE   r   r   r   r&   Zwdescr#   r   r$   r     s    z#TexinfoTranslator.format_menu_entryz
\s+---?\s+z	list[str]zre.Pattern[str])r   regr   c              	   C  s   |D ]~}| j | }z||d}W n tk
r<   |g}Y nX t|dkrT|\}}nd}| |}| |}| j| ||| qd S )Nr   r   r;   )	rk   r.   	TypeErrorr   r   r   r\   r   r   )rE   r   r   r   r   partsr   r#   r#   r$   add_menu_entries  s    



z"TexinfoTranslator.add_menu_entries)r   r   c                   s   j | }|sd S jd | |dksFj |d  rFjjrVjd d S ddd fdd	 jd
 |D ]} | q|jd d S )N
@menu
r   r   z
@end menu
r%   rA   r   c                   sN   j |  }|sd S jdj|    | |D ]} | q<d S )Nz
%s

)rl   r\   r   r   rk   r   )r   r   Zsubentry_add_detailed_menurE   r#   r$   r     s    

z6TexinfoTranslator.add_menu.<locals>._add_detailed_menuz0
@detailmenu
 --- The Detailed Node Listing ---
z
@end detailmenu
@end menu
)rl   r\   r   r   r   Ztexinfo_no_detailmenu)rE   r   r   r   r#   r   r$   r     s"    

	
zTexinfoTranslator.add_menu)	width_strr   c                 C  sX   t d|}|s|S |}| d d \}}|r8|dkr<dS |dkrTdt|d  }|S )Nz(\d*\.?\d*)\s*(\S*)r   Zpxr;   %z%d.0ptgDI@)r   matchgroupsfloat)rE   r   r   resamountunitr#   r#   r$   tex_image_length  s    z"TexinfoTranslator.tex_image_lengthc           	        s   dddd fdd} j j}|r jjj D ]j}|jD ]^}|j d|j }t|t	rd||krdq:||
 jj\}}|sq: j|j|||f q:q0tt jjd} jjD ]&}|j| r jtd	d
f  qqd S )Nz"list[tuple[str, list[IndexEntry]]]boolr%   )r   	collapsedr   c           
        s   dg}| D ]l\}}|D ]^}|d s$q  |d } |d  d|d  } |d } |||}	||	 qq
|d d|S )	Nr      r   r   r      z
@end menu
r;   )r   get_short_idr   r   r   r2   )
r   r   retZ_letterr   r   r   sidr   mer   r#   r$   generate  s    
z3TexinfoTranslator.collect_indices.<locals>.generate-r   Indexz
@printindex ge
)r   Ztexinfo_domain_indicesrB   envdomainsvaluesri   r   r   listr   Zdocnamesr   	localnamer   r   
get_domainr   r   )	rE   r   Zindices_configdomainZindexclsZ	indexnamer   r   docnamer#   r   r$   rn     s,    




z!TexinfoTranslator.collect_indicesr   z*dict[str, list[collected_footnote | bool]])r   r   c                   s\   ddd fdd i } |D ]6}t tj|d }|  }td	|j dg||< q |S )
Nr   zIterator[nodes.footnote])nr   c                 3  sN   t | tjr| V  n6| jD ].}t |tjr.qqt |tjr |E d H  qd S r(   )r   r	   Zfootnotechildrenr   Zstart_of_filer   )r   cfootnotes_underr#   r$   r     s    
z<TexinfoTranslator.collect_footnotes.<locals>.footnotes_underr   r;   F)r;   )r   r	   labelr   r   r   r   )rE   r   Zfnotesfnr   numr#   r   r$   collect_footnotes  s    	z#TexinfoTranslator.collect_footnotes)r   r   c                 C  sH   z| j | }W n4 tk
rB   tt| j dd }|| j |< Y nX |S )z-Return a shorter 'id' associated with ``id``.r   N)rj   KeyErrorhexr   )rE   r   r   r#   r#   r$   r     s    zTexinfoTranslator.get_short_idr   )r   r   r   c                 C  sl   | drd S | jd d | }| |}| |}||fD ]*}|| jkr<| jd|  | j| q<d S )Nzindex-r   r   z@anchor{%s})
startswithrz   r   r   rg   r\   r   r   )rE   r   r   Zeidr   r#   r#   r$   
add_anchor  s    



zTexinfoTranslator.add_anchor)r   r   r   r   c                 C  sf   |  |}| |}| jjrV| jd| d| d | j| | j| | n| j| d S )N@ref{,,r   )	r   r   r   Ztexinfo_cross_referencesr\   r   rh   r   r   )rE   r   r   r   r   r#   r#   r$   add_xref  s    

zTexinfoTranslator.add_xrefc                 C  s>   | j | | | j|dd d|kr:| d| d S )Nr   r;   :doc)r{   r   r  rz   r   r  rE   r   r#   r#   r$   visit_document(  s    z TexinfoTranslator.visit_documentc                 C  s   | j   | j  d S r(   )r{   r   rz   r
  r#   r#   r$   depart_document.  s    
z!TexinfoTranslator.depart_documentr   c                 C  sB   |  | }| jr |dd}| jr2|dd}| j| d S )Nr   r-   r   z@w{-})r   r   rx   r   ry   r\   r   )rE   r   r&   r#   r#   r$   
visit_Text2  s    zTexinfoTranslator.visit_Textc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_Text;  s    zTexinfoTranslator.depart_Textc                 C  s   | j |dg  | jsd S | jr6| | jd  n
| d |d }t|g| j|  }| j	d|  t
| j D ]}| || qv| j   ttj|| _|  jd7  _d S )Nidsr   r   r   r   )rw   r   r   rv   rt   r   r   rm   r\   r   sortedr  clearr   r	   r   ru   )rE   r   r   r   r   r#   r#   r$   visit_section>  s    

zTexinfoTranslator.visit_sectionc                 C  s   |  j d8  _ d S Nr   )ru   r
  r#   r#   r$   depart_sectionQ  s    z TexinfoTranslator.depart_section)z@unnumberedz@chapterz@sectionz@subsectionz@subsubsection)z@headingz@subheadingz@subsubheadingc                 C  s   | j sd| _ tj|j}t|tjr(d S t|tjtjtjfrDtjt|tj	snt
jtd|d | | n@z| j| j }W n tk
r   | jd }Y nX | jd|  d S )NTzJencountered title node not in section, topic, table, admonition or sidebarlocationr   
%s )rv   r	   SkipNoder   r   tableZ
AdmonitionZsidebarZtopicr   loggerwarningr   visit_rubricheadingsru   r   r\   r   )rE   r   r   headingr#   r#   r$   visit_titleb  s$    
zTexinfoTranslator.visit_titlec                 C  s   | j d d S Nr   r   r
  r#   r#   r$   depart_titlew  s    zTexinfoTranslator.depart_titlec                 C  sx   t |dkr&| dtdfkr&tjz| j| j }W n tk
rT   | jd }Y nX | j	d|  |  j
d7  _
d S )Nr   Z	Footnotesr   r  )r   r   r   r	   r  rubricsru   r   r\   r   rx   )rE   r   Zrubricr#   r#   r$   r  z  s     zTexinfoTranslator.visit_rubricc                 C  s   |  j d8  _ | jd d S )Nr   r   )rx   r\   r   r
  r#   r#   r$   depart_rubric  s    zTexinfoTranslator.depart_rubricc                 C  s   | j d d S )Nz

@noindent
r   r
  r#   r#   r$   visit_subtitle  s    z TexinfoTranslator.visit_subtitlec                 C  s   | j d d S r   r   r
  r#   r#   r$   depart_subtitle  s    z!TexinfoTranslator.depart_subtitlec              	   C  s   |j |}zz|j |d  }W n, tk
rL   |j j |j j |j  }Y nX t|tjr|drt| j|d  | j	|d  W d S W n tt
fk
r   Y nX d|krd S |dr| |d | |d D ]}| || qd S )Nr   refidr  refuri)r   r   r   r   r	   r   r   rw   r   r   AttributeErrorr  )rE   r   Zparindexnextr   r#   r#   r$   visit_target  s&    


zTexinfoTranslator.visit_targetc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_target  s    zTexinfoTranslator.depart_targetc              	   C  s  t |jtjtjfrd S t |d tjr,d S |d| 	 }|dd}|st|drtd| j
d  d |d  }|s|d S |d	r| |d
d  }| |}|r||kr| jd|  n| jd| d| d n|dr| j
d d |dd   }| ||| n|drn|d}|dkrH|dd  d }n|dd  dd}| ||| nR|dr|dd  dd}| |}d}d|kr|dd\}}| |}| |}||kr| jd| d| d n | jd| d| d| d n| |}| |}| jj}| jr:d}|rJ||kr\| jd|  nd|dkr| jd| d| d n>|dkr| jd| d| d n| j| d| d tjd S )Nr   r   r'  r;   r&  r   r   #zmailto:   z
@email{%s}z@email{r   r   r   r   z::doczinfo:   r   r-   r   r  z,,,r  inlinez@indicateurl{%s}z@uref{no
@footnote{)r   r   r	   rd   r   Z	desc_typeimager   r   r   rz   r  r   r\   r   r  findr   r.   r   r   r   Ztexinfo_show_urlsr|   r  )rE   r   r   urir   Z	hashindexZ	show_urlsr#   r#   r$   visit_reference  sb    








"



z!TexinfoTranslator.visit_referencec                 C  s   d S r(   r#   r
  r#   r#   r$   depart_reference  s    z"TexinfoTranslator.depart_referencec                 C  s&   t |dd}| | t jd S )Nrd   r,  )r	   r   r   r  r  rE   r   textr#   r#   r$   visit_number_reference  s    
z(TexinfoTranslator.visit_number_referencec                 C  s(   |  }| jd| |  tjd S )Nz	@cite{%s})r   r\   r   r   r	   r  r7  r#   r#   r$   visit_title_reference  s    z'TexinfoTranslator.visit_title_referencec                 C  s   | j d d S Nr   r   r
  r#   r#   r$   visit_paragraph  s    z!TexinfoTranslator.visit_paragraphc                 C  s   | j d d S r;  r   r
  r#   r#   r$   depart_paragraph  s    z"TexinfoTranslator.depart_paragraphc                 C  s   | j d d S )Nz
@quotation
r   r
  r#   r#   r$   visit_block_quote  s    z#TexinfoTranslator.visit_block_quotec                 C  s   |    | jd d S )Nz@end quotation
r   r\   r   r
  r#   r#   r$   depart_block_quote  s    z$TexinfoTranslator.depart_block_quotezElement | Nonec                 C  s   | j d d S )Nz

@example
r   r
  r#   r#   r$   visit_literal_block  s    z%TexinfoTranslator.visit_literal_blockc                 C  s   |    | jd d S )Nz@end example
r?  r
  r#   r#   r$   depart_literal_block	  s    z&TexinfoTranslator.depart_literal_blockc                 C  s*   t |jtjs| jd | jd d S )Nr   z	@display
)r   r   r	   
line_blockr\   r   r
  r#   r#   r$   visit_line_block  s    z"TexinfoTranslator.visit_line_blockc                 C  s*   | j d t|jtjs&| j d d S )Nz@end display
r   )r\   r   r   r   r	   rC  r
  r#   r#   r$   depart_line_block  s    z#TexinfoTranslator.depart_line_blockc                 C  s   |  j d7  _ d S r  rx   r
  r#   r#   r$   
visit_line  s    zTexinfoTranslator.visit_linec                 C  s   | j d |  jd8  _d S )Nz@w{ }
r   )r\   r   rx   r
  r#   r#   r$   depart_line  s    zTexinfoTranslator.depart_linec                 C  s   | j d d S )N`r   r
  r#   r#   r$   visit_strong#  s    zTexinfoTranslator.visit_strongc                 C  s   | j d d S )N'r   r
  r#   r#   r$   depart_strong&  s    zTexinfoTranslator.depart_strongc                 C  s<   | j r | jd | jd n| jd | jd d S )Nz@var{r   rI  rK  )r}   r\   r   rr   r
  r#   r#   r$   visit_emphasis)  s
    z TexinfoTranslator.visit_emphasisc                 C  s   | j | j  d S r(   r\   r   rr   r   r
  r#   r#   r$   depart_emphasis1  s    z!TexinfoTranslator.depart_emphasisr   c                 C  s   d|d kS )NZsampclassesr#   r
  r#   r#   r$   is_samp4  s    zTexinfoTranslator.is_sampc                 C  s(   |  |r|  jd7  _| jd d S )Nr   @code{rQ  r}   r\   r   r
  r#   r#   r$   visit_literal7  s    
zTexinfoTranslator.visit_literalc                 C  s(   |  |r|  jd8  _| jd d S )Nr   r   rS  r
  r#   r#   r$   depart_literal<  s    
z TexinfoTranslator.depart_literalc                 C  s   | j d d S )Nz@w{^r   r
  r#   r#   r$   visit_superscriptA  s    z#TexinfoTranslator.visit_superscriptc                 C  s   | j d d S Nr   r   r
  r#   r#   r$   depart_superscriptD  s    z$TexinfoTranslator.depart_superscriptc                 C  s   | j d d S Nz@w{[r   r
  r#   r#   r$   visit_subscriptG  s    z!TexinfoTranslator.visit_subscriptc                 C  s   | j d d S Nz]}r   r
  r#   r#   r$   depart_subscriptJ  s    z"TexinfoTranslator.depart_subscriptc                 C  s
   t jd S r(   r	   r  r
  r#   r#   r$   visit_footnoteO  s    z TexinfoTranslator.visit_footnotec                 C  s   |  j d7  _ | jd d S )Nr   r1  )r|   r\   r   r
  r#   r#   r$   visit_collected_footnoteR  s    z*TexinfoTranslator.visit_collected_footnotec                 C  s   | j d |  jd8  _d S )Nr   r   )r\   r   r|   r
  r#   r#   r$   depart_collected_footnoteV  s    z+TexinfoTranslator.depart_collected_footnotec              
   C  sf   |   }z| jd | \}}W n. ttfk
rP } ztj|W 5 d }~X Y nX ||  tjd S )Nr   )	r   r   r{   r  r   r	   r  rL   ZSkipChildren)rE   r   r   Zfootnodeusedexcr#   r#   r$   visit_footnote_referenceZ  s    
z*TexinfoTranslator.visit_footnote_referencec                 C  s:   | j d |dD ]}| || q|  jd7  _d S )Nr   r  r   )r\   r   r   r  rx   )rE   r   r   r#   r#   r$   visit_citationd  s    z TexinfoTranslator.visit_citationc                 C  s   |  j d8  _ d S r  rF  r
  r#   r#   r$   depart_citationj  s    z!TexinfoTranslator.depart_citationc                 C  s   | j d d S rY  r   r
  r#   r#   r$   visit_citation_referencem  s    z*TexinfoTranslator.visit_citation_referencec                 C  s   | j d d S r[  r   r
  r#   r#   r$   depart_citation_referencep  s    z+TexinfoTranslator.depart_citation_referencec                 C  s    | dd}| jd|  d S )Nbullet*z

@itemize %s
r   r\   r   )rE   r   rh  r#   r#   r$   visit_bullet_listu  s    z#TexinfoTranslator.visit_bullet_listc                 C  s   |    | jd d S )Nz@end itemize
r?  r
  r#   r#   r$   depart_bullet_listy  s    z$TexinfoTranslator.depart_bullet_listc                 C  s@   | dd}dddd}| d| |d}| jd|  d S )	NZenumtypearabicr;   aA)rm  Z
loweralphaZ
upperalphastartz

@enumerate %s
rj  )rE   r   enumZstartersrp  r#   r#   r$   visit_enumerated_list}  s    z'TexinfoTranslator.visit_enumerated_listc                 C  s   |    | jd d S )Nz@end enumerate
r?  r
  r#   r#   r$   depart_enumerated_list  s    z(TexinfoTranslator.depart_enumerated_listc                 C  s   | j d d S )Nz
@item r   r
  r#   r#   r$   visit_list_item  s    z!TexinfoTranslator.visit_list_itemc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_list_item  s    z"TexinfoTranslator.depart_list_itemc                 C  s   | j d d S )Nz

@table @option
r   r
  r#   r#   r$   visit_option_list  s    z#TexinfoTranslator.visit_option_listc                 C  s   |    | jd d S Nz@end table
r?  r
  r#   r#   r$   depart_option_list  s    z$TexinfoTranslator.depart_option_listc                 C  s   d S r(   r#   r
  r#   r#   r$   visit_option_list_item  s    z(TexinfoTranslator.visit_option_list_itemc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_option_list_item  s    z)TexinfoTranslator.depart_option_list_itemc                 C  s
   d| _ d S Nz@item	at_item_xr
  r#   r#   r$   visit_option_group  s    z$TexinfoTranslator.visit_option_groupc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_option_group  s    z%TexinfoTranslator.depart_option_groupc                 C  s*   |  j d7  _ | jd| j  d| _d S )Nr   r  @itemx)ry   r\   r   r}  r
  r#   r#   r$   visit_option  s    zTexinfoTranslator.visit_optionc                 C  s   |  j d8  _ d S r  )ry   r
  r#   r#   r$   depart_option  s    zTexinfoTranslator.depart_optionc                 C  s   d S r(   r#   r
  r#   r#   r$   visit_option_string  s    z%TexinfoTranslator.visit_option_stringc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_option_string  s    z&TexinfoTranslator.depart_option_stringc                 C  s   | j |dd d S )N	delimiterr-   )r\   r   r   r
  r#   r#   r$   visit_option_argument  s    z'TexinfoTranslator.visit_option_argumentc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_option_argument  s    z(TexinfoTranslator.depart_option_argumentc                 C  s   | j d d S r;  r   r
  r#   r#   r$   visit_description  s    z#TexinfoTranslator.visit_descriptionc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_description  s    z$TexinfoTranslator.depart_descriptionc                 C  s   | j d d S )Nz

@table @asis
r   r
  r#   r#   r$   visit_definition_list  s    z'TexinfoTranslator.visit_definition_listc                 C  s   |    | jd d S rw  r?  r
  r#   r#   r$   depart_definition_list  s    z(TexinfoTranslator.depart_definition_listc                 C  s
   d| _ d S r{  r|  r
  r#   r#   r$   visit_definition_list_item  s    z,TexinfoTranslator.visit_definition_list_itemc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_definition_list_item  s    z-TexinfoTranslator.depart_definition_list_itemc                 C  sp   | dD ]}| || q
|d d  D ]*}t|tjtjfr(||  || q(| j	
d| j  d| _d S )Nr  r  r  )r   r  r   r   r   r	   targetrL   remover\   r   r}  )rE   r   r   r   r#   r#   r$   
visit_term  s    
zTexinfoTranslator.visit_termc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_term  s    zTexinfoTranslator.depart_termc                 C  s   | j d d S )Nz : r   r
  r#   r#   r$   visit_classifier  s    z"TexinfoTranslator.visit_classifierc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_classifier  s    z#TexinfoTranslator.depart_classifierc                 C  s   | j d d S r;  r   r
  r#   r#   r$   visit_definition  s    z"TexinfoTranslator.visit_definitionc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_definition  s    z#TexinfoTranslator.depart_definitionc                 C  s
   d| _ d S r{  	entry_sepr
  r#   r#   r$   visit_table  s    zTexinfoTranslator.visit_tablec                 C  s   | j d d S )Nz
@end multitable

r   r
  r#   r#   r$   depart_table  s    zTexinfoTranslator.depart_tablec                 C  s   d S r(   r#   r
  r#   r#   r$   visit_tabular_col_spec  s    z(TexinfoTranslator.visit_tabular_col_specc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_tabular_col_spec  s    z)TexinfoTranslator.depart_tabular_col_specc                 C  sX   | j |d  t| j | jkr$d S | jd | j D ]}| jdd|d    q6d S )Ncolwidthz

@multitable z{%s} r+   r   )r   r   r   n_colsr\   )rE   r   r   r#   r#   r$   visit_colspec  s    
zTexinfoTranslator.visit_colspecc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_colspec  s    z TexinfoTranslator.depart_colspecc                 C  s   g | _ |d | _d S )Ncols)r   r  r
  r#   r#   r$   visit_tgroup  s    zTexinfoTranslator.visit_tgroupc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_tgroup  s    zTexinfoTranslator.depart_tgroupc                 C  s
   d| _ d S )Nz	@headitemr  r
  r#   r#   r$   visit_thead  s    zTexinfoTranslator.visit_theadc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_thead  s    zTexinfoTranslator.depart_theadc                 C  s   d S r(   r#   r
  r#   r#   r$   visit_tbody  s    zTexinfoTranslator.visit_tbodyc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_tbody  s    zTexinfoTranslator.depart_tbodyc                 C  s   d S r(   r#   r
  r#   r#   r$   	visit_row  s    zTexinfoTranslator.visit_rowc                 C  s
   d| _ d S r{  r  r
  r#   r#   r$   
depart_row  s    zTexinfoTranslator.depart_rowc                 C  s   | j d| j  d| _d S )Nz
%s
z@tab)r\   r   r  r
  r#   r#   r$   visit_entry  s    zTexinfoTranslator.visit_entryc                 C  s&   t |ddD ]}| jd qd S )NZmorecolsr   z
@tab
)ranger   r\   r   )rE   r   Z_ir#   r#   r$   depart_entry  s    zTexinfoTranslator.depart_entryc                 C  s   d S r(   r#   r
  r#   r#   r$   visit_field_list$  s    z"TexinfoTranslator.visit_field_listc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_field_list'  s    z#TexinfoTranslator.depart_field_listc                 C  s   | j d d S r;  r   r
  r#   r#   r$   visit_field*  s    zTexinfoTranslator.visit_fieldc                 C  s   | j d d S r;  r   r
  r#   r#   r$   depart_field-  s    zTexinfoTranslator.depart_fieldc                 C  s   |    | jd d S )Nz@*r?  r
  r#   r#   r$   visit_field_name0  s    z"TexinfoTranslator.visit_field_namec                 C  s   | j d d S )Nr   r   r
  r#   r#   r$   depart_field_name4  s    z#TexinfoTranslator.depart_field_namec                 C  s   d S r(   r#   r
  r#   r#   r$   visit_field_body7  s    z"TexinfoTranslator.visit_field_bodyc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_field_body:  s    z#TexinfoTranslator.depart_field_body)r   r   r   c                 C  s6   |s"t tj|d }| | }| jd|  d S )Nr   
@cartouche
@quotation %s )r   r	   rd   r   r   r\   r   )rE   r   r   rd   r#   r#   r$   visit_admonition?  s    z"TexinfoTranslator.visit_admonitionc                 C  s   t |j }| jd|  d S )Nr  )r   tagnamer\   r   )rE   r   r   r#   r#   r$   _visit_named_admonitionE  s    
z)TexinfoTranslator._visit_named_admonitionc                 C  s   |    | jd d S )Nz@end quotation
@end cartouche
r?  r
  r#   r#   r$   depart_admonitionI  s    z#TexinfoTranslator.depart_admonitionc                 C  s
   t jd S r(   r]  r
  r#   r#   r$   visit_docinfoc  s    zTexinfoTranslator.visit_docinfoc                 C  s
   t jd S r(   r]  r
  r#   r#   r$   visit_generatedf  s    z!TexinfoTranslator.visit_generatedc                 C  s
   t jd S r(   r]  r
  r#   r#   r$   visit_headeri  s    zTexinfoTranslator.visit_headerc                 C  s
   t jd S r(   r]  r
  r#   r#   r$   visit_footerl  s    zTexinfoTranslator.visit_footerc                 C  s   | dr| jd d S )Nliteral_blockz

@float LiteralBlock
rj  r
  r#   r#   r$   visit_containero  s    
z!TexinfoTranslator.visit_containerc                 C  s   | dr| jd d S )Nr  
@end float

rj  r
  r#   r#   r$   depart_containers  s    
z"TexinfoTranslator.depart_containerc                 C  s   d S r(   r#   r
  r#   r#   r$   visit_decorationw  s    z"TexinfoTranslator.visit_decorationc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_decorationz  s    z#TexinfoTranslator.depart_decorationc                 C  sX   d| dg krtjttj|d }| | | jd| |	   | 
| d S )NcontentsrP  r   z%s
)r   r	   r  r   rd   r  r\   r   r   r   r#  )rE   r   rd   r#   r#   r$   visit_topic}  s    
zTexinfoTranslator.visit_topicc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_topic  s    zTexinfoTranslator.depart_topicc                 C  s   | j dd  d S )Nz

%s

ZB__________________________________________________________________r   r
  r#   r#   r$   visit_transition  s    z"TexinfoTranslator.visit_transitionc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_transition  s    z#TexinfoTranslator.depart_transitionc                 C  s   | j d d S )Nz

@center --- r   r
  r#   r#   r$   visit_attribution  s    z#TexinfoTranslator.visit_attributionc                 C  s   | j d d S r   r   r
  r#   r#   r$   depart_attribution  s    z$TexinfoTranslator.depart_attributionc                 C  s:   | dd }d|ks d|kr0| j|  tjd S )Nr   r;   r8   r9   )r   r.   r\   r   r   r	   r  )rE   r   r   r#   r#   r$   	visit_raw  s    zTexinfoTranslator.visit_rawc                 C  s   | j d d S )Nz

@float Figure
r   r
  r#   r#   r$   visit_figure  s    zTexinfoTranslator.visit_figurec                 C  s   | j d d S )Nr  r   r
  r#   r#   r$   depart_figure  s    zTexinfoTranslator.depart_figurec                 C  sL   t |jtjs(t |jtjr6|jdr6| jd ntj	t
d|d d S )Nr  z

@caption{zcaption not inside a figure.r  )r   r   r	   figure	containerr   r\   r   r  r  r   r
  r#   r#   r$   visit_caption  s    

zTexinfoTranslator.visit_captionc                 C  s8   t |jtjs(t |jtjr4|jdr4| jd d S )Nr  z}
)r   r   r	   r  r  r   r\   r   r
  r#   r#   r$   depart_caption  s    
z TexinfoTranslator.depart_captionc           	   
   C  s   |d | j jkr"| j j|d  }n| jr,d S |d }|ddkrFd S t|\}}| |dd}| |dd}| |dd}| j	d d d	  d
| }| j
d|||||dd  f  d S )Nr4  z://r   r   r;   heightaltr`   z	-figures/z
@image{%s,%s,%s,%s,%s}
r   )rB   Zimagesignore_missing_imagesr3  r   splitextr   r   r   r   r\   r   )	rE   r   r4  r   extr   r  r  r`   r#   r#   r$   visit_image  s    zTexinfoTranslator.visit_imagec                 C  s   d S r(   r#   r
  r#   r#   r$   depart_image  s    zTexinfoTranslator.depart_imagec                 C  s   d S r(   r#   r
  r#   r#   r$   visit_compound  s    z TexinfoTranslator.visit_compoundc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_compound  s    z!TexinfoTranslator.depart_compoundc                 C  s   |  | d S r(   )r  r
  r#   r#   r$   visit_sidebar  s    zTexinfoTranslator.visit_sidebarc                 C  s   |  | d S r(   )r  r
  r#   r#   r$   depart_sidebar  s    z TexinfoTranslator.depart_sidebarc                 C  s   | j rtj| jd d S )Nz@w{()r|   r	   r  r\   r   r
  r#   r#   r$   visit_label  s    zTexinfoTranslator.visit_labelc                 C  s   | j d d S )Nz)} r   r
  r#   r#   r$   depart_label  s    zTexinfoTranslator.depart_labelc                 C  s   d S r(   r#   r
  r#   r#   r$   visit_legend  s    zTexinfoTranslator.visit_legendc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_legend  s    zTexinfoTranslator.depart_legendc                 C  s   d S r(   r#   r
  r#   r#   r$   visit_substitution_reference  s    z.TexinfoTranslator.visit_substitution_referencec                 C  s   d S r(   r#   r
  r#   r#   r$   depart_substitution_reference  s    z/TexinfoTranslator.depart_substitution_referencec                 C  s
   t jd S r(   r]  r
  r#   r#   r$   visit_substitution_definition  s    z/TexinfoTranslator.visit_substitution_definitionc                 C  s   | j d|   tjd S )Nz.
@verbatim
<SYSTEM MESSAGE: %s>
@end verbatim
)r\   r   r   r	   r  r
  r#   r#   r$   visit_system_message  s    z&TexinfoTranslator.visit_system_messagec                 C  s8   | j d |  D ]}| j d|  qtjd S )Nr   z@c %s
)r\   r   r   
splitlinesr	   r  )rE   r   liner#   r#   r$   visit_comment  s    zTexinfoTranslator.visit_commentc                 C  s   | j d d S )Nz>>r   r
  r#   r#   r$   visit_problematic  s    z#TexinfoTranslator.visit_problematicc                 C  s   | j d d S )Nz<<r   r
  r#   r#   r$   depart_problematic  s    z$TexinfoTranslator.depart_problematicc                 C  s   t jtd||d d S )Nzunimplemented node type: %rr  )r  r  r   r
  r#   r#   r$   unimplemented_visit  s    z%TexinfoTranslator.unimplemented_visitc                 C  s   d S r(   r#   r
  r#   r#   r$   unknown_departure  s    z#TexinfoTranslator.unknown_departurec                 C  s   |  d  g }tttj |}|D ]}||d  q"tdd |D }|D ]t}|d r|dD ]}| || qb|d 	|d }ndd|  }| j
| | | j
| | d  qL| d  tjd S )	NZ	tokennamec                 s  s   | ]}t |V  qd S r(   )r   )r*   r   r#   r#   r$   r,     s     z9TexinfoTranslator.visit_productionlist.<locals>.<genexpr>r  z ::=z%s    r-   r   )rA  r   r   r   
productionr   r   r   r  ljustr\   r   r   rB  r	   r  )rE   r   namesZproductionlistr  maxlenr   r&   r#   r#   r$   visit_productionlist  s     

z&TexinfoTranslator.visit_productionlistc                 C  s   d S r(   r#   r
  r#   r#   r$   visit_production  s    z"TexinfoTranslator.visit_productionc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_production  s    z#TexinfoTranslator.depart_productionc                 C  s   | j d d S NrR  r   r
  r#   r#   r$   visit_literal_emphasis  s    z(TexinfoTranslator.visit_literal_emphasisc                 C  s   | j d d S rW  r   r
  r#   r#   r$   depart_literal_emphasis"  s    z)TexinfoTranslator.depart_literal_emphasisc                 C  s   | j d d S r  r   r
  r#   r#   r$   visit_literal_strong%  s    z&TexinfoTranslator.visit_literal_strongc                 C  s   | j d d S rW  r   r
  r#   r#   r$   depart_literal_strong(  s    z'TexinfoTranslator.depart_literal_strongc                 C  sZ   t |jtjr|   n| jd |d D ](\}}}}}| |}| jd|  q,d S )Nr   r   z@geindex %s
)r   r   r	   Z	paragraphr   r\   r   r   )rE   r   Z_entry_typevalueZ
_target_id_mainZ_category_keyr8  r#   r#   r$   visit_index+  s    

zTexinfoTranslator.visit_indexc                 C  s   | j d d S r;  r   r
  r#   r#   r$   visit_versionmodified5  s    z'TexinfoTranslator.visit_versionmodifiedc                 C  s   | j d d S r;  r   r
  r#   r#   r$   depart_versionmodified8  s    z(TexinfoTranslator.depart_versionmodifiedc                 C  s2   | j d | j|d  | j| | d S )Nr	  r   )rw   r   rz   r   r{   r  r
  r#   r#   r$   visit_start_of_file;  s    z%TexinfoTranslator.visit_start_of_filec                 C  s   | j   | j  d S r(   )rz   r   r{   r
  r#   r#   r$   depart_start_of_fileA  s    
z&TexinfoTranslator.depart_start_of_filec                 C  s(   |  | }| jd|  tjd S )Nz

@center %s

)r   r   r\   r   r	   r  rE   r   txtr#   r#   r$   visit_centeredE  s    z TexinfoTranslator.visit_centeredc                 C  s   | j dtd   d S )Nz

@subsubheading %s

Zseealso)r\   r   r   r
  r#   r#   r$   visit_seealsoJ  s    zTexinfoTranslator.visit_seealsoc                 C  s   | j d d S r;  r   r
  r#   r#   r$   depart_seealsoN  s    z TexinfoTranslator.depart_seealsoc                 C  s
   t jd S r(   r]  r
  r#   r#   r$   
visit_metaQ  s    zTexinfoTranslator.visit_metac                 C  s   d S r(   r#   r
  r#   r#   r$   visit_glossaryT  s    z TexinfoTranslator.visit_glossaryc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_glossaryW  s    z!TexinfoTranslator.depart_glossaryc                 C  sb   t tj|d }t ttj |}| jd | jddd |D d  | jd tjd S )Nr   r   , c                 s  s   | ]}|  V  qd S r(   )r   )r*   r   r#   r#   r$   r,   ^  s     z/TexinfoTranslator.visit_acks.<locals>.<genexpr>r   )	r   r	   bullet_listr   Z	list_itemr\   r   r2   r  )rE   r   r  Z
list_itemsr#   r#   r$   
visit_acksZ  s     zTexinfoTranslator.visit_ackszaddnodes.descc                 C  s   | j | d| _d S )Nz@deffn)rs   r   	at_deffnxr
  r#   r#   r$   
visit_desci  s    zTexinfoTranslator.visit_descc                 C  s"   | j   |   | jd d S )Nz@end deffn
)rs   r   r   r\   r   r
  r#   r#   r$   depart_descm  s    
zTexinfoTranslator.depart_descc              	   C  s   |  j d7  _ |jd }|dkr<|dD ]}| || q*z4| jj|jd }||j| | j	j
|jk}W n ttfk
r   |}Y nX | t|}| jd| j d| d d	| _|| _d S )
Nr   objtypeZdescriber  r   r   z {z} z@deffnx)ry   r   r   r  rB   r   r   Zget_type_nameZobject_typesr   Zprimary_domainr   r  r   r   r6   r\   r   r
  desc_type_name)rE   r   r  r   r   r   categoryr#   r#   r$   visit_desc_signaturer  s     

z&TexinfoTranslator.visit_desc_signaturec                 C  s$   | j d |  jd8  _d | _d S )Nr   r   )r\   r   ry   r  r
  r#   r#   r$   depart_desc_signature  s    z'TexinfoTranslator.depart_desc_signaturec                 C  s   d S r(   r#   r
  r#   r#   r$   visit_desc_signature_line  s    z+TexinfoTranslator.visit_desc_signature_linec                 C  s   d S r(   r#   r
  r#   r#   r$   depart_desc_signature_line  s    z,TexinfoTranslator.depart_desc_signature_linec                 C  s   d S r(   r#   r
  r#   r#   r$   visit_desc_content  s    z$TexinfoTranslator.visit_desc_contentc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_desc_content  s    z%TexinfoTranslator.depart_desc_contentc                 C  s   d S r(   r#   r
  r#   r#   r$   visit_desc_inline  s    z#TexinfoTranslator.visit_desc_inlinec                 C  s   d S r(   r#   r
  r#   r#   r$   depart_desc_inline  s    z$TexinfoTranslator.depart_desc_inlinec                 C  s   d S r(   r#   r
  r#   r#   r$   visit_desc_name  s    z!TexinfoTranslator.visit_desc_namec                 C  s   d S r(   r#   r
  r#   r#   r$   depart_desc_name  s    z"TexinfoTranslator.depart_desc_namec                 C  s   d S r(   r#   r
  r#   r#   r$   visit_desc_addname  s    z$TexinfoTranslator.visit_desc_addnamec                 C  s   d S r(   r#   r
  r#   r#   r$   depart_desc_addname  s    z%TexinfoTranslator.depart_desc_addnamec                 C  s   d S r(   r#   r
  r#   r#   r$   visit_desc_type  s    z!TexinfoTranslator.visit_desc_typec                 C  s   d S r(   r#   r
  r#   r#   r$   depart_desc_type  s    z"TexinfoTranslator.depart_desc_typec                 C  s   | j d d S )Nz -> r   r
  r#   r#   r$   visit_desc_returns  s    z$TexinfoTranslator.visit_desc_returnsc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_desc_returns  s    z%TexinfoTranslator.depart_desc_returnsc                 C  s   | j d d| _d S )Nz (r   r\   r   first_paramr
  r#   r#   r$   visit_desc_parameterlist  s    z*TexinfoTranslator.visit_desc_parameterlistc                 C  s   | j d d S )N)r   r
  r#   r#   r$   depart_desc_parameterlist  s    z+TexinfoTranslator.depart_desc_parameterlistc                 C  s   | j d d| _d S )Nz [r   r   r
  r#   r#   r$   visit_desc_type_parameter_list  s    z0TexinfoTranslator.visit_desc_type_parameter_listc                 C  s   | j d d S N]r   r
  r#   r#   r$   depart_desc_type_parameter_list  s    z1TexinfoTranslator.depart_desc_type_parameter_listc                 C  sJ   | j s| jd nd| _ | | }|dd}| j| tjd S )Nr  r       z@w{ })r!  r\   r   r   r   r   r	   r  r7  r#   r#   r$   visit_desc_parameter  s    z&TexinfoTranslator.visit_desc_parameterc                 C  s   |  | d S r(   )r*  r
  r#   r#   r$   visit_desc_type_parameter  s    z+TexinfoTranslator.visit_desc_type_parameterc                 C  s   | j d d S )N[r   r
  r#   r#   r$   visit_desc_optional  s    z%TexinfoTranslator.visit_desc_optionalc                 C  s   | j d d S r&  r   r
  r#   r#   r$   depart_desc_optional  s    z&TexinfoTranslator.depart_desc_optionalc                 C  sB   |   }| jr$|| jd d ks8| jr>|| j kr>tjd S )Nr   r  )r   r   rs   r  r.   r	   r  r  r#   r#   r$   visit_desc_annotation  s    z'TexinfoTranslator.visit_desc_annotationc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_desc_annotation  s    z(TexinfoTranslator.depart_desc_annotationc                 C  s   d S r(   r#   r
  r#   r#   r$   visit_inline  s    zTexinfoTranslator.visit_inlinec                 C  s   d S r(   r#   r
  r#   r#   r$   depart_inline  s    zTexinfoTranslator.depart_inlinec                 C  s`   |  }| jd |drP|| jkrP| jd| |d   | j| n| jd d S )Nz@abbr{Zexplanationz,%s}r   )r   r\   r   hasattrr~   rr   r   r   )rE   r   Zabbrr#   r#   r$   visit_abbreviation  s    z$TexinfoTranslator.visit_abbreviationc                 C  s   | j | j  d S r(   rN  r
  r#   r#   r$   depart_abbreviation  s    z%TexinfoTranslator.depart_abbreviationc                 C  s
   |  |S r(   )r  r
  r#   r#   r$   visit_manpage  s    zTexinfoTranslator.visit_manpagec                 C  s
   |  |S r(   )r  r
  r#   r#   r$   depart_manpage  s    z TexinfoTranslator.depart_manpagec                 C  s   d S r(   r#   r
  r#   r#   r$   visit_download_reference  s    z*TexinfoTranslator.visit_download_referencec                 C  s   d S r(   r#   r
  r#   r#   r$   depart_download_reference  s    z+TexinfoTranslator.depart_download_referencec                 C  s   |  | d S r(   )rk  r
  r#   r#   r$   visit_hlist  s    zTexinfoTranslator.visit_hlistc                 C  s   |  | d S r(   )rl  r
  r#   r#   r$   depart_hlist
  s    zTexinfoTranslator.depart_hlistc                 C  s   d S r(   r#   r
  r#   r#   r$   visit_hlistcol  s    z TexinfoTranslator.visit_hlistcolc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_hlistcol  s    z!TexinfoTranslator.depart_hlistcolc                 C  s   d S r(   r#   r
  r#   r#   r$   visit_pending_xref  s    z$TexinfoTranslator.visit_pending_xrefc                 C  s   d S r(   r#   r
  r#   r#   r$   depart_pending_xref  s    z%TexinfoTranslator.depart_pending_xrefc                 C  s(   | j d| |  d  tjd S )Nz@math{r   )r\   r   r   r   r	   r  r
  r#   r#   r$   
visit_math  s    zTexinfoTranslator.visit_mathc                 C  s>   | dr| |d | | jd| |   tjd S )Nr   z

@example
%s
@end example

)r   r  r\   r   r   r   r	   r  r
  r#   r#   r$   visit_math_block  s    
z"TexinfoTranslator.visit_math_block)r;   (   rS   rT   rU   r  rX   r   rD   rM   re   ro   rp   rq   r   r   r   r   r   r   r   compiler   r   r   rn   r  r   r  r  r  r  r  r  r  r  r  r"  r  r!  r  r#  r$  r%  r*  r+  r5  r6  r9  r:  r<  r=  r>  r@  rA  rB  Zvisit_doctest_blockZdepart_doctest_blockrD  rE  rG  rH  rJ  rL  rM  rO  rQ  rT  rU  rV  rX  rZ  r\  r^  r_  r`  rc  rd  re  rf  rg  rk  rl  rr  rs  rt  ru  rv  rx  ry  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  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  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  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rY   r#   r#   rF   r$   rJ      s  
"*!

'	
?
			
	rJ   )N)5rV   
__future__r   r   r   osr   typingr   r   r   r   r   Zdocutilsr	   r
   Zdocutils.nodesr   r   r   Zsphinxr   r   Zsphinx.domainsr   Zsphinx.domains.indexr   Zsphinx.errorsr   Zsphinx.localer   r   r   Zsphinx.utilr   Zsphinx.util.docutilsr   Zsphinx.util.i18nr   Zsphinx.writers.latexr   Zsphinx.builders.texinfor   	getLoggerrS   r  r   r   r    r6   Writerr7   rJ   r#   r#   r#   r$   <module>   s:   

+
