o
    NiZ                     @  sJ  d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	 ddl
mZmZmZmZ ddlmZmZ ddlmZmZ dd	lmZ dd
lmZmZmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z" erzddl#m$Z$m%Z%m&Z& ddl'm(Z( ddl)m*Z* e+e,Z-dZ.de dZ/d%ddZ0d&d'dd Z1G d!d" d"ej2Z3G d#d$ d$eZ4dS )(z#Custom docutils writer for Texinfo.    )annotationsN)IterableIterator)path)TYPE_CHECKINGAnyClassVarcast)nodeswriters)__display_version__addnodes)ExtensionError)___admonitionlabels)logging)SphinxTranslator)format_date)collected_footnote)ElementNodeText)TexinfoBuilder)
IndexEntryzn@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
sectionr   returnlist[nodes.section]c                 C  sD   g }| D ]}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$   J/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/writers/texinfo.pyr!   T   s   
r!   sstrsep
str | Nonec                 C  sH   |  |}t|D ]\}}tdd |D r| ||< q	|p d|S )zdLike string.capwords() but does not capitalize words that already
    contain a capital letter.
    c                 s      | ]}|  V  qd S N)islower).0xr$   r$   r%   	<genexpr>f       z!smart_capwords.<locals>.<genexpr> )split	enumerateall
capitalizejoin)r&   r(   wordsiwordr$   r$   r%   smart_capwords`   s   
r:   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i Zded< ded< dZd fddZ	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-descriptionCategoryz--texinfo-dir-categoryMiscellaneouszClassVar[dict[str, Any]]settings_defaultsr'   output)rD   fragmentbuilderr   r   Nonec                   s   t    || _d S r+   )super__init__rF   )selfrF   	__class__r$   r%   rI      s   

zTexinfoWriter.__init__c                 C  sj   t | jtjs	J | j| j| j}tt|| _| j| | j	  | j
D ]}t| |t| j| q&d S r+   )r   documentr
   rF   create_translatorr	   TexinfoTranslatorvisitor	walkaboutfinishvisitor_attributessetattrgetattr)rJ   rP   attrr$   r$   r%   	translate   s   

zTexinfoWriter.translate)rF   r   r   rG   r   rG   )__name__
__module____qualname____doc__	supportedsettings_specrC   __annotations__rS   rI   rW   __classcell__r$   r$   rK   r%   r;   k   s    
 r;   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 fddZdddZdddZdddZ	dddZ
dddZdddZdddZdddZdd d!Zdd"d#Zdd'd(Zed)fdd.d/Zdd0d1Zdd3d4Zdd5d6Zdd:d;Zdd=d>Zdd@dAZddBdCZddDdEZddFdGZddIdJZddKdLZddMdNZ ddOdPZ!dQZ"dRZ#ddSdTZ$ddUdVZ%ddWdXZ&ddYdZZ'dd[d\Z(dd]d^Z)dd_d`Z*ddadbZ+ddcddZ,ddedfZ-ddgdhZ.ddidjZ/ddkdlZ0ddmdnZ1ddodpZ2ddqdrZ3ddtduZ4ddvdwZ5e4Z6e5Z7ddxdyZ8ddzd{Z9dd|d}Z:dd~dZ;dddZ<dddZ=dddZ>dddZ?dddZ@dddZAdddZBdddZCdddZDdddZEdddZFdddZGdddZHdddZIdddZJdddZKdddZLdddZMdddZNdddZOdddZPdddZQdddZRdddZSdddZTdddZUdddZVdddZWdddZXdddZYdddZZdddZ[dddZ\dddĄZ]dddƄZ^dddȄZ_dddʄZ`ddd̄Zaddd΄ZbdddЄZcddd҄ZddddԄZedddքZfddd؄ZgdddڄZhddd܄ZidddބZjdddZkdddZldddZmdddZndddZodddZpdddZqdddZrdddZsdddZtdddZudddZvdddZwdddZxdddZydddZzddd Z{dddZ|dddZ}dddZ~dddZdd	d
ZdddZdddZdddZdddZddddZdddZdddZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZdddZdddZdddZddd Zdd!d"Zdd#d$Zdd%d&Zdd'd(Zdd)d*Zdd+d,Zdd-d.Zdd/d0Zdd1d2Zdd3d4Zdd5d6Zdd7d8Zdd9d:Zdd;d<Zdd=d>Zdd?d@ZddAdBZddCdDZddEdFZddGdHZddIdJZddKdLZddMdNZddOdPZddQdRZddSdTZddUdVZddWdXZddYdZZdd[d\Zdd]d^Zdd_d`ZddadbZddcddZddedfZddgdhZddidjZddkdlZÐddmdnZĐddodpZŐddqdrZƐddsdtZǐddudvZȐddwdxZɐddydzZʐdd{d|Zːdd}d~Z̐dddZ͐dddZΐdddZϐdddZАdddZѐdddZҐdddZӐdddZԐdddZՐdddZ֐dddZאdddZؐdddZِdddZڐdddZېdddZܐdddZݐdddZސdddZߐdddZdddZdddZdddZdddZdddZdddZdddZdddZdddZdddZdddZdddZdddZdddÄZddĐdńZddƐdǄZddȐdɄZddʐd˄Zdd̐d̈́ZddΐdτZddАdфZddҐdӄZddԐdՄZdd֐dׄZddؐdلZddڐdۄZddܐd݄Zddސd߄ZdddZdddZ  ZS (  rO   Fr   rF   r?      r   )authorbodycopyingdatedirentryexampleindentfilenameparagraphindentpreambleprojectreleasetitlerM   nodes.documentr   rG   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)rH   rI   init_settingssetwritten_idsreferenced_idsindices	short_ids
node_names
node_menusrellinkscollect_indicescollect_node_namescollect_node_menuscollect_rellinksrc   contextdescsprevious_sectionsection_level
seen_titlenext_section_idsescape_newlinesescape_hyphenscurfilestackfootnotestackin_footnotein_samphandled_abbrs	colwidths)rJ   rM   rF   rK   r$   r%   rI      s8   
zTexinfoTranslator.__init__c                 C  s   | j d u r
| d | jD ]%}|\}}t|g| j|  }| jd|  | jd| d| d q| jrM| j }|| j	vrJ| jd
|d | js6|   d| j| _| j| jd	< t| j | _d S )
NTop
@node %s,%s,%s,%s
z@unnumbered 


z@anchor{{{}}}@w{{{}}}
z                              r?   rc   )r~   add_menurs   tuplerw   rc   r   rr   poprq   format
ensure_eolr6   rE   elementsTEMPLATErD   )rJ   indexnamecontentpointersrr$   r$   r%   rR      s    




zTexinfoTranslator.finishc                 C  s|  | j jptd}| j jpt|| j jd}| j  }| _|	| j
j| j
j| j
j| | j j| | j j| | j j| |d | j
j}|sV| jtj}|rT| nd}| |p\d|d< |d s| jdpjd|d< |d d	d  d
v r|d d d	 |d< |d  d7  < | j
jr| | | j
jd|d  | | j
j}d| | j
j|f |d< t| |d< |	| j
j d S )Nz	%b %d, %Y)language)rm   rb   rh   rl   rk   	copyrightre   
<untitled>rm   rh   sourceuntitled)z.txtz.rstz.infoz(%s)z*@dircategory %s
@direntry
%s@end direntry
rf   rd   ) config	today_fmtr   todayr   r   default_elementscopyr   updatesettingsrm   rb   texinfo_filenameescaperl   rk   r   rM   	next_noder
   astext	escape_idgettexinfo_dir_entryformat_menu_entryescape_menu
escape_argtexinfo_dir_descriptiontexinfo_dir_categoryCOPYINGtexinfo_elements)rJ   r   r   r   rm   
title_nodeentryr$   r$   r%   ro      sF   

zTexinfoTranslator.init_settingsc                   s   dfdd dj d<  d  d  fd	d
jD _j tjD ]}ttj|tj}|r8|	 nd} ||d< q&dS )znGenerates a unique id for each section.

        Assigns the attribute ``node_name`` to each section.
        r   r'   r   c                   s|     | }d\}}||  jv s||  jv r-|d7 }d| }||  jv s||  jv s||7 } j| |  j|< |S )N)   r?   r   z<%s>)r   rq   ru   add)r   node_idnthsuffixrJ   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)r   r'   r   r'   )
rM   rs   findallr
   r   r	   TextElementr   Titularr   )rJ   r   rm   r   r$   )r   rJ   r%   ry     s   

z$TexinfoTranslator.collect_node_namesc           	      C  s   | j }| jg}|| jtj |D ]}|ddsJ dd t|D }|||d < q| jtj	}|r9|j
n| j}t|tjtjB sH| j}|| jurj||d  }||d dd 7 }||d< ||d = d|d< | jD ]\}}g ||< |d | qmdS )z1Collect the menu entries for each "node" section.r   Fc                 S  s   g | ]}|d  qS )r   r$   )r-   r&   r$   r$   r%   r   -  s    z8TexinfoTranslator.collect_node_menus.<locals>.<listcomp>r   r   N)rv   rM   r    r   r
   r   r   r!   r   rm   parentr   rs   r   )	rJ   rv   targetsnodeentriesrm   r   r   _contentr$   r$   r%   rz   &  s*   

z$TexinfoTranslator.collect_node_menusc                 C  s   | j }| j}|D ]}g d||< q| D ]\}}|D ]}||| d< qq| D ]-\}}t|D ]$\}}|dkrC||d  || d< |t|d krU||d  || d< q1q)z|d d }W n
 tyi   Y dS w ||d d< d|| d< dS )z@Collect the relative links (next, previous, up) for each "node".)r?   r?   r?      r   r   r   N)rw   rv   itemsr3   len
IndexError)rJ   rw   rv   idr   er8   firstr$   r$   r%   r{   ?  s.   z"TexinfoTranslator.collect_rellinksr&   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rJ   r&   r$   r$   r%   r   `  s   zTexinfoTranslator.escapec                 C  ,   |  |}|dd}d|  }|S )z_Return an escaped string suitable for use as an argument
        to a Texinfo command.
        ,z@comma{}r1   )r   r   r6   r2   stripr   r$   r$   r%   r   j  s   
zTexinfoTranslator.escape_argc                 C  sN   d}|D ]}| |d}qtd|r| dd}d|  }| |S )z=Return an escaped string suitable for node names and anchors.z,:()r1   z[^ .].)r   researchr6   r2   r   r   )rJ   r&   	bad_charsbcr$   r$   r%   r   u  s   
zTexinfoTranslator.escape_idc                 C  r   )z3Return an escaped string suitable for menu entries.:;r1   )r   r   r6   r2   r   r   r$   r$   r%   r     s   
zTexinfoTranslator.escape_menuc                 C  s4   | j r| j d dd dkr| j d dS dS dS )z7Ensure the last line in body is terminated by new line.Nr   rc   r   r   r$   r$   r%   r     s   zTexinfoTranslator.ensure_eolr   r   descc                   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.    ra   N   r   c                 3  s    | ]	}d   | V  qdS )r1   Nr$   )r-   loffsetr$   r%   r/     s    
z6TexinfoTranslator.format_menu_entry.<locals>.<genexpr>)width)maxr   r6   textwrapwrapr   )rJ   r   r   r   r&   wdescr$   r   r%   r     s   z#TexinfoTranslator.format_menu_entryz
\s+---?\s+r   	list[str]regre.Pattern[str]c              	   C  s   |D ]>}| j | }z||d}W n ty   |g}Y nw t|dkr)|\}}nd}| |}| |}| j| ||| qd S )Nr   r   r?   )	ru   r2   	TypeErrorr   r   r   rc   r   r   )rJ   r   r   r   r   partsr   r$   r$   r%   add_menu_entries  s   




z"TexinfoTranslator.add_menu_entriesc                   s   j | }|s	d S jd | |dks#j |d  r#jjr+jd d S d fd	d
 jd |D ]} | q;jd d S )N
@menu
r   r   z
@end menu
r   r'   r   rG   c                   sR   j |  }|s	d S jdj|   d | |D ]} | q d S )Nr   r   )rv   rc   r   r   ru   r   )r   r   subentry_add_detailed_menurJ   r$   r%   r     s   
 

z6TexinfoTranslator.add_menu.<locals>._add_detailed_menuz0
@detailmenu
 --- The Detailed Node Listing ---
z
@end detailmenu
@end menu
)r   r'   r   rG   )rv   rc   r   r   r   texinfo_no_detailmenu)rJ   r   r   r   r$   r   r%   r     s"   

	
zTexinfoTranslator.add_menu	width_strc                 C  sX   t d|}|s
|S |}| d d \}}|r|dkrdS |dkr*dt|d  }|S )Nz(\d*\.?\d*)\s*(\S*)r   pxr?   %z%d.0ptgDI@)r   matchgroupsfloat)rJ   r   r   resamountunitr$   r$   r%   tex_image_length  s   z"TexinfoTranslator.tex_image_lengthc           
        s   d fdd} j j }rTt|tsd	}t|}nd
} jjj D ]1}|j	D ]+}|j
 d|j
 }|r9||vr9q'|| jj\}}|rR j	|j|||f q'q" jjjj} jjD ]}	|j|	 rr j	tddf  d S q^d S )Nr   "list[tuple[str, list[IndexEntry]]]	collapsedboolr   r'   c           
        s   dg}| D ]6\}}|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   r6   )
r   r  ret_letterr   r   r   sidr   mer   r$   r%   generate  s   

z3TexinfoTranslator.collect_indices.<locals>.generateTF-Indexz
@printindex ge
)r   r  r  r  r   r'   )r   texinfo_domain_indicesr   r  	frozensetrF   envdomainssortedrs   r   r  docnamesr   	localnameindex_domainr   r   )
rJ   r  indices_configcheck_namesdomain	index_cls
index_namer   r  docnamer$   r   r%   rx     s8   



z!TexinfoTranslator.collect_indicesr   r   *dict[str, list[collected_footnote | bool]]c                   sZ   d
 fdd i } |D ]}t tj|d }|  }tdg|jR  d	g||< q|S )Nnr   r   Iterator[nodes.footnote]c                 3  sP    t | tjr| V  d S | jD ]}t |tjrqt |tjr% |E d H  qd S r+   )r   r
   footnotechildrenr   start_of_filer   )r  cfootnotes_underr$   r%   r%    s   

z<TexinfoTranslator.collect_footnotes.<locals>.footnotes_underr   r?   F)r  r   r   r  )r	   r
   labelr   r   r   r!  )rJ   r   fnotesfnr&  numr$   r$  r%   collect_footnotes  s   
z#TexinfoTranslator.collect_footnotesr   c                 C  s>   z| j | }W |S  ty   t| j d}|| j |< Y |S w )z-Return a shorter 'id' associated with ``id``.r.   )rt   KeyErrorr   )rJ   r   r
  r$   r$   r%   r    s   zTexinfoTranslator.get_short_idr   c                 C  sl   | drd S | jd d | }| |}| |}||fD ]}|| jvr3| jd|  | j| qd S )Nzindex-r   r   z@anchor{%s})
startswithr   r   r  rq   rc   r   r   )rJ   r   r   eidr
  r$   r$   r%   
add_anchor&  s   



zTexinfoTranslator.add_anchorc                 C  sh   |  |}| |}| jjr,| jd| d| d | j| | j| | d S | j| d S )N@ref{,,r   )	r   r  r   texinfo_cross_referencesrc   r   rr   r   r   )rJ   r   r   r   r
  r$   r$   r%   add_xref1  s   

zTexinfoTranslator.add_xrefc                 C  sB   | j | | | j|dd d|v r| d| d S d S )Nr  r?   :doc)r   r   r*  r   r   r.  rJ   r   r$   r$   r%   visit_document=  s
   z TexinfoTranslator.visit_documentc                 C     | j   | j  d S r+   )r   r   r   r4  r$   r$   r%   depart_documentC     
z!TexinfoTranslator.depart_documentr   c                 C  sB   |  | }| jr|dd}| jr|dd}| j| d S )Nr   r1   r  z@w{-})r   r   r   r   r   rc   r   )rJ   r   r&   r$   r$   r%   
visit_TextG  s   zTexinfoTranslator.visit_Textc                 C     d S r+   r$   r4  r$   r$   r%   depart_TextP     zTexinfoTranslator.depart_Textc                 C  s   | j |dg  | jsd S | jr| | jd  n| d |d }t|g| j|  }| j	d|  t
| j D ]}| || q;| j   ttj|| _|  jd7  _d S )Nidsr   r   r   r   )r   r   r   r   r~   r   r   rw   rc   r   r  r.  clearr	   r
   r   r   )rJ   r   r   r   r   r$   r$   r%   visit_sectionS  s   

zTexinfoTranslator.visit_sectionc                 C     |  j d8  _ d S Nr   )r   r4  r$   r$   r%   depart_sectionf     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B tjB r#tjt|tj	s9t
jtd|d | | d S z| j| j }W n tyO   | jd }Y nw | jd|  d S )NTzJencountered title node not in section, topic, table, admonition or sidebarlocationr   
%s )r   r
   SkipNoder   r   table
Admonitionsidebartopicr   loggerwarningr   visit_rubricheadingsr   r   rc   r   )rJ   r   r   headingr$   r$   r%   visit_titlew  s,   zTexinfoTranslator.visit_titlec                 C     | j d d S Nr   r   r4  r$   r$   r%   depart_title     zTexinfoTranslator.depart_titlec                 C  sv   t |dkr| dtdfv rtjz| j| j }W n ty)   | jd }Y nw | j	d|  |  j
d7  _
d S )Nr   	Footnotesr   rF  )r   r   r   r
   rG  rubricsr   r   rc   r   r   )rJ   r   rubricr$   r$   r%   rN    s    zTexinfoTranslator.visit_rubricc                 C  s   |  j d8  _ | jd d S )Nr   r   )r   rc   r   r4  r$   r$   r%   depart_rubric     zTexinfoTranslator.depart_rubricc                 C  rR  )Nz

@noindent
r   r4  r$   r$   r%   visit_subtitle  rU  z TexinfoTranslator.visit_subtitlec                 C  rR  rS  r   r4  r$   r$   r%   depart_subtitle  rU  z!TexinfoTranslator.depart_subtitlec              	   C  s   |j |}z?z	|j |d  }W n ty%   |j j |j j |j  }Y nw t|tjrD|dr9| j|d  | j	|d  W d S W n tt
fyP   Y nw d|v rWd S |drd| |d | |d D ]}| || qhd S )Nr   refidr=  refuri)r   r   r   r   r
   r   r   r   r   r   AttributeErrorr.  )rJ   r   parindexnextr   r$   r$   r%   visit_target  s.   

zTexinfoTranslator.visit_targetc                 C  r:  r+   r$   r4  r$   r$   r%   depart_target  r<  zTexinfoTranslator.depart_targetc              	   C  s  t |jtjtjB rd S t|dkrt |d tjrd S |d|	 
 }|dd}|s@|dr@d| jd  d |d  }|sDd S |d	rx| |d
d  }| |}|r]||krh| jd|  tj| jd| d| d tj|dr| jd d |dd   }| ||| tj|dr|d}|dkr|dd  d }n
|dd  dd}| ||| tj|dr|dd  dd}| |}d}d|v r|dd\}}| |}| |}||kr| jd| d| d tj| jd| d| d| d tj| |}| |}| jj}| jr(d}|r0||kr;| jd|  tj|dkrP| jd| d| d tj|dkre| jd| d| d tj| j| d| d tj)Nr   r   r^  r?   r]  r   r   #zmailto:   z
@email{%s}z@email{r   r   r   r   z::doczinfo:   r   r1   r   r/  z,,,r0  inlinez@indicateurl{%s}z@uref{no
@footnote{)r   r   r
   rm   r   	desc_typer   imager   r   r   r   r,  r   rc   r   r2  findr   r2   r   r   r   texinfo_show_urlsr   rG  )rJ   r   r   urir   	hashindex	show_urlsr$   r$   r%   visit_reference  st   

,*
&





 



z!TexinfoTranslator.visit_referencec                 C  r:  r+   r$   r4  r$   r$   r%   depart_reference  r<  z"TexinfoTranslator.depart_referencec                 C  s"   t |dd}| | t j)Nrm   rd  )r
   r   r   r9  rG  rJ   r   textr$   r$   r%   visit_number_reference  s   
z(TexinfoTranslator.visit_number_referencec                 C  s$   |  }| jd| |  tj)Nz	@cite{%s})r   rc   r   r   r
   rG  rs  r$   r$   r%   visit_title_reference  s   z'TexinfoTranslator.visit_title_referencec                 C  rR  Nr   r   r4  r$   r$   r%   visit_paragraph  rU  z!TexinfoTranslator.visit_paragraphc                 C  rR  rw  r   r4  r$   r$   r%   depart_paragraph  rU  z"TexinfoTranslator.depart_paragraphc                 C  rR  )Nz
@quotation
r   r4  r$   r$   r%   visit_block_quote  rU  z#TexinfoTranslator.visit_block_quotec                 C     |    | jd d S )Nz@end quotation
r   rc   r   r4  r$   r$   r%   depart_block_quote     z$TexinfoTranslator.depart_block_quoteElement | Nonec                 C  rR  )Nz

@example
r   r4  r$   r$   r%   visit_literal_block  rU  z%TexinfoTranslator.visit_literal_blockc                 C  r{  )Nz@end example
r|  r4  r$   r$   r%   depart_literal_block"  r~  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_blockrc   r   r4  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 d S )Nz@end display
r   )rc   r   r   r   r
   r  r4  r$   r$   r%   depart_line_block.  s   z#TexinfoTranslator.depart_line_blockc                 C  s   |  j d7  _ d S rA  r   r4  r$   r$   r%   
visit_line3  rC  zTexinfoTranslator.visit_linec                 C     | j d |  jd8  _d S )Nz@w{ }
r   )rc   r   r   r4  r$   r$   r%   depart_line6     zTexinfoTranslator.depart_linec                 C  rR  )N`r   r4  r$   r$   r%   visit_strong<  rU  zTexinfoTranslator.visit_strongc                 C  rR  )N'r   r4  r$   r$   r%   depart_strong?  rU  zTexinfoTranslator.depart_strongc                 C  s>   | j r| jd | jd d S | jd | jd d S )Nz@var{r   r  r  )r   rc   r   r|   r4  r$   r$   r%   visit_emphasisB  s
   z TexinfoTranslator.visit_emphasisc                 C     | j | j  d S r+   rc   r   r|   r   r4  r$   r$   r%   depart_emphasisJ     z!TexinfoTranslator.depart_emphasisr  c                 C  s   d|d v S )Nsampclassesr$   r4  r$   r$   r%   is_sampM  s   zTexinfoTranslator.is_sampc                 C  s(   |  |r|  jd7  _| jd d S )Nr   @code{r  r   rc   r   r4  r$   r$   r%   visit_literalP     
zTexinfoTranslator.visit_literalc                 C  s(   |  |r|  jd8  _| jd d S )Nr   r   r  r4  r$   r$   r%   depart_literalU  r  z TexinfoTranslator.depart_literalc                 C  rR  )Nz@w{^r   r4  r$   r$   r%   visit_superscriptZ  rU  z#TexinfoTranslator.visit_superscriptc                 C  rR  Nr   r   r4  r$   r$   r%   depart_superscript]  rU  z$TexinfoTranslator.depart_superscriptc                 C  rR  Nz@w{[r   r4  r$   r$   r%   visit_subscript`  rU  z!TexinfoTranslator.visit_subscriptc                 C  rR  Nz]}r   r4  r$   r$   r%   depart_subscriptc  rU  z"TexinfoTranslator.depart_subscriptc                 C     t jr+   r
   rG  r4  r$   r$   r%   visit_footnoteh     z TexinfoTranslator.visit_footnotec                 C  s   |  j d7  _ | jd d S )Nr   ri  )r   rc   r   r4  r$   r$   r%   visit_collected_footnotek  rZ  z*TexinfoTranslator.visit_collected_footnotec                 C  r  )Nr   r   )rc   r   r   r4  r$   r$   r%   depart_collected_footnoteo  r  z+TexinfoTranslator.depart_collected_footnotec              
   C  sX   |   }z| jd | \}}W n ttfy# } ztj|d }~ww ||  tj)Nr   )	r   r   r   r+  r   r
   rG  rQ   SkipChildren)rJ   r   r)  footnodeusedexcr$   r$   r%   visit_footnote_references  s   
z*TexinfoTranslator.visit_footnote_referencec                 C  s:   | j d |dD ]}| || q|  jd7  _d S )Nr   r=  r   )rc   r   r   r.  r   )rJ   r   r   r$   r$   r%   visit_citation}  s   z TexinfoTranslator.visit_citationc                 C  r@  rA  r  r4  r$   r$   r%   depart_citation  rC  z!TexinfoTranslator.depart_citationc                 C  rR  r  r   r4  r$   r$   r%   visit_citation_reference  rU  z*TexinfoTranslator.visit_citation_referencec                 C  rR  r  r   r4  r$   r$   r%   depart_citation_reference  rU  z+TexinfoTranslator.depart_citation_referencec                 C  s    | dd}| jd|  d S )Nbullet*z

@itemize %s
r   rc   r   )rJ   r   r  r$   r$   r%   visit_bullet_list  s   z#TexinfoTranslator.visit_bullet_listc                 C  r{  )Nz@end itemize
r|  r4  r$   r$   r%   depart_bullet_list  r~  z$TexinfoTranslator.depart_bullet_listc                 C  s@   | dd}dddd}| d| |d}| jd|  d S )	Nenumtypearabicr?   aA)r  
loweralpha
upperalphastartz

@enumerate %s
r  )rJ   r   enumstartersr  r$   r$   r%   visit_enumerated_list  s   z'TexinfoTranslator.visit_enumerated_listc                 C  r{  )Nz@end enumerate
r|  r4  r$   r$   r%   depart_enumerated_list  r~  z(TexinfoTranslator.depart_enumerated_listc                 C  rR  )Nz
@item r   r4  r$   r$   r%   visit_list_item  rU  z!TexinfoTranslator.visit_list_itemc                 C  r:  r+   r$   r4  r$   r$   r%   depart_list_item  r<  z"TexinfoTranslator.depart_list_itemc                 C  rR  )Nz

@table @option
r   r4  r$   r$   r%   visit_option_list  rU  z#TexinfoTranslator.visit_option_listc                 C  r{  Nz@end table
r|  r4  r$   r$   r%   depart_option_list  r~  z$TexinfoTranslator.depart_option_listc                 C  r:  r+   r$   r4  r$   r$   r%   visit_option_list_item  r<  z(TexinfoTranslator.visit_option_list_itemc                 C  r:  r+   r$   r4  r$   r$   r%   depart_option_list_item  r<  z)TexinfoTranslator.depart_option_list_itemc                 C  
   d| _ d S Nz@item	at_item_xr4  r$   r$   r%   visit_option_group     
z$TexinfoTranslator.visit_option_groupc                 C  r:  r+   r$   r4  r$   r$   r%   depart_option_group  r<  z%TexinfoTranslator.depart_option_groupc                 C  s*   |  j d7  _ | jd| j  d| _d S )Nr   rF  @itemx)r   rc   r   r  r4  r$   r$   r%   visit_option  s   
zTexinfoTranslator.visit_optionc                 C  r@  rA  )r   r4  r$   r$   r%   depart_option  rC  zTexinfoTranslator.depart_optionc                 C  r:  r+   r$   r4  r$   r$   r%   visit_option_string  r<  z%TexinfoTranslator.visit_option_stringc                 C  r:  r+   r$   r4  r$   r$   r%   depart_option_string  r<  z&TexinfoTranslator.depart_option_stringc                 C  s   | j |dd d S )N	delimiterr1   )rc   r   r   r4  r$   r$   r%   visit_option_argument     z'TexinfoTranslator.visit_option_argumentc                 C  r:  r+   r$   r4  r$   r$   r%   depart_option_argument  r<  z(TexinfoTranslator.depart_option_argumentc                 C  rR  rw  r   r4  r$   r$   r%   visit_description  rU  z#TexinfoTranslator.visit_descriptionc                 C  r:  r+   r$   r4  r$   r$   r%   depart_description  r<  z$TexinfoTranslator.depart_descriptionc                 C  rR  )Nz

@table @asis
r   r4  r$   r$   r%   visit_definition_list  rU  z'TexinfoTranslator.visit_definition_listc                 C  r{  r  r|  r4  r$   r$   r%   depart_definition_list  r~  z(TexinfoTranslator.depart_definition_listc                 C  r  r  r  r4  r$   r$   r%   visit_definition_list_item  r  z,TexinfoTranslator.visit_definition_list_itemc                 C  r:  r+   r$   r4  r$   r$   r%   depart_definition_list_item  r<  z-TexinfoTranslator.depart_definition_list_itemc                 C  sp   | dD ]}| || q|d d  D ]}t|tjtjB r)||  || q| j	
d| j  d| _d S )Nr=  rF  r  )r   r.  r   r   r   r
   targetrQ   removerc   r   r  )rJ   r   r   r  r$   r$   r%   
visit_term  s   


zTexinfoTranslator.visit_termc                 C  r:  r+   r$   r4  r$   r$   r%   depart_term  r<  zTexinfoTranslator.depart_termc                 C  rR  )Nz : r   r4  r$   r$   r%   visit_classifier  rU  z"TexinfoTranslator.visit_classifierc                 C  r:  r+   r$   r4  r$   r$   r%   depart_classifier  r<  z#TexinfoTranslator.depart_classifierc                 C  rR  rw  r   r4  r$   r$   r%   visit_definition  rU  z"TexinfoTranslator.visit_definitionc                 C  r:  r+   r$   r4  r$   r$   r%   depart_definition  r<  z#TexinfoTranslator.depart_definitionc                 C  r  r  	entry_sepr4  r$   r$   r%   visit_table  r  zTexinfoTranslator.visit_tablec                 C  rR  )Nz
@end multitable

r   r4  r$   r$   r%   depart_table  rU  zTexinfoTranslator.depart_tablec                 C  r:  r+   r$   r4  r$   r$   r%   visit_tabular_col_spec  r<  z(TexinfoTranslator.visit_tabular_col_specc                 C  r:  r+   r$   r4  r$   r$   r%   depart_tabular_col_spec
  r<  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    qd S )Ncolwidthz

@multitable z{%s} r.   r   )r   r   r   n_colsrc   )rJ   r   r  r$   r$   r%   visit_colspec  s   
zTexinfoTranslator.visit_colspecc                 C  r:  r+   r$   r4  r$   r$   r%   depart_colspec  r<  z TexinfoTranslator.depart_colspecc                 C  s   g | _ |d | _d S )Ncols)r   r  r4  r$   r$   r%   visit_tgroup  s   zTexinfoTranslator.visit_tgroupc                 C  r:  r+   r$   r4  r$   r$   r%   depart_tgroup  r<  zTexinfoTranslator.depart_tgroupc                 C  r  )Nz	@headitemr  r4  r$   r$   r%   visit_thead  r  zTexinfoTranslator.visit_theadc                 C  r:  r+   r$   r4  r$   r$   r%   depart_thead"  r<  zTexinfoTranslator.depart_theadc                 C  r:  r+   r$   r4  r$   r$   r%   visit_tbody%  r<  zTexinfoTranslator.visit_tbodyc                 C  r:  r+   r$   r4  r$   r$   r%   depart_tbody(  r<  zTexinfoTranslator.depart_tbodyc                 C  r:  r+   r$   r4  r$   r$   r%   	visit_row+  r<  zTexinfoTranslator.visit_rowc                 C  r  r  r  r4  r$   r$   r%   
depart_row.  r  zTexinfoTranslator.depart_rowc                 C  s   | j d| j  d| _d S )Nz
%s
z@tab)rc   r   r  r4  r$   r$   r%   visit_entry1  s   
zTexinfoTranslator.visit_entryc                 C  s&   t |ddD ]}| jd qd S )Nmorecolsr   z
@tab
)ranger   rc   r   )rJ   r   _ir$   r$   r%   depart_entry5  s   zTexinfoTranslator.depart_entryc                 C  r:  r+   r$   r4  r$   r$   r%   visit_field_list;  r<  z"TexinfoTranslator.visit_field_listc                 C  r:  r+   r$   r4  r$   r$   r%   depart_field_list>  r<  z#TexinfoTranslator.depart_field_listc                 C  rR  rw  r   r4  r$   r$   r%   visit_fieldA  rU  zTexinfoTranslator.visit_fieldc                 C  rR  rw  r   r4  r$   r$   r%   depart_fieldD  rU  zTexinfoTranslator.depart_fieldc                 C  r{  )Nz@*r|  r4  r$   r$   r%   visit_field_nameG  r~  z"TexinfoTranslator.visit_field_namec                 C  rR  )Nr   r   r4  r$   r$   r%   depart_field_nameK  rU  z#TexinfoTranslator.depart_field_namec                 C  r:  r+   r$   r4  r$   r$   r%   visit_field_bodyN  r<  z"TexinfoTranslator.visit_field_bodyc                 C  r:  r+   r$   r4  r$   r$   r%   depart_field_bodyQ  r<  z#TexinfoTranslator.depart_field_bodyc                 C  s6   |st tj|d }| | }| jd|  d S )Nr   
@cartouche
@quotation %s )r	   r
   rm   r   r   rc   r   )rJ   r   r   rm   r$   r$   r%   visit_admonitionV  s   z"TexinfoTranslator.visit_admonitionc                 C  s   t |j }| jd|  d S )Nr  )r   tagnamerc   r   )rJ   r   r&  r$   r$   r%   _visit_named_admonition\  s   
z)TexinfoTranslator._visit_named_admonitionc                 C  r{  )Nz@end quotation
@end cartouche
r|  r4  r$   r$   r%   depart_admonition`  r~  z#TexinfoTranslator.depart_admonitionc                 C  r  r+   r  r4  r$   r$   r%   visit_docinfoy  r  zTexinfoTranslator.visit_docinfoc                 C  r  r+   r  r4  r$   r$   r%   visit_generated|  r  z!TexinfoTranslator.visit_generatedc                 C  r  r+   r  r4  r$   r$   r%   visit_header  r  zTexinfoTranslator.visit_headerc                 C  r  r+   r  r4  r$   r$   r%   visit_footer  r  zTexinfoTranslator.visit_footerc                 C     | dr| jd d S d S )Nliteral_blockz

@float LiteralBlock
r  r4  r$   r$   r%   visit_container     
z!TexinfoTranslator.visit_containerc                 C  r  )Nr  
@end float

r  r4  r$   r$   r%   depart_container  r  z"TexinfoTranslator.depart_containerc                 C  r:  r+   r$   r4  r$   r$   r%   visit_decoration  r<  z"TexinfoTranslator.visit_decorationc                 C  r:  r+   r$   r4  r$   r$   r%   depart_decoration  r<  z#TexinfoTranslator.depart_decorationc                 C  sX   d| dg v rtjttj|d }| | | jd| |	   | 
| d S )Ncontentsr  r   z%s
)r   r
   rG  r	   rm   rN  rc   r   r   r   rY  )rJ   r   rm   r$   r$   r%   visit_topic  s   
zTexinfoTranslator.visit_topicc                 C  r:  r+   r$   r4  r$   r$   r%   depart_topic  r<  zTexinfoTranslator.depart_topicc                 C  s   | j dd  d S )Nz

%s

B__________________________________________________________________r   r4  r$   r$   r%   visit_transition  s   z"TexinfoTranslator.visit_transitionc                 C  r:  r+   r$   r4  r$   r$   r%   depart_transition  r<  z#TexinfoTranslator.depart_transitionc                 C  rR  )Nz

@center --- r   r4  r$   r$   r%   visit_attribution  rU  z#TexinfoTranslator.visit_attributionc                 C  rR  rS  r   r4  r$   r$   r%   depart_attribution  rU  z$TexinfoTranslator.depart_attributionc                 C  s6   | dd }d|v sd|v r| j|  tj)Nr   r?   r<   r=   )r   r2   rc   r   r   r
   rG  )rJ   r   r   r$   r$   r%   	visit_raw  s   zTexinfoTranslator.visit_rawc                 C  rR  )Nz

@float Figure
r   r4  r$   r$   r%   visit_figure  rU  zTexinfoTranslator.visit_figurec                 C  rR  )Nr  r   r4  r$   r$   r%   depart_figure  rU  zTexinfoTranslator.depart_figurec                 C  sN   t |jtjst |jtjr|jdr| jd d S tj	t
d|d d S )Nr  z

@caption{zcaption not inside a figure.rD  )r   r   r
   figure	containerr   rc   r   rL  rM  r   r4  r$   r$   r%   visit_caption  s   
zTexinfoTranslator.visit_captionc                 C  s@   t |jtjst |jtjr|jdr| jd d S d S d S )Nr  }
)r   r   r
   r"  r#  r   rc   r   r4  r$   r$   r%   depart_caption  s   
z TexinfoTranslator.depart_captionc           	      C  s   |d | j jv r| j j|d  }n	| jrd S |d }|ddkr#d S t|\}}| |dd}| |dd}| |dd}| j	d d d	  d
| }| j
d| d| d| d| d|dd   d d S )Nrn  z://r   r   r?   heightaltrh   z	-figures/z
@image{r   r   r%  )rF   imagesignore_missing_imagesrl  r   splitextr  r   r   r   rc   r   )	rJ   r   rn  r   extr   r'  r(  rh   r$   r$   r%   visit_image  s   8zTexinfoTranslator.visit_imagec                 C  r:  r+   r$   r4  r$   r$   r%   depart_image  r<  zTexinfoTranslator.depart_imagec                 C  r:  r+   r$   r4  r$   r$   r%   visit_compound  r<  z TexinfoTranslator.visit_compoundc                 C  r:  r+   r$   r4  r$   r$   r%   depart_compound  r<  z!TexinfoTranslator.depart_compoundc                 C     |  | d S r+   )r  r4  r$   r$   r%   visit_sidebar     zTexinfoTranslator.visit_sidebarc                 C  r2  r+   )r  r4  r$   r$   r%   depart_sidebar  r4  z TexinfoTranslator.depart_sidebarc                 C  s   | j rtj| jd d S )Nz@w{()r   r
   rG  rc   r   r4  r$   r$   r%   visit_label  s   zTexinfoTranslator.visit_labelc                 C  rR  )Nz)} r   r4  r$   r$   r%   depart_label  rU  zTexinfoTranslator.depart_labelc                 C  r:  r+   r$   r4  r$   r$   r%   visit_legend  r<  zTexinfoTranslator.visit_legendc                 C  r:  r+   r$   r4  r$   r$   r%   depart_legend  r<  zTexinfoTranslator.depart_legendc                 C  r:  r+   r$   r4  r$   r$   r%   visit_substitution_reference  r<  z.TexinfoTranslator.visit_substitution_referencec                 C  r:  r+   r$   r4  r$   r$   r%   depart_substitution_reference  r<  z/TexinfoTranslator.depart_substitution_referencec                 C  r  r+   r  r4  r$   r$   r%   visit_substitution_definition  r  z/TexinfoTranslator.visit_substitution_definitionc                 C  s   | j d|   tj)Nz.
@verbatim
<SYSTEM MESSAGE: %s>
@end verbatim
)rc   r   r   r
   rG  r4  r$   r$   r%   visit_system_message  s   
z&TexinfoTranslator.visit_system_messagec                 C  s4   | j d |  D ]
}| j d|  qtj)Nr   z@c %s
)rc   r   r   
splitlinesr
   rG  )rJ   r   liner$   r$   r%   visit_comment  s   zTexinfoTranslator.visit_commentc                 C  rR  )Nz>>r   r4  r$   r$   r%   visit_problematic  rU  z#TexinfoTranslator.visit_problematicc                 C  rR  )Nz<<r   r4  r$   r$   r%   depart_problematic  rU  z$TexinfoTranslator.depart_problematicc                 C  s   t jtd||d d S )Nzunimplemented node type: %rrD  )rL  rM  r   r4  r$   r$   r%   unimplemented_visit  r  z%TexinfoTranslator.unimplemented_visitc                 C  r:  r+   r$   r4  r$   r$   r%   unknown_departure  r<  z#TexinfoTranslator.unknown_departurec                 C  s   |  d  tttj |}dd |D }tdd |D }|D ]:}|d r=|dD ]}| || q*|d |d }ndd|  }| j	
| | | j	
| | d	  q| d  tj)
Nc                 s  s    | ]}|d  V  qdS )	tokennameNr$   )r-   
productionr$   r$   r%   r/     r0   z9TexinfoTranslator.visit_productionlist.<locals>.<genexpr>c                 s  s    | ]}t |V  qd S r+   )r   )r-   r   r$   r$   r%   r/     r0   rE  r=  z ::=z%s    r1   r   )r  r	   r   r   rF  r   r   r.  ljustrc   r   r   r   r  r
   rG  )rJ   r   productionlistnamesmaxlenrF  r   r&   r$   r$   r%   visit_productionlist  s   

z&TexinfoTranslator.visit_productionlistc                 C  r:  r+   r$   r4  r$   r$   r%   visit_production-  r<  z"TexinfoTranslator.visit_productionc                 C  r:  r+   r$   r4  r$   r$   r%   depart_production0  r<  z#TexinfoTranslator.depart_productionc                 C  rR  Nr  r   r4  r$   r$   r%   visit_literal_emphasis3  rU  z(TexinfoTranslator.visit_literal_emphasisc                 C  rR  r  r   r4  r$   r$   r%   depart_literal_emphasis6  rU  z)TexinfoTranslator.depart_literal_emphasisc                 C  rR  rN  r   r4  r$   r$   r%   visit_literal_strong9  rU  z&TexinfoTranslator.visit_literal_strongc                 C  rR  r  r   r4  r$   r$   r%   depart_literal_strong<  rU  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
   	paragraphr   rc   r   r   )rJ   r   _entry_typevalue
_target_id_main_category_keyrt  r$   r$   r%   visit_index?  s   

zTexinfoTranslator.visit_indexc                 C  rR  rw  r   r4  r$   r$   r%   visit_versionmodifiedI  rU  z'TexinfoTranslator.visit_versionmodifiedc                 C  rR  rw  r   r4  r$   r$   r%   depart_versionmodifiedL  rU  z(TexinfoTranslator.depart_versionmodifiedc                 C  s2   | j d | j|d  | j| | d S )Nr3  r  )r   r   r   r   r   r*  r4  r$   r$   r%   visit_start_of_fileO  s   z%TexinfoTranslator.visit_start_of_filec                 C  r6  r+   )r   r   r   r4  r$   r$   r%   depart_start_of_fileU  r8  z&TexinfoTranslator.depart_start_of_filec                 C  s$   |  | }| jd|  tj)Nz

@center %s

)r   r   rc   r   r
   rG  rJ   r   txtr$   r$   r%   visit_centeredY  s   z TexinfoTranslator.visit_centeredc                 C  s   | j dtd   d S )Nz

@subsubheading %s

seealso)rc   r   r   r4  r$   r$   r%   visit_seealso^  r  zTexinfoTranslator.visit_seealsoc                 C  rR  rw  r   r4  r$   r$   r%   depart_seealsoa  rU  z TexinfoTranslator.depart_seealsoc                 C  r  r+   r  r4  r$   r$   r%   
visit_metad  r  zTexinfoTranslator.visit_metac                 C  r:  r+   r$   r4  r$   r$   r%   visit_glossaryg  r<  z TexinfoTranslator.visit_glossaryc                 C  r:  r+   r$   r4  r$   r$   r%   depart_glossaryj  r<  z!TexinfoTranslator.depart_glossaryc                 C  s^   t tj|d }t ttj |}| jd | jddd |D d  | jd tj)Nr   r   , c                 s  r*   r+   )r   )r-   r  r$   r$   r%   r/   q  r0   z/TexinfoTranslator.visit_acks.<locals>.<genexpr>r   )	r	   r
   bullet_listr   	list_itemrc   r   r6   rG  )rJ   r   rh  
list_itemsr$   r$   r%   
visit_acksm  s    zTexinfoTranslator.visit_acksaddnodes.descc                 C  s   | j | d| _d S )Nz@deffn)r}   r   	at_deffnxr4  r$   r$   r%   
visit_desc|     
zTexinfoTranslator.visit_descc                 C  s"   | j   |   | jd d S )Nz@end deffn
)r}   r   r   rc   r   r4  r$   r$   r%   depart_desc  s   
zTexinfoTranslator.depart_descc              	   C  s   |  j d7  _ |jd }|dkr|dD ]}| || qz| jj|jd }||j| | j	j
|jk}W n ttfyE   |}Y nw | t|}| jd| j d| d d	| _|| _d S )
Nr   objtypedescriber=  r  r   z {z} z@deffnx)r   r   r   r.  rF   r  
get_domainget_type_nameobject_typesr   primary_domainr   r+  r   r   r:   rc   r   rm  desc_type_name)rJ   r   rq  r   r  r   categoryr$   r$   r%   visit_desc_signature  s"   

z&TexinfoTranslator.visit_desc_signaturec                 C  s$   | j d |  jd8  _d | _d S )Nr   r   )rc   r   r   rw  r4  r$   r$   r%   depart_desc_signature  s   
z'TexinfoTranslator.depart_desc_signaturec                 C  r:  r+   r$   r4  r$   r$   r%   visit_desc_signature_line  r<  z+TexinfoTranslator.visit_desc_signature_linec                 C  r:  r+   r$   r4  r$   r$   r%   depart_desc_signature_line  r<  z,TexinfoTranslator.depart_desc_signature_linec                 C  r:  r+   r$   r4  r$   r$   r%   visit_desc_content  r<  z$TexinfoTranslator.visit_desc_contentc                 C  r:  r+   r$   r4  r$   r$   r%   depart_desc_content  r<  z%TexinfoTranslator.depart_desc_contentc                 C  r:  r+   r$   r4  r$   r$   r%   visit_desc_inline  r<  z#TexinfoTranslator.visit_desc_inlinec                 C  r:  r+   r$   r4  r$   r$   r%   depart_desc_inline  r<  z$TexinfoTranslator.depart_desc_inlinec                 C  r:  r+   r$   r4  r$   r$   r%   visit_desc_name  r<  z!TexinfoTranslator.visit_desc_namec                 C  r:  r+   r$   r4  r$   r$   r%   depart_desc_name  r<  z"TexinfoTranslator.depart_desc_namec                 C  r:  r+   r$   r4  r$   r$   r%   visit_desc_addname  r<  z$TexinfoTranslator.visit_desc_addnamec                 C  r:  r+   r$   r4  r$   r$   r%   depart_desc_addname  r<  z%TexinfoTranslator.depart_desc_addnamec                 C  r:  r+   r$   r4  r$   r$   r%   visit_desc_type  r<  z!TexinfoTranslator.visit_desc_typec                 C  r:  r+   r$   r4  r$   r$   r%   depart_desc_type  r<  z"TexinfoTranslator.depart_desc_typec                 C  rR  )Nz -> r   r4  r$   r$   r%   visit_desc_returns  rU  z$TexinfoTranslator.visit_desc_returnsc                 C  r:  r+   r$   r4  r$   r$   r%   depart_desc_returns  r<  z%TexinfoTranslator.depart_desc_returnsc                 C     | j d d| _d S )Nz (r   rc   r   first_paramr4  r$   r$   r%   visit_desc_parameterlist  ro  z*TexinfoTranslator.visit_desc_parameterlistc                 C  rR  )N)r   r4  r$   r$   r%   depart_desc_parameterlist  rU  z+TexinfoTranslator.depart_desc_parameterlistc                 C  r  )Nz [r   r  r4  r$   r$   r%   visit_desc_type_parameter_list  ro  z0TexinfoTranslator.visit_desc_type_parameter_listc                 C  rR  N]r   r4  r$   r$   r%   depart_desc_type_parameter_list  rU  z1TexinfoTranslator.depart_desc_type_parameter_listc                 C  sF   | j s
| jd nd| _ | | }|dd}| j| tj)Nrg  r       z@w{ })r  rc   r   r   r   r   r
   rG  rs  r$   r$   r%   visit_desc_parameter  s   z&TexinfoTranslator.visit_desc_parameterc                 C  r2  r+   )r  r4  r$   r$   r%   visit_desc_type_parameter  r4  z+TexinfoTranslator.visit_desc_type_parameterc                 C  rR  )N[r   r4  r$   r$   r%   visit_desc_optional  rU  z%TexinfoTranslator.visit_desc_optionalc                 C  rR  r  r   r4  r$   r$   r%   depart_desc_optional  rU  z&TexinfoTranslator.depart_desc_optionalc                 C  sF   |   }| jr|| jd d ks| jr|| j v r!tjd S d S )Nr   rq  )r   r   r}   rw  r2   r
   rG  r^  r$   r$   r%   visit_desc_annotation  s   z'TexinfoTranslator.visit_desc_annotationc                 C  r:  r+   r$   r4  r$   r$   r%   depart_desc_annotation  r<  z(TexinfoTranslator.depart_desc_annotationc                 C  r:  r+   r$   r4  r$   r$   r%   visit_inline  r<  zTexinfoTranslator.visit_inlinec                 C  r:  r+   r$   r4  r$   r$   r%   depart_inline  r<  zTexinfoTranslator.depart_inlinec                 C  sb   |  }| jd |dr)|| jvr)| jd| |d   | j| d S | jd d S )Nz@abbr{explanationz,%s}r   )r   rc   r   hasattrr   r|   r   r   )rJ   r   abbrr$   r$   r%   visit_abbreviation  s   z$TexinfoTranslator.visit_abbreviationc                 C  r  r+   r  r4  r$   r$   r%   depart_abbreviation  r  z%TexinfoTranslator.depart_abbreviationc                 C  
   |  |S r+   )rO  r4  r$   r$   r%   visit_manpage  r  zTexinfoTranslator.visit_manpagec                 C  r  r+   )rP  r4  r$   r$   r%   depart_manpage  r  z TexinfoTranslator.depart_manpagec                 C  r:  r+   r$   r4  r$   r$   r%   visit_download_reference  r<  z*TexinfoTranslator.visit_download_referencec                 C  r:  r+   r$   r4  r$   r$   r%   depart_download_reference  r<  z+TexinfoTranslator.depart_download_referencec                 C  r2  r+   )r  r4  r$   r$   r%   visit_hlist  r4  zTexinfoTranslator.visit_hlistc                 C  r2  r+   )r  r4  r$   r$   r%   depart_hlist  r4  zTexinfoTranslator.depart_hlistc                 C  r:  r+   r$   r4  r$   r$   r%   visit_hlistcol"  r<  z TexinfoTranslator.visit_hlistcolc                 C  r:  r+   r$   r4  r$   r$   r%   depart_hlistcol%  r<  z!TexinfoTranslator.depart_hlistcolc                 C  r:  r+   r$   r4  r$   r$   r%   visit_pending_xref(  r<  z$TexinfoTranslator.visit_pending_xrefc                 C  r:  r+   r$   r4  r$   r$   r%   depart_pending_xref+  r<  z%TexinfoTranslator.depart_pending_xrefc                 C  s$   | j d| |  d  tj)Nz@math{r   )rc   r   r   r   r
   rG  r4  r$   r$   r%   
visit_math.  s   zTexinfoTranslator.visit_mathc                 C  s>   | dr| |d | | jd| |  d tj)Nr&  z

@example
z
@end example

)r   r.  rc   r   r   r   r
   rG  r4  r$   r$   r%   visit_math_block2  s   
z"TexinfoTranslator.visit_math_block)rM   rn   rF   r   r   rG   rX   )r&   r'   r   r'   )r   r'   r   r'   r   r'   r   r'   )r   r   r   r   r   rG   )r   r'   r   rG   )r   r'   r   r'   )r   r   r   r  )r   r'   r   r'   )r   r'   r   r   r   rG   )r   r'   r   r'   r   r   r   rG   )r   r   r   rG   )r   r   r   rG   )r   r  r   rG   )r   r   r   r  )r?   )r   r   r   r'   r   rG   )r   r   r   rG   )r   rl  r   rG   (   rY   rZ   r[   r+  r_   r   rI   rR   ro   ry   rz   r{   r   r   r   r   r   r   r   compiler   r   r  rx   r*  r  r.  r2  r5  r7  r9  r;  r?  rB  rO  rW  rQ  rT  rN  rY  r[  r\  rb  rc  rq  rr  ru  rv  rx  ry  rz  r}  r  r  visit_doctest_block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  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
  visit_attentiondepart_attentionvisit_cautiondepart_cautionvisit_dangerdepart_dangervisit_errordepart_error
visit_hintdepart_hintvisit_importantdepart_important
visit_notedepart_note	visit_tip
depart_tipvisit_warningdepart_warningr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r$  r&  r.  r/  r0  r1  r3  r5  r6  r7  r8  r9  r:  r;  r<  r=  r@  rA  rB  rC  rD  rK  rL  rM  rO  rP  rQ  rR  rY  rZ  r[  r\  r]  r`  rb  rc  rd  re  rf  rk  rn  rp  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$   rK   r%   rO      s  
 "+"!
.	
?
		
	rO   )r   r   r   r   r+   )r&   r'   r(   r)   r   r'   )5r\   
__future__r   r   r   collections.abcr   r   osr   typingr   r   r   r	   docutilsr
   r   sphinxr   r   sphinx.errorsr   sphinx.localer   r   r   sphinx.utilr   sphinx.util.docutilsr   sphinx.util.i18nr   sphinx.writers.latexr   docutils.nodesr   r   r   sphinx.builders.texinfor   sphinx.domainsr   	getLoggerrY   rL  r   r   r!   r:   Writerr;   rO   r$   r$   r$   r%   <module>   s8    


+$