U
    [ªShð ã                   @   sê   d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
Z
ddlZddlmZmZ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mZmZmZmZ G d
d„ dejƒZG dd„ dejƒZG dd„ dej ƒZ!dS )z,common definitions for Docutils HTML writersé    N)Úunquote)Úurl2pathname)ÚfrontendÚ	languagesÚnodesÚutilsÚwriters)Ú length_or_percentage_or_unitless)ÚPIL)Ú
writer_aux)Úunichar2texÚpick_math_environmentÚ	math2htmlÚlatex2mathmlÚtex2mathml_externc                       s¬  e Zd ZdZddddgddifdd	gd
dejdœfddgddejdœfddgdejdœfddgddejdœfddgdddœfdd gd! ¡ d"d#d$œfd%d&gd'd(gd(d)d*d+œfd,d-gd.d/d0d1gd.d)d$œfd2d3gd4dejdœfd5d6gd7ddœfd8d9gd4dejdœfd:d;gd<ddœfd=d>gd?d@ifdAdBgd?dCifdDdEgdFdejdœfdGdHgdIddœfdJdKgdejdLœfffZdMdNiZ	dOZ
dPZdQZ‡ fdRdS„ZdTdU„ ZdVdW„ ZdXdY„ ZdZd[„ Z‡  ZS )\ÚWriter)ÚhtmlZxhtmlzHTML Writer OptionsNzFSpecify the template file (UTF-8 encoded). (default: writer dependent)z
--templateÚmetavarz<file>zhComma separated list of stylesheet URLs. Overrides previous --stylesheet and --stylesheet-path settings.z--stylesheetz<URL[,URL,...]>Ústylesheet_path)r   Ú	overridesÚ	validatorzçComma separated list of stylesheet paths. Relative paths are expanded if a matching file is found in the --stylesheet-dirs. With --link-stylesheet, the path is rewritten relative to the output HTML file. (default: writer dependent)z--stylesheet-pathz<file[,file,...]>Ú
stylesheetzžComma-separated list of directories where stylesheets are found. Used by --stylesheet-path when expanding relative path arguments. (default: writer dependent)z--stylesheet-dirsz<dir[,dir,...]>)r   r   zvEmbed the stylesheet(s) in the output HTML file.  The stylesheet files must be accessible during processing. (default)z--embed-stylesheeté   Ú
store_true)ÚdefaultÚactionr   z3Link to the stylesheet(s) in the output HTML file. z--link-stylesheetÚembed_stylesheetÚstore_false)Údestr   z}Specify the initial header level. Does not affect document title & subtitle (see --no-doc-title).(default: writer dependent).z--initial-header-levelz1 2 3 4 5 6Ú2z<level>)Úchoicesr   r   zYFormat for footnote references: one of "superscript" or "brackets". (default: "brackets")z--footnote-referencesZsuperscriptZbracketsz<format>Ztrim_footnote_reference_space)r    r   r   r   zyFormat for block quote attributions: one of "dash" (em-dash prefix), "parentheses"/"parens", or "none". (default: "dash")z--attributionÚdashÚparenthesesÚparensÚnonezgRemove extra vertical whitespace between items of "simple" bullet lists and enumerated lists. (default)z--compact-listsTz3Disable compact simple bullet and enumerated lists.z--no-compact-listsÚcompact_listszORemove extra vertical whitespace between items of simple field lists. (default)z--compact-field-listsz#Disable compact simple field lists.z--no-compact-field-listsÚcompact_field_listszAdded to standard table classes. Defined styles: borderless, booktabs, align-left, align-center, align-right, colwidths-auto, colwidths-grid.z--table-styler   Ú zmMath output format (one of "MathML", "HTML", "MathJax", or "LaTeX") and option(s). (default: "HTML math.css")z--math-outputzHTML math.csszPrepend an XML declaration. z--xml-declarationFzOmit the XML declaration.z--no-xml-declarationÚxml_declarationzyObfuscate email addresses to confuse harvesters while still keeping email links usable with standards-compliant browsers.z--cloak-email-addresses)r   r   Zoutput_encoding_error_handlerÚxmlcharrefreplacezhtml base writer)r   zhtml writers)Úhead_prefixÚheadr   Úbody_prefixÚbody_pre_docinfoÚdocinfoÚbodyÚbody_suffixÚtitleÚsubtitleÚheaderÚfooterÚmetaÚfragmentÚhtml_prologÚ	html_headÚ
html_titleÚhtml_subtitleÚ	html_bodyc                    s   t ƒ  ¡ tjg S ©N)ÚsuperÚget_transformsr   ZAdmonitions©Úself©Ú	__class__© úN/root/rtd-docs/venv/lib/python3.8/site-packages/docutils/writers/_html_base.pyr>   “   s    zWriter.get_transformsc                 C   sJ   |   | j¡ | _}| j |¡ | jD ]}t| |t||ƒƒ q$|  ¡ | _d S r<   )	Ztranslator_classÚdocumentÚvisitorZ	walkaboutÚvisitor_attributesÚsetattrÚgetattrÚapply_templateÚoutput)r@   rF   ÚattrrC   rC   rD   Ú	translate–   s
    
zWriter.translatec              	   C   s6   t | jjjdd}| ¡ }W 5 Q R X |  ¡ }|| S )Núutf-8©Úencoding)ÚopenrE   ÚsettingsÚtemplateÚreadÚinterpolation_dict)r@   ÚfprS   ÚsubsrC   rC   rD   rJ      s    zWriter.apply_templatec                 C   sJ   i }| j j}| jD ]}d t| |ƒ¡ d¡||< q|j|d< tj|d< |S )Nr'   Ú
rP   Úversion)	rE   rR   rG   ÚjoinrI   ÚrstripÚoutput_encodingÚdocutilsÚ__version__)r@   rW   rR   rL   rC   rC   rD   rU   £   s    


zWriter.interpolation_dictc                 C   s2   t j | ¡ | jD ]}d t| |ƒ¡| j|< qd S ©Nr'   )r   r   Úassemble_partsrG   rZ   rI   Úparts)r@   ÚpartrC   rC   rD   r`   ¬   s    
zWriter.assemble_parts)Ú__name__Ú
__module__Ú__qualname__Ú	supportedr   Zvalidate_comma_separated_listZvalidate_booleanÚsplitZsettings_specZsettings_defaultsZconfig_sectionZconfig_section_dependenciesrG   r>   rM   rJ   rU   r`   Ú__classcell__rC   rC   rA   rD   r   %   sØ   ýÿýÿúÿüÿýþÿüþý
 ÿüÿýþÿýþûüÿþþ
ý­ý]	r   c                
   @   s  e Zd ZdZdZeZdZdZdej	› dZ
ddd	œZd
ZdZdZdZe d¡Ze d¡ZdZedƒdedƒdedƒdedƒdedƒdiZdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Ze d%¡fd&d'„Zd¨d)d*„Zd©d-d.„Zdªd/d0„Zd«d2d3„Z d4d5„ Z!d6d7„ Z"d8d9„ Z#d:d;„ Z$d<d=„ Z%d>d?„ Z&d@dA„ Z'dBdC„ Z(dDdE„ Z)d¬dFdG„Z*dHdIdIdJdKœZ+dLdM„ Z,dNdO„ Z-dPdQ„ Z.dRdS„ Z/dTdU„ Z0dVdW„ Z1dXdY„ Z2dZd[„ Z3d\d]„ Z4d^d_„ Z5d`da„ Z6dbdc„ Z7ddde„ Z8dfdg„ Z9dhdi„ Z:djdk„ Z;dldm„ Z<dndo„ Z=dpdq„ Z>drds„ Z?dtdu„ Z@dvdw„ ZAe dx¡jBfdydz„ZCd{d|„ ZDd}d~„ ZEdd€„ ZFdd‚„ ZGdƒd„„ ZHd…d†„ ZId‡dˆ„ ZJd‰dŠ„ ZKd‹dŒ„ ZLddŽ„ ZMdd„ ZNd‘d’„ ZOd“d”„ ZPd•d–„ ZQd—d˜„ ZRd™dš„ ZSd›dœ„ ZTddž„ ZUdŸd „ ZVd¡d¢„ ZWd£d¤„ ZXd¥d¦„ ZYd­d¨d©„ZZdªd«„ Z[d¬d­„ Z\d®d¯„ Z]d°d±„ Z^d²d³„ Z_d´dµ„ Z`d¶d·„ Zad¸d¹„ Zbdºd»„ Zcd¼d½„ Zdd¾d¿„ ZedÀdÁ„ ZfdÂdÃ„ ZgdÄdÅ„ ZhdÆdÇ„ ZidÈdÉ„ ZjdÊdË„ ZkdÌdÍ„ ZldÎdÏ„ ZmdÐdÑ„ ZndÒdÓ„ ZodÔdÕ„ ZpdÖd×„ ZqdØdÙ„ ZrdÚdÛ„ ZsdÜdÝ„ ZtdÞdß„ Zudàdá„ Zvdâdã„ Zwdädå„ Zxdædç„ Zydèdé„ Zzdêdë„ Z{dìdí„ Z|dîdï„ Z}dðdñ„ Z~dòdó„ Zdôdõ„ Z€död÷„ Zdødù„ Z‚dúdû„ Zƒdüdý„ Z„dþdÿ„ Z…d d„ Z†dd„ Z‡dd„ Zˆdd„ Z‰dd	„ ZŠd
d„ Z‹dddddœZŒd®dd„Zdd„ ZŽdd„ Zdd„ Zdd„ Z‘dd„ Z’dd„ Z“d d!„ Z”d"d#„ Z•d$d%„ Z–d&d'„ Z—d(d)„ Z˜d*d+„ Z™d,d-„ Zšd.d/„ Z›d0d1„ Zœd2d3„ Zd4d5„ Zžd6d7„ ZŸd8d9„ Z d:d;„ Z¡d<d=„ Z¢d>d?„ Z£d@dA„ Z¤dBdC„ Z¥dDdE„ Z¦dFdG„ Z§dHdI„ Z¨dJdK„ Z©dLdM„ ZªdNdO„ Z«dPdQ„ Z¬dRdS„ Z­dTdU„ Z®dVdW„ Z¯dXdY„ Z°dZd[„ Z±d\d]„ Z²d^d_„ Z³d`da„ Z´dbdc„ Zµddde„ Z¶dfdg„ Z·dhdi„ Z¸djdk„ Z¹dldm„ Zºdndo„ Z»dpdq„ Z¼drds„ Z½dtdu„ Z¾dvdw„ Z¿dxdy„ ZÀdzd{„ ZÁd|d}„ ZÂd~d„ ZÃd€d„ ZÄd‚dƒ„ ZÅd„d…„ ZÆd†d‡„ ZÇdˆd‰„ ZÈdŠd‹„ ZÉdŒd„ ZÊdŽd„ ZËdd‘„ ZÌd’d“„ ZÍd”d•„ ZÎd–d—„ ZÏd˜d™„ ZÐdšd›„ ZÑdœd„ ZÒdždŸ„ ZÓd d¡„ ZÔd¢d£„ ZÕd¤d¥„ ZÖd¦d§„ Z×d(S (¯  ÚHTMLTranslatorai  
    Generic Docutils to HTML translator.

    See the `html4css1` and `html5_polyglot` writers for full featured
    HTML writers.

    .. IMPORTANT::
      The `visit_*` and `depart_*` methods use a
      heterogeneous stack, `self.context`.
      When subclassing, make sure to be consistent in its use!

      Examples for robust coding:

      a) Override both `visit_*` and `depart_*` methods, don't call the
         parent functions.

      b) Extend both and unconditionally call the parent functions::

           def visit_example(self, node):
               if foo:
                   self.body.append('<div class="foo">')
               html4css1.HTMLTranslator.visit_example(self, node)

           def depart_example(self, node):
               html4css1.HTMLTranslator.depart_example(self, node)
               if foo:
                   self.body.append('</div>')

      c) Extend both, calling the parent functions under the same
         conditions::

           def visit_example(self, node):
               if foo:
                   self.body.append('<div class="foo">
')
               else: # call the parent method
                   _html_base.HTMLTranslator.visit_example(self, node)

           def depart_example(self, node):
               if foo:
                   self.body.append('</div>
')
               else: # call the parent method
                   _html_base.HTMLTranslator.depart_example(self, node)

      d) Extend one method (call the parent), but don't otherwise use the
         `self.context` stack::

           def depart_example(self, node):
               _html_base.HTMLTranslator.depart_example(self, node)
               if foo:
                   # implementation-specific code
                   # that does not use `self.context`
                   self.body.append('</div>
')

      This way, changes in stack use will not bite you.
    z<!DOCTYPE html>
zW<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="%(lang)s" lang="%(lang)s">
<head>
z<meta charset="%s" />
z)<meta name="generator" content="Docutils z': https://docutils.sourceforge.io/" />
ÚdivrE   )ÚtagnameÚCLASSz2<script type="text/javascript" src="%s"></script>
z-file:/usr/share/javascript/mathjax/MathJax.jsz4<link rel="stylesheet" href="%s" type="text/css" />
z%<style type="text/css">

%s
</style>
z[^ \n]+| +|\nz.+\W\W.+|[-?].+Úlangú&z&amp;ú<z&lt;ú"z&quot;ú>z&gt;ú@ú&#64;c                    s  t j ˆ |¡ |j ˆ _}t |j|j¡ˆ _t	|j
ƒˆ _
t|dd ƒˆ _t|dd ƒdkrvtjdtdd ˆ jd krvdˆ _t|dd ƒdkr–tjd	tdd ˆ jd kr¦d
ˆ _|j ¡ ˆ _ˆ jdd … ˆ _ˆ jd  ¡ ˆ _g ˆ _dgˆ _g ˆ _dgˆ _g ˆ _g ˆ _g ˆ _g ˆ _g ˆ _g ˆ _g ˆ _ˆ jgˆ _ g ˆ _!g ˆ _"g ˆ _#ˆ j$gˆ _%‡ fdd„t& '|¡D ƒˆ _(g ˆ _)g ˆ _*|j+r’ˆ j ,t& +|j-¡¡ ˆ j! ,t& +d¡¡ |j-rÀ|j- ¡ dkrÀˆ j% .dˆ j|j- ¡ g ˆ _/dˆ _0g ˆ _1dˆ _2dˆ _3dˆ _4dˆ _5dˆ _6dˆ _7dˆ _8dˆ _9g ˆ _:d S )NÚimage_loadingZembed_imagesTzeThe configuration setting "embed_images" will be removed in Docutils 2.0. Use "image_loading: embed".é   )Ú
stacklevelÚembedFzdThe configuration setting "embed_images" will be removed in Docutils 2.0. Use "image_loading: link".Úlinkr   r   z</head>
<body>
z</body>
</html>
c                    s   g | ]}ˆ   |¡‘qS rC   )Ústylesheet_call)Ú.0Úpathr?   rC   rD   Ú
<listcomp>G  s   ÿz+HTMLTranslator.__init__.<locals>.<listcomp>z%sÚunicode);r   ÚNodeVisitorÚ__init__rR   r   Zget_languageÚlanguage_codeÚreporterÚlanguageÚintÚinitial_header_levelrI   rt   ÚwarningsÚwarnÚFutureWarningÚmath_outputrg   Úmath_output_optionsÚlowerr/   r,   r-   r0   r.   r4   r6   r+   r*   r3   r;   Úcontent_typer8   r7   r:   r9   Ú	generatorr5   r   Zget_stylesheet_listr   r1   r2   r(   Úappendr\   ÚinsertÚcontextÚsection_levelÚcolspecsÚ	compact_pÚcompact_simpleZcompact_field_listZ
in_docinfoÚ
in_sidebarÚin_document_titleÚ	in_mailtoZauthor_in_authorsÚmath_header)r@   rE   rR   rC   r?   rD   r     sŠ     ÿ ý
 ý



ÿ
ÿÿÿzHTMLTranslator.__init__c                 C   s6   d  | j| j | j | j | j | j | j | j ¡S r_   )	rZ   r*   r+   r   r,   r-   r.   r/   r0   r?   rC   rC   rD   Úastexth  s    ÿÿþþýýzHTMLTranslator.astextc                 C   s   t |ƒ}| | j¡S )z-Encode special characters in `text` & return.)ÚstrrM   Úspecial_characters)r@   ÚtextrC   rC   rD   Úencoden  s    zHTMLTranslator.encodec                 C   s   |  dd¡S )z*Try to hide a mailto: URL from harvesters.rr   ú%40©Úreplace)r@   ÚurirC   rC   rD   Úcloak_mailtov  s    zHTMLTranslator.cloak_mailtoc                 C   s   |  dd¡}|  dd¡S )z;Try to hide the link text of a email link from harversters.rs   z<span>&#64;</span>Ú.z<span>&#46;</span>rž   )r@   ÚaddrrC   rC   rD   Úcloak_email}  s    zHTMLTranslator.cloak_emailz[
	]c                 C   s<   |   | d|¡¡}| jr8| jjr8| dd¡}| dd¡}|S )z6Cleanse, HTML encode, and return attribute value text.ú r   z&#37;&#52;&#48;r¢   z&#46;)rœ   Úsubr–   rR   Úcloak_email_addressesrŸ   )r@   r›   Ú
whitespaceÚencodedrC   rC   rD   Úattval„  s
    zHTMLTranslator.attvalNc              
   C   sÄ   |dkrt | jjƒ}| jjr z$t|dd}| ¡ }W 5 Q R X W nF tk
r† } z(d|› }| jj 	|¡ d|  W Y ¢S d}~X Y nX | jj
 |¡ | j| S |r´t | jj|¡}| j|  |¡ S )z8Return code to reference or embed stylesheet file `path`NrN   rO   zCannot embed stylesheet: z<--- %s --->
)ÚboolrR   r   r   rQ   rT   ÚOSErrorrE   r   ÚerrorÚrecord_dependenciesÚaddÚembedded_stylesheetr   Úrelative_pathZ_destinationÚstylesheet_linkrœ   )r@   r{   Úadjust_pathÚfÚcontentÚerrÚmsgrC   rC   rD   ry   Ž  s    

zHTMLTranslator.stylesheet_callrX   Fc              
      s&  |  ¡ }g }i }| ¡ D ]\}}	|	||  ¡ < q| dg ¡}
g }| dg ¡| dd¡ ¡  D ]<}| d¡r|| |dd… ¡ qZ| ¡ rZ||
krZ|
 |¡ qZ|rª|d || j< d‰ t	|t
jƒrÌ‡ fd	d
„|
D ƒ}
|
rÞd |
¡|d< d|ksêt‚| dg ¡}| | dg ¡¡ |rh|d |d< |dd… D ]@}|sHt	|t
jt
jt
jfƒrX| d| ¡ n|d| 7 }q&t| ¡ ƒ}|g}|D ]v\}}	|	dk	s”t‚t	|	tƒrÒdd
„ |	D ƒ}| d|  ¡ |  d |¡¡f ¡ n | d|  ¡ |  t|	ƒ¡f ¡ q~|rd}nd}d |¡dd |¡|f  | S )z‘
        Construct and return a start tag given a node (id & class attributes
        are extracted), tag name, and optional attributes.
        ÚclassesÚclassr'   z	language-é	   Nr   )úcolwidths-autoúcolwidths-givenúcolwidths-gridc                    s   g | ]}|ˆ kr|‘qS rC   rC   )rz   Úcls©ZinternalrC   rD   r|   »  s      z+HTMLTranslator.starttag.<locals>.<listcomp>r¥   ÚidÚidsr   z<span id="%s"></span>c                 S   s   g | ]}t |ƒ‘qS rC   )r™   )rz   ÚvrC   rC   rD   r|   Ù  s     z%s="%s"z /z<%s%s>)rŠ   ÚitemsÚpopÚgetrg   Ú
startswithr   ÚstripÚlang_attributeÚ
isinstancer   ÚtablerZ   ÚAssertionErrorÚextendZ
Sequentialr.   ÚsortedÚlistrª   r™   )r@   Únoderk   ÚsuffixÚemptyÚ
attributesÚprefixÚattsÚnameÚvaluer¸   r   r¾   rÁ   rÀ   Úattlistra   ÚvaluesZinfixrC   r¿   rD   Ústarttag£  s^     
þÿ
ÿzHTMLTranslator.starttagc                 K   s   | j |||fddi|—ŽS )z1Construct and return an XML-compatible empty tag.rÑ   T)rÙ   )r@   rÏ   rk   rÐ   rÒ   rC   rC   rD   Úemptytagå  s    zHTMLTranslator.emptytagr   c                 C   sD   dd„ |D ƒ}z|| }W n t k
r0   Y dS X |d  |¡ dS )zŠ
        Set class `class_` on the visible child no. index of `node`.
        Do nothing if node has fewer children than `index`.
        c                 S   s   g | ]}t |tjƒs|‘qS rC   ©rÉ   r   Z	Invisible)rz   ÚnrC   rC   rD   r|   î  s      z5HTMLTranslator.set_class_on_child.<locals>.<listcomp>Nr¸   )Ú
IndexErrorr   )r@   rÏ   Úclass_ÚindexÚchildrenÚchildrC   rC   rD   Úset_class_on_childé  s    z!HTMLTranslator.set_class_on_childc                 C   s:   |  ¡ }|  |¡}| jr*| jjr*|  |¡}| j |¡ d S r<   )r˜   rœ   r–   rR   r§   r¤   r/   r   )r@   rÏ   r›   r©   rC   rC   rD   Ú
visit_Textõ  s
    

zHTMLTranslator.visit_Textc                 C   s   d S r<   rC   ©r@   rÏ   rC   rC   rD   Údepart_Textü  s    zHTMLTranslator.depart_Textc                 C   s   | j  |  |dd¡¡ d S )NZabbrr'   ©r/   r   rÙ   rä   rC   rC   rD   Úvisit_abbreviationÿ  s    z!HTMLTranslator.visit_abbreviationc                 C   s   | j  d¡ d S )Nz</abbr>©r/   r   rä   rC   rC   rD   Údepart_abbreviation  s    z"HTMLTranslator.depart_abbreviationc                 C   s   | j  |  |dd¡¡ d S )NZacronymr'   ræ   rä   rC   rC   rD   Úvisit_acronym  s    zHTMLTranslator.visit_acronymc                 C   s   | j  d¡ d S )Nz
</acronym>rè   rä   rC   rC   rD   Údepart_acronym
  s    zHTMLTranslator.depart_acronymc                 C   s.   | j |ddd | j | j|dddd¡ d S )NÚaddressF©r5   Úprer'   ©rÐ   rl   )Úvisit_docinfo_itemr/   r   rÙ   rä   rC   rC   rD   Úvisit_address  s
     ÿzHTMLTranslator.visit_addressc                 C   s   | j  d¡ |  ¡  d S ©Nú
</pre>
)r/   r   Údepart_docinfo_itemrä   rC   rC   rD   Údepart_address  s    zHTMLTranslator.depart_addressc                 C   s   | j  | j|ddgd¡ d S )NÚasideZ
admonition©r¸   ræ   rä   rC   rC   rD   Úvisit_admonition  s    zHTMLTranslator.visit_admonitionc                 C   s   | j  d¡ d S ©Nú	</aside>
rè   rä   rC   rC   rD   Údepart_admonition  s    z HTMLTranslator.depart_admonition)u   â€”r'   )ú(ú))r'   r'   )r!   r"   r#   r$   c                 C   s<   | j | jj \}}| j |¡ | j | j|d|dd¡ d S )NÚpÚattribution©rl   )Úattribution_formatsrR   rÿ   r   r   r/   rÙ   )r@   rÏ   rÓ   rÐ   rC   rC   rD   Úvisit_attribution!  s
    ÿz HTMLTranslator.visit_attributionc                 C   s   | j  | j ¡ d ¡ d S ©Nú</p>
©r/   r   r   rÄ   rä   rC   rC   rD   Údepart_attribution'  s    z!HTMLTranslator.depart_attributionc                 C   s*   t |jtjƒs|  |d¡ | j d¡ d S )NÚauthorz<p>)rÉ   Úparentr   Úauthorsrð   r/   r   rä   rC   rC   rD   Úvisit_author*  s    zHTMLTranslator.visit_authorc                 C   s4   | j  d¡ t|jtjƒr(| j  d¡ n|  ¡  d S )Nú</p>rX   )r/   r   rÉ   r  r   r	  rô   rä   rC   rC   rD   Údepart_author/  s    zHTMLTranslator.depart_authorc                 C   s   |   |d¡ d S )Nr	  ©rð   rä   rC   rC   rD   Úvisit_authors6  s    zHTMLTranslator.visit_authorsc                 C   s   |   ¡  d S r<   ©rô   rä   rC   rC   rD   Údepart_authors9  s    zHTMLTranslator.depart_authorsc                 C   s   | j  |  |d¡¡ d S )NZ
blockquoteræ   rä   rC   rC   rD   Úvisit_block_quote<  s    z HTMLTranslator.visit_block_quotec                 C   s   | j  d¡ d S )Nz</blockquote>
rè   rä   rC   rC   rD   Údepart_block_quote?  s    z!HTMLTranslator.depart_block_quotec                 C   s:   t | jƒ}z| |¡ W n tjk
r0   Y dS X dS dS )z7Check for a simple list that can be rendered compactly.FTN)ÚSimpleListCheckerrE   Úwalkr   Ú	NodeFound)r@   rÏ   rF   rC   rC   rD   Úcheck_simple_listB  s    
z HTMLTranslator.check_simple_listc                 C   sx   d|d krdS d|d kr dS t |tjtjfƒr>| jjs>dS t |tjtjfƒr\| jjs\dS d|j	d krndS |  
|¡S )NÚcompactr¸   TrQ   FÚcontents)rÉ   r   Ú
field_listZdefinition_listrR   r&   Úenumerated_listÚbullet_listr%   r  r  rä   rC   rC   rD   Úis_compactableS  s    ÿÿzHTMLTranslator.is_compactablec                 C   s^   i }| j }| j | j | jf¡ d | _|  |¡| _ | j rB|sBd|d< | j | j|df|Ž¡ d S )NÚsimpler¹   Zul)r“   r   r   r’   r  r/   rÙ   )r@   rÏ   rÔ   Zold_compact_simplerC   rC   rD   Úvisit_bullet_listf  s    
z HTMLTranslator.visit_bullet_listc                 C   s"   | j  ¡ \| _| _| j d¡ d S )Nz</ul>
)r   rÄ   r“   r’   r/   r   rä   rC   rC   rD   Údepart_bullet_listp  s    z!HTMLTranslator.depart_bullet_listc                 C   s   | j  | j|dddd¡ d S )Nrþ   r'   Úcaptionr   ræ   rä   rC   rC   rD   Úvisit_captiont  s    zHTMLTranslator.visit_captionc                 C   s   | j  d¡ d S r  rè   rä   rC   rC   rD   Údepart_captionw  s    zHTMLTranslator.depart_captionc                 C   s@   t | ¡ t|ƒƒs| j d¡ | j | j|d|jgdd¡ d S )Nz(<div role="list" class="citation-list">
rj   zdoc-biblioentry©r¸   Úrole)rÉ   Úprevious_siblingÚtyper/   r   rÙ   rk   rä   rC   rC   rD   Úvisit_citation{  s
    ÿzHTMLTranslator.visit_citationc                 C   s4   | j  d¡ t|jdddt|ƒƒs0| j  d¡ d S )Nú</div>
FT©ZdescendZsiblings©r/   r   rÉ   Ú	next_noder&  rä   rC   rC   rD   Údepart_citation„  s
    ÿzHTMLTranslator.depart_citationc              
   C   sZ   d}d|kr||d 7 }nd|kr6|| j j|d  7 }| j | j|dd|dgdd¡ d S )	Nú#ÚrefidÚrefnameÚaú[zcitation-referencezdoc-biblioref)rÐ   Úhrefr¸   r$  )rE   Znameidsr/   r   rÙ   )r@   rÏ   r2  rC   rC   rD   Úvisit_citation_reference‹  s    þz'HTMLTranslator.visit_citation_referencec                 C   s   | j  d¡ d S )Nz]</a>rè   rä   rC   rC   rD   Údepart_citation_reference—  s    z(HTMLTranslator.depart_citation_referencec                 C   s   | j  | j|dddd¡ d S )NÚspanr'   Ú
classifierr   ræ   rä   rC   rC   rD   Úvisit_classifierž  s    zHTMLTranslator.visit_classifierc                 C   s   | j  d¡ d S ©Nú</span>rè   rä   rC   rC   rD   Údepart_classifier¡  s    z HTMLTranslator.depart_classifierc                 C   s&   | j  |¡ |jj |j d¡¡ d S )NÚstub)r‘   r   r  ÚstubsrÒ   rÅ   rä   rC   rC   rD   Úvisit_colspec¤  s    zHTMLTranslator.visit_colspecc              	   C   sº   t |jdddtjƒrd S d|jjd ksFd| jjkrJd|jjd krJd S | j |  	|d¡¡ t
d	d
„ | jD ƒƒ}| jD ]0}|d | }| j | j|dd|d›d¡ qx| j d¡ d S )NFTr)  r»   r¸   r½   r¼   Zcolgroupc                 s   s   | ]}|d  V  qdS )ÚcolwidthNrC   )rz   rÏ   rC   rC   rD   Ú	<genexpr>³  s     z0HTMLTranslator.depart_colspec.<locals>.<genexpr>r>  Úcolzwidth: z.1%)Ústylez</colgroup>
)rÉ   r+  r   Zcolspecr  rR   Útable_styler/   r   rÙ   Úsumr‘   rÚ   )r@   rÏ   Útotal_widthr>  rC   rC   rD   Údepart_colspec©  s$    ÿ
ÿþ

ÿ
zHTMLTranslator.depart_colspecz-(?=-)c                 C   s$   | j  d|d| ¡ ƒ ¡ tj‚dS )z%Escape double-dashes in comment text.z<!-- %s -->
z- N)r/   r   r˜   r   ÚSkipNode)r@   rÏ   r¦   rC   rC   rD   Úvisit_commentº  s    zHTMLTranslator.visit_commentc                 C   s   | j  | j|ddd¡ d S )Nrj   Zcompoundr   ræ   rä   rC   rC   rD   Úvisit_compoundÁ  s    zHTMLTranslator.visit_compoundc                 C   s   | j  d¡ d S ©Nr(  rè   rä   rC   rC   rD   Údepart_compoundÄ  s    zHTMLTranslator.depart_compoundc                 C   s   | j  | j|ddd¡ d S )Nrj   zdocutils containerr   ræ   rä   rC   rC   rD   Úvisit_containerÇ  s    ÿzHTMLTranslator.visit_containerc                 C   s   | j  d¡ d S rI  rè   rä   rC   rC   rD   Údepart_containerË  s    zHTMLTranslator.depart_containerc                 C   s   | j |ddd d S )NÚcontactFrí   r  rä   rC   rC   rD   Úvisit_contactÎ  s    zHTMLTranslator.visit_contactc                 C   s   |   ¡  d S r<   r  rä   rC   rC   rD   Údepart_contactÑ  s    zHTMLTranslator.depart_contactc                 C   s   |   |d¡ d S )NÚ	copyrightr  rä   rC   rC   rD   Úvisit_copyrightÔ  s    zHTMLTranslator.visit_copyrightc                 C   s   |   ¡  d S r<   r  rä   rC   rC   rD   Údepart_copyright×  s    zHTMLTranslator.depart_copyrightc                 C   s   |   |d¡ d S )NÚdater  rä   rC   rC   rD   Ú
visit_dateÚ  s    zHTMLTranslator.visit_datec                 C   s   |   ¡  d S r<   r  rä   rC   rC   rD   Údepart_dateÝ  s    zHTMLTranslator.depart_datec                 C   s   d S r<   rC   rä   rC   rC   rD   Úvisit_decorationà  s    zHTMLTranslator.visit_decorationc                 C   s   d S r<   rC   rä   rC   rC   rD   Údepart_decorationã  s    z HTMLTranslator.depart_decorationc                 C   sD   d|j j d kr| j d¡ n"| j d¡ | j |  |dd¡¡ d S )NÚdetailsr¸   z</summary>
z</dt>
Úddr'   ©r  r/   r   rÙ   rä   rC   rC   rD   Úvisit_definitionæ  s    zHTMLTranslator.visit_definitionc                 C   s    d|j j d kr| j d¡ d S )NrX  r¸   ú</dd>
©r  r/   r   rä   rC   rC   rD   Údepart_definitioní  s    z HTMLTranslator.depart_definitionc                 C   sR   d|d kr"| j  |  |d¡¡ n,|  |¡r2dgng }| j  | j|d|d¡ d S )NrX  r¸   rj   r  Údlr÷   )r/   r   rÙ   r  ©r@   rÏ   r¸   rC   rC   rD   Úvisit_definition_listñ  s    z$HTMLTranslator.visit_definition_listc                 C   s*   d|d kr| j  d¡ n| j  d¡ d S )NrX  r¸   r(  ú</dl>
rè   rä   rC   rC   rD   Údepart_definition_listø  s    z%HTMLTranslator.depart_definition_listc                 C   sD   d|j d kr@i }d|j d kr(d|d< | j | j|df|Ž¡ d S )NrX  r¸   rQ   rZ  ©r@   rÏ   rÔ   rC   rC   rD   Úvisit_definition_list_itemÿ  s
    z)HTMLTranslator.visit_definition_list_itemc                 C   s   d|j d kr| j d¡ d S )NrX  r¸   z</details>
r]  rä   rC   rC   rD   Údepart_definition_list_item  s    z*HTMLTranslator.depart_definition_list_itemc                 C   s   | j  |  |dd¡¡ d S )NrY  r'   ræ   rä   rC   rC   rD   Úvisit_description
  s    z HTMLTranslator.visit_descriptionc                 C   s   | j  d¡ d S ©Nr\  rè   rä   rC   rC   rD   Údepart_description  s    z!HTMLTranslator.depart_descriptionc                 C   sH   | j  t| jƒ¡ dg}|  |¡r,| d¡ | j | j|d|d¡ d S )Nr.   r  r_  r÷   )r   r   Úlenr/   r  rÙ   r`  rC   rC   rD   Úvisit_docinfo  s
    

zHTMLTranslator.visit_docinfoc                 C   s0   | j  d¡ | j ¡ }| j |d … | _g | _ d S ©Nrb  )r/   r   r   rÄ   r.   )r@   rÏ   ÚstartrC   rC   rD   Údepart_docinfo  s    
zHTMLTranslator.depart_docinfoTc              	   C   sh   |r(| j  d|› d|  | ¡ ¡› d¡ | j d|› d| jj| › d¡ | j | j|dd|d	¡ d S )
Nz<meta name="z" content="z" />
z<dt class="z">ú"<span class="colon">:</span></dt>
rY  r'   r   )r5   r   rª   r˜   r/   r‚   ÚlabelsrÙ   )r@   rÏ   rÕ   r5   rC   rC   rD   rð     s    $"z!HTMLTranslator.visit_docinfo_itemc                 C   s   | j  d¡ d S rh  rè   r?   rC   rC   rD   rô   %  s    z"HTMLTranslator.depart_docinfo_itemc              	   C   s$   | j  | j|dddddgd¡ d S )Nrî   r'   ÚcodeÚpythonÚdoctest)rÐ   r¸   ræ   rä   rC   rC   rD   Úvisit_doctest_block(  s    ÿz"HTMLTranslator.visit_doctest_blockc                 C   s   | j  d¡ d S rò   rè   rä   rC   rC   rD   Údepart_doctest_block,  s    z#HTMLTranslator.depart_doctest_blockc                 C   s<   |  d¡ptj |d ¡pd}| j d|  |¡› d¡ d S )Nr1   Úsourcezuntitled Docutils documentz<title>z	</title>
)rÅ   Úosr{   Úbasenamer+   r   rœ   )r@   rÏ   r1   rC   rC   rD   Úvisit_document/  s    ÿzHTMLTranslator.visit_documentc                 C   s<  | j  | j| jd| jji g¡ | j | j¡ | jd d … | j	 | _	dd 
| j¡kr`| j	 d¡ | jrŽ| jdkr€| j	 | j¡ n| j | j¡ | j | j	dd … ¡ | j | j|f| jŽ¡ | j dd| jd	 › d
¡ | j | j¡ | j | jdd … | j | j | j | jd d…  ¡ | jr8tdt| jƒ› ƒ‚d S )Nrm   zname="dcterms.r'   z=<link rel="schema.dcterms" href="http://purl.org/dc/terms/"/>Úmathjaxr   r   z</rk   z>
éÿÿÿÿzlen(context) = )r*   rÌ   ÚdoctypeÚhead_prefix_templaterR   r€   r7   r   r5   r+   rZ   r—   rˆ   r   r8   r,   rÙ   Údocumenttag_argsr0   rŽ   r6   r/   r;   r-   r.   r   rË   rj  rä   rC   rC   rD   Údepart_document4  s2    

ÿÿ
ÿÿþzHTMLTranslator.depart_documentc                 C   s   | j  |  |dd¡¡ d S )NZemr'   ræ   rä   rC   rC   rD   Úvisit_emphasisL  s    zHTMLTranslator.visit_emphasisc                 C   s   | j  d¡ d S )Nz</em>rè   rä   rC   rC   rD   Údepart_emphasisO  s    zHTMLTranslator.depart_emphasisc                 C   sà   dg i}t |jjtjƒr&|d  d¡ |jjjj|jj rH|d  d¡ |d rVd}nd}|j jd7  _d|kr‚|d d |d< d	|kr®|d	 d |d
< |j j|d	 7  _| j | j||df|Ž¡ | j	 d| 
¡  ¡ d S )Nr¸   r+   r;  ÚthÚtdr   ZmorerowsZrowspanZmorecolsZcolspanr'   ú</%s>
)rÉ   r  r   Útheadr   r<  Úcolumnr/   rÙ   r   rŠ   )r@   rÏ   rÔ   rk   rC   rC   rD   Úvisit_entryR  s     zHTMLTranslator.visit_entryc                 C   s   | j  | j ¡ ¡ d S r<   r  rä   rC   rC   rD   Údepart_entryf  s    zHTMLTranslator.depart_entryc                 C   sj   dg i}d|kr|d |d< d|kr6|d   |d ¡ |  |¡rN|d   d¡ | j  | j|df|Ž¡ d S )Nr¸   rm  Zenumtyper  Úol)r   r  r/   rÙ   rd  rC   rC   rD   Úvisit_enumerated_listi  s    
z$HTMLTranslator.visit_enumerated_listc                 C   s   | j  d¡ d S )Nz</ol>
rè   rä   rC   rC   rD   Údepart_enumerated_lists  s    z%HTMLTranslator.depart_enumerated_listc              	   C   s²   i }|  dg ¡}t|ƒD ]^\}}| d¡rzt|dd … dƒ}W n tk
rZ   Y  qxY nX d| |d< | |¡  qxq| d¡ |  |¡r–| d¡ | j | j	|d	f|Ž¡ d S )
Nr¸   zfield-indent-é   Úpxz--field-indent: %s;rA  z
field-listr  r_  )
Ú
setdefaultÚ	enumeraterÆ   r	   Ú
ValueErrorrÄ   r   r  r/   rÙ   )r@   rÏ   rÔ   r¸   Úir¾   Zindent_lengthrC   rC   rD   Úvisit_field_listv  s$    

 ÿ



zHTMLTranslator.visit_field_listc                 C   s   | j  d¡ d S rl  rè   rä   rC   rC   rD   Údepart_field_listˆ  s    z HTMLTranslator.depart_field_listc                 C   s   d S r<   rC   rä   rC   rC   rD   Úvisit_field‹  s    zHTMLTranslator.visit_fieldc                 C   s   d S r<   rC   rä   rC   rC   rD   Údepart_fieldŽ  s    zHTMLTranslator.depart_fieldc                 C   s$   | j  | j|dd|jd d¡ d S )NÚdtr'   r¸   r÷   )r/   r   rÙ   r  rä   rC   rC   rD   Úvisit_field_name’  s    ÿzHTMLTranslator.visit_field_namec                 C   s   | j  d¡ d S )Nro  rè   rä   rC   rC   rD   Údepart_field_name–  s    z HTMLTranslator.depart_field_namec                 C   s6   | j  | j|dd|jd d¡ |js2| j  d¡ d S )NrY  r'   r¸   r÷   z<p></p>)r/   r   rÙ   r  rà   rä   rC   rC   rD   Úvisit_field_body™  s
    ÿzHTMLTranslator.visit_field_bodyc                 C   s   | j  d¡ d S rh  rè   rä   rC   rC   rD   Údepart_field_body   s    z HTMLTranslator.depart_field_bodyc                 C   s`   ddi}|  d¡r"d|d  |d< |  d¡rD|d  d|d  7  < | j | j|df|Ž¡ d S )	Nr¹   ZfigureÚwidthz	width: %srA  Úalignz align-rj   )rÅ   r/   r   rÙ   rd  rC   rC   rD   Úvisit_figure£  s    

zHTMLTranslator.visit_figurec                 C   s   | j  d¡ d S rI  rè   rä   rC   rC   rD   Údepart_figure«  s    zHTMLTranslator.depart_figurec                 C   s   | j  t| jƒ¡ d S r<   ©r   r   rj  r/   rä   rC   rC   rD   Úvisit_footer®  s    zHTMLTranslator.visit_footerc                 C   sf   | j  ¡ }| j|ddddg}| | j|d … ¡ | d¡ | j |¡ || jd d…< | j|d …= d S )Nrj   r4   r   z<hr class="footer" />
z
</div>
r   )r   rÄ   rÙ   rÌ   r/   r   r4   r0   )r@   rÏ   rm  r4   rC   rC   rD   Údepart_footer±  s    
ÿ
zHTMLTranslator.depart_footerc                 C   sR   | j j}t| ¡ t|ƒƒs.| j d|› d¡ | j | j|d|j|gdd¡ d S )Nz<aside class="footnote-list z">
rö   zdoc-footnoter#  )	rR   Úfootnote_referencesrÉ   r%  r&  r/   r   rÙ   rk   )r@   rÏ   Zlabel_stylerC   rC   rD   Úvisit_footnote»  s    þzHTMLTranslator.visit_footnotec                 C   s4   | j  d¡ t|jdddt|ƒƒs0| j  d¡ d S )Nrú   FTr)  r*  rä   rC   rC   rD   Údepart_footnoteÆ  s
    ÿzHTMLTranslator.depart_footnotec              
   C   sF   d|d  }d| j jg}| j | j|dd|d|d¡ | j d¡ d S )	Nr-  r.  zfootnote-referencer0  r'   zdoc-noteref)rÐ   r¸   r$  r2  ú!<span class="fn-bracket">[</span>)rR   r¢  r/   r   rÙ   )r@   rÏ   r2  r¸   rC   rC   rD   Úvisit_footnote_referenceÌ  s     ÿz'HTMLTranslator.visit_footnote_referencec                 C   s   | j  d¡ | j  d¡ d S )Nz!<span class="fn-bracket">]</span>ú</a>rè   rä   rC   rC   rD   Údepart_footnote_referenceÓ  s    z(HTMLTranslator.depart_footnote_referencec                 C   s:   d|d kr6|  ¡  d¡}| j d|  |¡ ¡ tj‚d S )NÚsectnumr¸   õ   Â z <span class="sectnum">%s </span>)r˜   r[   r/   r   rœ   r   rF  )r@   rÏ   r©  rC   rC   rD   Úvisit_generatedØ  s    ÿzHTMLTranslator.visit_generatedc                 C   s   d S r<   rC   rä   rC   rC   rD   Údepart_generatedá  s    zHTMLTranslator.depart_generatedc                 C   s   | j  t| jƒ¡ d S r<   rŸ  rä   rC   rC   rD   Úvisit_headerä  s    zHTMLTranslator.visit_headerc                 C   sb   | j  ¡ }| j|dddg}| | j|d … ¡ | d¡ | j |¡ | j |¡ | j|d …= d S )Nrj   r3   r   z
<hr class="header"/>
</div>
)r   rÄ   rÙ   rÌ   r/   r   r,   r3   )r@   rÏ   rm  r3   rC   rC   rD   Údepart_headerç  s    

zHTMLTranslator.depart_headerc              
   C   sD  i }|d }t  |¡d }d|kr.|d |d< d|krB|d |d< d|krPtrôd|ks`d|krô| jjrôt|ƒ}z"tj |¡}|j}W 5 Q R X W n t	t
fk
rª   Y nJX | jj | dd¡¡ d|krÚd|d  |d< d|kròd|d	  |d< ~d
D ]V}||krøt d|| ¡}	|	st‚dt|	 d	¡ƒt|d ƒd  |	 d¡f ||< qøg }
d
D ]N}||krXt d|| ¡rˆ||  d7  < |
 d||| f ¡ ||= qX|
r¼d |
¡|d< t|jtjƒsît|jtjƒrôt|jjtjƒsôd}nd}d|krd|d  |d< | jdkr°z&tt|ƒdƒ}| ¡ }W 5 Q R X W n< t	k
r€ } z| jj d||jf ¡ W 5 d }~X Y n.X | jj t |ƒ¡ t! "|¡ #¡ }d||f }n| jdkrÄd|d< |dkr||d < | j$|d!dfd"|i|—Ž| %d#|¡ d$ | }n.| %d#|d ¡|d#< | j&|d%|fd&|i|—Ž}| j' |¡ d S )'Nr    r   r›  ÚheightÚscaleú\ú/z%dpxr   )r›  r¯  z([0-9.]+)(\S*)$z%s%séd   é   z	^[0-9.]+$r  z%s: %s;r¥   rA  r'   rX   rœ  úalign-%sr¹   rw   ÚrbzCannot embed image %r: %szdata:%s;base64,%sZlazyZloadingzapplication/x-shockwave-flashr&  ÚobjectÚdataZaltz	</object>ÚimgÚsrc)(Ú	mimetypesÚ
guess_typer
   rR   Zfile_insertion_enabledr   ZImagerQ   Úsizer¬   ÚUnicodeEncodeErrorr®   r¯   rŸ   ÚreÚmatchrË   ÚfloatÚgroupr   rZ   rÉ   r  r   ÚTextElementÚ	referencert   rT   rE   r   r­   ÚstrerrorÚunquote_urlÚbase64Ú	b64encodeÚdecoderÙ   rÅ   rÚ   r/   )r@   rÏ   rÔ   r    ÚmimetypeZ	imagepathr¹  ZimgsizeZatt_namerÀ  rA  rÐ   Z	imagefileZ	imagedatar¶   Údata64ÚtagrC   rC   rD   Úvisit_imageð  s˜    
ÿ
ÿ
þ

ÿþ

ÿ

ÿÿÿzHTMLTranslator.visit_imagec                 C   s   d S r<   rC   rä   rC   rC   rD   Údepart_image@  s    zHTMLTranslator.depart_imagec                 C   s   | j  |  |dd¡¡ d S )Nr5  r'   ræ   rä   rC   rC   rD   Úvisit_inlineC  s    zHTMLTranslator.visit_inlinec                 C   s   | j  d¡ d S r8  rè   rä   rC   rC   rD   Údepart_inlineF  s    zHTMLTranslator.depart_inlinec                 C   sR   | j  d¡ | j  d¡ | jjrN|j dg ¡}t|ƒdkrN| j  d|d  ¡ d S )Nz<span class="label">r¥  Úbackrefsr   z"<a role="doc-backlink" href="#%s">r   )r/   r   rR   Úfootnote_backlinksr  rÅ   rj  )r@   rÏ   rÑ  rC   rC   rD   Úvisit_labelJ  s    ÿzHTMLTranslator.visit_labelc                 C   sx   g }| j jr|j d|¡}t|ƒdkr2| j d¡ | j d¡ t|ƒdkrtdd„ t|dƒD ƒ}| j dd |¡ ¡ d S )	NrÑ  r   r§  z)<span class="fn-bracket">]</span></span>
c                 S   s   g | ]\}}d ||f ‘qS )z(<a role="doc-backlink" href="#%s">%s</a>rC   )rz   r‘  ÚrefrC   rC   rD   r|   \  s   ÿz/HTMLTranslator.depart_label.<locals>.<listcomp>z#<span class="backrefs">(%s)</span>
ú,)	rR   rÒ  r  rÅ   rj  r/   r   r  rZ   )r@   rÏ   rÑ  Ú	backlinksrC   rC   rD   Údepart_labelT  s    ÿÿzHTMLTranslator.depart_labelc                 C   s   | j  | j|ddd¡ d S )Nrj   Zlegendr   ræ   rä   rC   rC   rD   Úvisit_legenda  s    zHTMLTranslator.visit_legendc                 C   s   | j  d¡ d S rI  rè   rä   rC   rC   rD   Údepart_legendd  s    zHTMLTranslator.depart_legendc                 C   s2   | j  | j|dddd¡ t|ƒs.| j  d¡ d S )Nrj   r'   Úlinerï   z<br />)r/   r   rÙ   rj  rä   rC   rC   rD   Ú
visit_lineg  s    zHTMLTranslator.visit_linec                 C   s   | j  d¡ d S rI  rè   rä   rC   rC   rD   Údepart_linel  s    zHTMLTranslator.depart_linec                 C   s   | j  | j|ddd¡ d S )Nrj   z
line-blockr   ræ   rä   rC   rC   rD   Úvisit_line_blocko  s    zHTMLTranslator.visit_line_blockc                 C   s   | j  d¡ d S rI  rè   rä   rC   rC   rD   Údepart_line_blockr  s    z HTMLTranslator.depart_line_blockc                 C   s   | j  |  |dd¡¡ d S )NZlir'   ræ   rä   rC   rC   rD   Úvisit_list_itemu  s    zHTMLTranslator.visit_list_itemc                 C   s   | j  d¡ d S )Nz</li>
rè   rä   rC   rC   rD   Údepart_list_itemx  s    zHTMLTranslator.depart_list_itemc                 C   sÜ   |d }d|kr:|  | d¡¡ | j |  |dd¡¡ d S | j | j|dddd¡ | ¡ }t|jtj	ƒsv| 
dd¡}| j |¡D ]B}| ¡ r²| j |¡r²| j d	|  |¡ ¡ q‚| j |  |¡¡ q‚| j d
¡ tj‚d S )Nr¸   rq  r'   r5  zdocutils literalr   rX   r¥   z<span class="pre">%s</span>r9  )rÄ   rß   r/   r   rÙ   r˜   rÉ   r  r   Zliteral_blockrŸ   Úwords_and_spacesÚfindallrÇ   Úin_word_wrap_pointÚsearchrœ   rF  )r@   rÏ   r¸   r›   ÚtokenrC   rC   rD   Úvisit_literal|  s&    ÿÿzHTMLTranslator.visit_literalc                 C   s   | j  d¡ d S )Nú</code>rè   rä   rC   rC   rD   Údepart_literal”  s    zHTMLTranslator.depart_literalc                 C   s6   | j  | j|dddd¡ d|d kr2| j  d¡ d S )Nrî   r'   úliteral-blockr   rq  r¸   z<code>ræ   rä   rC   rC   rD   Úvisit_literal_block˜  s    z"HTMLTranslator.visit_literal_blockc                 C   s(   d|d kr| j  d¡ | j  d¡ d S )Nrq  r¸   rç  z</pre>
rè   rä   rC   rC   rD   Údepart_literal_block  s    z#HTMLTranslator.depart_literal_block)rj   r5  Zformula)rî   ÚttÚmath)rj   r'   r'   )rj   r5  rí  ©r   ÚlatexÚmathmlrz  r'   c              
      sà  ˆ j ˆ jkr*ˆ jj dˆ j › d¡ dˆ _ ˆ jˆ j  |dk }ˆ jˆ j  d }ddddd	œ}|ˆ j  |dk }ˆ j d
krˆ jrŒˆ jd dkrd }| ¡  tj	¡}|rÔz||||f }W n t
k
rÒ   || }Y nX ˆ j dkrèˆ  |¡}ˆ j dkr`ˆ js`zˆ jd ˆ _W n$ tk
r0   ˆ jj d¡ Y nX dˆ jkrLˆ  jd7  _ˆ jˆ j gˆ _nˆ j dkr¶ˆ jrœˆ jsœ‡ fdd„ˆ jd  d¡D ƒˆ _|dktj_t |¡}n²ˆ j d
krhdˆ jkrÞˆ jˆ _ˆ jˆ _d ˆ j¡ ¡ }z¢|dkrt |ˆ jj¡}n‚|dkr(t |ˆ jj¡}nf|dkrJtj|| ˆ jjd}nD|dkrhtj|ˆ jjd}n&|s€t j!|| d}nˆ jj d¡ W nÖ t"k
r®   t"dƒ‚Y nº t#k
rf }	 zšˆ jjj|	|d }
ˆ  $|
¡ ˆ j% &ˆ  '|d!¡¡ ˆ j% &d |	j(¡¡ ˆ j% &d"¡ ˆ j% &ˆ j'|d#d$d%¡ ˆ j% &ˆ  |¡¡ ˆ j% &d&¡ ˆ  )|
¡ t*j+‚W 5 d }	~	X Y nX |rˆ j% &ˆ j'||d't,|ƒ |d(¡ ˆ j% &|¡ |r®ˆ j% &d'¡ |rÄˆ j% &d)| ¡ |rÖˆ j% &d'¡ t*j+‚d S )*Nzmath-output format "z'" not supported falling back to "latex"rï  r'   r´  )z$%s$ú\begin{%s}
%s
\end{%s})NN)z\(%s\)rñ  rî  rð  r   Ú	blahtexml)rï  rz  rz  z@No MathJax URL specified, using local fallback (see config.html)ú?z?config=TeX-AMS_CHTMLr   c                    s&   g | ]}ˆ j t |ˆ jj¡d d‘qS )T)r³   )ry   r   Zfind_file_in_dirsrR   Zstylesheet_dirs)rz   Úsr?   rC   rD   r|   Þ  s
   ýþz-HTMLTranslator.visit_math.<locals>.<listcomp>rÕ  zXHTML 1r¥   ÚlatexmlÚttm)Úinliner   Úpandoc)r   )r÷  z3option "%s" not supported with math-output "MathML"zis "latexmlmath" in your PATH?)Z	base_noderþ   r  rî   ré  r   ró   rX   rï   ú</%s>)-rˆ   Ú	math_tagsrE   r   r­   r‰   r˜   rM   r   Zuni2tex_tableÚ	TypeErrorrœ   r—   Úmathjax_urlrÝ   ÚwarningÚmathjax_scriptrg   r   ZDocumentParametersZdisplaymoder|  Údoctype_mathmlZcontent_type_mathmlr‹   rZ   rŠ   r   rõ  rö  rò  rø  r   Z
tex2mathmlr¬   ÚSyntaxErrorÚvisit_system_messager/   r   rÙ   ÚargsÚdepart_system_messager   rF  r«   )r@   rÏ   Úmath_envrÌ  ZclsargZwrappersÚwrapperZ	math_codeÚ	converterr¶   Zerr_noderC   r?   rD   Ú
visit_math¯  sÎ    ÿû
ÿþ


ý
 ÿ
 ÿ
ý
þ ÿ
ÿ

þzHTMLTranslator.visit_mathc                 C   s   d S r<   rC   rä   rC   rC   rD   Údepart_math  s    zHTMLTranslator.depart_mathc                 C   s   t | ¡ ƒ}| j||d d S )N)r  )r   r˜   r  )r@   rÏ   r  rC   rC   rD   Úvisit_math_block   s    zHTMLTranslator.visit_math_blockc                 C   s   d S r<   rC   rä   rC   rC   rD   Údepart_math_block$  s    z HTMLTranslator.depart_math_blockc                 C   s    | j  | j|df| ¡ Ž¡ d S )Nr5   )r5   r   rÚ   Znon_default_attributesrä   rC   rC   rD   Ú
visit_meta)  s    ÿzHTMLTranslator.visit_metac                 C   s   d S r<   rC   rä   rC   rC   rD   Údepart_meta-  s    zHTMLTranslator.depart_metac                 C   s   | j  | j|dddd¡ d S )Nr5  r'   Úoptionr   ræ   rä   rC   rC   rD   Úvisit_option0  s    zHTMLTranslator.visit_optionc                 C   s2   | j  d¡ t|jdddtjƒr.| j  d¡ d S )Nr9  FTr)  ú, )r/   r   rÉ   r+  r   r  rä   rC   rC   rD   Údepart_option3  s
    ÿzHTMLTranslator.depart_optionc                 C   s.   | j  | dd¡¡ | j  |  |dd¡¡ d S )NÚ	delimiterr¥   Úvarr'   )r/   r   rÅ   rÙ   rä   rC   rC   rD   Úvisit_option_argument9  s    z$HTMLTranslator.visit_option_argumentc                 C   s   | j  d¡ d S )Nz</var>rè   rä   rC   rC   rD   Údepart_option_argument=  s    z%HTMLTranslator.depart_option_argumentc                 C   s&   | j  |  |dd¡¡ | j  d¡ d S )Nr–  r'   z<kbd>ræ   rä   rC   rC   rD   Úvisit_option_group@  s    z!HTMLTranslator.visit_option_groupc                 C   s   | j  d¡ d S )Nz</kbd></dt>
rè   rä   rC   rC   rD   Údepart_option_groupD  s    z"HTMLTranslator.depart_option_groupc                 C   s   | j  | j|ddd¡ d S )Nr_  zoption-listr   ræ   rä   rC   rC   rD   Úvisit_option_listG  s    ÿz HTMLTranslator.visit_option_listc                 C   s   | j  d¡ d S rl  rè   rä   rC   rC   rD   Údepart_option_listK  s    z!HTMLTranslator.depart_option_listc                 C   s   d S r<   rC   rä   rC   rC   rD   Úvisit_option_list_itemN  s    z%HTMLTranslator.visit_option_list_itemc                 C   s   d S r<   rC   rä   rC   rC   rD   Údepart_option_list_itemQ  s    z&HTMLTranslator.depart_option_list_itemc                 C   s   d S r<   rC   rä   rC   rC   rD   Úvisit_option_stringT  s    z"HTMLTranslator.visit_option_stringc                 C   s   d S r<   rC   rä   rC   rC   rD   Údepart_option_stringW  s    z#HTMLTranslator.depart_option_stringc                 C   s   |   |d¡ d S )NZorganizationr  rä   rC   rC   rD   Úvisit_organizationZ  s    z!HTMLTranslator.visit_organizationc                 C   s   |   ¡  d S r<   r  rä   rC   rC   rD   Údepart_organization]  s    z"HTMLTranslator.depart_organizationc                 C   s   | j  |  |dd¡¡ d S )Nrþ   r'   ræ   rä   rC   rC   rD   Úvisit_paragrapho  s    zHTMLTranslator.visit_paragraphc                 C   s>   | j  d¡ t|jtjtjfƒr.t|jƒdks:| j  d¡ d S )Nr  r   rX   )r/   r   rÉ   r  r   Z	list_itemÚentryrj  rä   rC   rC   rD   Údepart_paragraphr  s
    ÿzHTMLTranslator.depart_paragraphc                 C   sV   |  d¡r,| j d|d  ¡ | j d¡ n| j d¡ | j | j|dddd¡ d S )Nr.  z<a href="#%s">r§  r'   r5  Zproblematicr   )Úhasattrr/   r   r   rÙ   rä   rC   rC   rD   Úvisit_problematicx  s
    
z HTMLTranslator.visit_problematicc                 C   s"   | j  d¡ | j  | j ¡ ¡ d S r8  r  rä   rC   rC   rD   Údepart_problematic€  s    z!HTMLTranslator.depart_problematicc                 C   s~   d|  dd¡ ¡ krtt|jtjƒr(d}nd}|d rL| j | j||dd¡ | j | 	¡ ¡ |d rt| j d| ¡ tj
‚d S )	Nr   Úformatr'   r5  rj   r¸   ©rÐ   rù  )rÅ   rg   rÉ   r  r   rÃ  r/   r   rÙ   r˜   rF  )r@   rÏ   rk   rC   rC   rD   Ú	visit_raw„  s    zHTMLTranslator.visit_rawc                 C   s  ddi}d|kr\|d |d< | j jrJ|d  d¡rJ|  |d ¡|d< d| _|d  d7  < n0d|ksltd	ƒ‚d
|d  |d< |d  d7  < t|ƒdkr¸t|d tj	ƒr¸|d  d7  < t|j
tjƒsöt|ƒdkrât|d tj	ƒsæt‚|d  d7  < | j | j|ddf|Ž¡ d S )Nr¹   rÄ  Úrefurir2  zmailto:Tz	 externalr.  z3References must have "refuri" or "refid" attribute.r-  z	 internalr   r   z image-referencer0  r'   )rR   r§   rÆ   r¡   r–   rË   rj  rÉ   r   Úimager  rÃ  r/   r   rÙ   rd  rC   rC   rD   Úvisit_reference’  s(    ÿ
ÿ zHTMLTranslator.visit_referencec                 C   s0   | j  d¡ t|jtjƒs&| j  d¡ d| _d S )Nr§  rX   F)r/   r   rÉ   r  r   rÃ  r–   rä   rC   rC   rD   Údepart_reference§  s    zHTMLTranslator.depart_referencec                 C   s   | j |ddd d S )NÚrevisionFrí   r  rä   rC   rC   rD   Úvisit_revision­  s    zHTMLTranslator.visit_revisionc                 C   s   |   ¡  d S r<   r  rä   rC   rC   rD   Údepart_revision°  s    zHTMLTranslator.depart_revisionc                 C   s    | j  |  |dd¡¡ d|_d S )NÚtrr'   r   )r/   r   rÙ   r†  rä   rC   rC   rD   Ú	visit_row³  s    zHTMLTranslator.visit_rowc                 C   s   | j  d¡ d S )Nz</tr>
rè   rä   rC   rC   rD   Ú
depart_row·  s    zHTMLTranslator.depart_rowc                 C   s   | j  | j|dddd¡ d S )Nrþ   r'   Zrubricr   ræ   rä   rC   rC   rD   Úvisit_rubricº  s    zHTMLTranslator.visit_rubricc                 C   s   | j  d¡ d S r  rè   rä   rC   rC   rD   Údepart_rubric½  s    zHTMLTranslator.depart_rubricc                 C   s*   |  j d7  _ | j | j|ddd¡ d S )Nr   rj   Úsectionr   )r   r/   r   rÙ   rä   rC   rC   rD   Úvisit_sectionÀ  s    ÿzHTMLTranslator.visit_sectionc                 C   s   |  j d8  _ | j d¡ d S )Nr   r(  )r   r/   r   rä   rC   rC   rD   Údepart_sectionÅ  s    zHTMLTranslator.depart_sectionc                 C   s"   | j  | j|ddd¡ d| _d S )Nrj   Úsidebarr   T)r/   r   rÙ   r”   rä   rC   rC   rD   Úvisit_sidebarÊ  s    ÿzHTMLTranslator.visit_sidebarc                 C   s   | j  d¡ d| _d S )Nr(  F)r/   r   r”   rä   rC   rC   rD   Údepart_sidebarÏ  s    zHTMLTranslator.depart_sidebarc                 C   s   | j |ddd d S )NÚstatusFrí   r  rä   rC   rC   rD   Úvisit_statusÓ  s    zHTMLTranslator.visit_statusc                 C   s   |   ¡  d S r<   r  rä   rC   rC   rD   Údepart_statusÖ  s    zHTMLTranslator.depart_statusc                 C   s   | j  |  |dd¡¡ d S )NÚstrongr'   ræ   rä   rC   rC   rD   Úvisit_strongÙ  s    zHTMLTranslator.visit_strongc                 C   s   | j  d¡ d S )Nz	</strong>rè   rä   rC   rC   rD   Údepart_strongÜ  s    zHTMLTranslator.depart_strongc                 C   s   | j  |  |dd¡¡ d S )Nr¦   r'   ræ   rä   rC   rC   rD   Úvisit_subscriptß  s    zHTMLTranslator.visit_subscriptc                 C   s   | j  d¡ d S )Nz</sub>rè   rä   rC   rC   rD   Údepart_subscriptâ  s    zHTMLTranslator.depart_subscriptc                 C   s
   t j‚dS )zInternal only.N©r   rF  rä   rC   rC   rD   Úvisit_substitution_definitionå  s    z,HTMLTranslator.visit_substitution_definitionc                 C   s   |   |¡ d S r<   )Úunimplemented_visiträ   rC   rC   rD   Úvisit_substitution_referenceé  s    z+HTMLTranslator.visit_substitution_referencec                 C   sn   t |jtjƒrdg}n:t |jtjƒr<dg}t| jƒd | _nt |jtjƒrPdg}| j 	| j
|dd|d¡ d S )Nzsidebar-subtitler2   r   zsection-subtitlerþ   r'   r÷   )rÉ   r  r   r7  rE   rj  r/   r•   r4  r   rÙ   r`  rC   rC   rD   Úvisit_subtitleð  s    zHTMLTranslator.visit_subtitlec                 C   s^   | j  d¡ t|jtjƒrZ| j | jd… | _d| _| j 	| j ¡ | j
 	| j ¡ | j d d …= d S )Nr  r{  r   )r/   r   rÉ   r  r   rE   r•   r2   r-   rÌ   r:   rä   rC   rC   rD   Údepart_subtitleú  s    zHTMLTranslator.depart_subtitlec                 C   s   | j  |  |dd¡¡ d S )NÚsupr'   ræ   rä   rC   rC   rD   Úvisit_superscript  s    z HTMLTranslator.visit_superscriptc                 C   s   | j  d¡ d S )Nz</sup>rè   rä   rC   rC   rD   Údepart_superscript  s    z!HTMLTranslator.depart_superscriptc              	   C   sÜ   | j  | j|ddd¡ | j  d¡ d}t|d ƒr|d }t|ƒdkrVd|d	  }n:d}g }|D ]}| d
||f ¡ |d7 }qbdd |¡ }| d¡r¨d|d  }nd}| j  d|d |d |  |d ¡||f ¡ d S )Nrö   zsystem-messager   z <p class="system-message-title">r'   rÑ  r   z%; <em><a href="#%s">backlink</a></em>r   z<a href="#%s">%s</a>z; <em>backlinks: %s</em>r  rÚ  z	, line %szISystem Message: %s/%s (<span class="docutils literal">%s</span>%s)%s</p>
r&  Úlevelrv  )r/   r   rÙ   rj  rZ   r"  rœ   )r@   rÏ   Zbackref_textrÑ  r‘  rÖ  ZbackrefrÚ  rC   rC   rD   r  	  s6    ÿ
ÿ
  ÿþz#HTMLTranslator.visit_system_messagec                 C   s   | j  d¡ d S rù   rè   rä   rC   rC   rD   r  #  s    z$HTMLTranslator.depart_system_messagec                 C   sn   d| j j dd¡ ¡ i}d|kr6|d  d|d  ¡ d|krNd|d  |d< | j|d	f|Ž}| j |¡ d S )
Nr¸   rÕ  r¥   rœ  rµ  r›  z
width: %s;rA  rÊ   )rR   rB  rŸ   rg   r   rÙ   r/   )r@   rÏ   rÔ   rÌ  rC   rC   rD   Úvisit_table&  s    zHTMLTranslator.visit_tablec                 C   s   | j  d¡ d S )Nz	</table>
rè   rä   rC   rC   rD   Údepart_table/  s    zHTMLTranslator.depart_tablec                 C   sP   d|kr@d|kr@d|kr@| j  | j|dddd¡ | j d¡ n| j d¡ d S )	Nr(  r.  r/  r5  r'   Útargetr   r9  )r/   r   rÙ   r   rä   rC   rC   rD   Úvisit_target2  s    ÿþzHTMLTranslator.visit_targetc                 C   s   | j  | j ¡ ¡ d S r<   r  rä   rC   rC   rD   Údepart_target;  s    zHTMLTranslator.depart_targetc                 C   s   | j  |  |d¡¡ d S )NZtbodyræ   rä   rC   rC   rD   Úvisit_tbody?  s    zHTMLTranslator.visit_tbodyc                 C   s   | j  d¡ d S )Nz	</tbody>
rè   rä   rC   rC   rD   Údepart_tbodyB  s    zHTMLTranslator.depart_tbodyc              	   C   sV   d|j j d kr*| j | j|ddd¡ n(| j | j|dd|j d |j d d¡ d S )	NrX  r¸   Úsummaryr'   r&  r–  rÁ   )rÐ   r¸   rÁ   rZ  rä   rC   rC   rD   Ú
visit_termE  s    þzHTMLTranslator.visit_termc                 C   s   d S r<   rC   rä   rC   rC   rD   Údepart_termN  s    zHTMLTranslator.depart_termc                 C   s   g | _ g |_d S r<   )r‘   r<  rä   rC   rC   rD   Úvisit_tgroupS  s    zHTMLTranslator.visit_tgroupc                 C   s   d S r<   rC   rä   rC   rC   rD   Údepart_tgroupW  s    zHTMLTranslator.depart_tgroupc                 C   s   | j  |  |d¡¡ d S )Nr…  ræ   rä   rC   rC   rD   Úvisit_theadZ  s    zHTMLTranslator.visit_theadc                 C   s   | j  d¡ d S )Nz	</thead>
rè   rä   rC   rC   rD   Údepart_thead]  s    zHTMLTranslator.depart_theadc                 C   s¦   i }| j | j d }dt|dƒ }|dkr2||d< | j||df|Ž}| d¡r–i }d|d< d	|d
< d|d  |d< || jt ¡ ddf|Ž7 }d| }nd| }||fS )Nr   zh%ié   z
aria-levelr'   r.  ztoc-backrefr¹   zdoc-backlinkr$  r-  r2  r0  z
</a></%s>
r„  )r   r„   ÚminrÙ   r"  r   rÄ  )r@   rÏ   rÔ   Zh_levelrk   Ú	start_tagÚ	close_tagrC   rC   rD   Úsection_title_tags`  s    

z!HTMLTranslator.section_title_tagsc                 C   s"  d}t |jtjƒr.| j | j|dddd¡ nät |jtjƒrX| j | j|dddd¡ nºt |jtjƒr‚| j | j|dddd¡ nt |jtj	ƒr¬| j |  |dd¡¡ d	}nft |jtj
ƒræ| j | j|d
ddd¡ d}t| jƒ| _n,t |jtjƒsøt‚|  |¡\}}| j |¡ | j |¡ d S )Nr  rþ   r'   ztopic-titler   zsidebar-titlezadmonition-titler   z</caption>
Zh1r1   z</h1>
)rÉ   r  r   Útopicr/   r   rÙ   r7  Z
AdmonitionrÊ   rE   rj  r•   r4  rË   r^  r   )r@   rÏ   r]  r\  rC   rC   rD   Úvisit_titles  s4    ÿÿÿÿzHTMLTranslator.visit_titlec                 C   s\   | j  | j ¡ ¡ | jrX| j | jd… | _d| _| j | j ¡ | j | j ¡ | j d d …= d S )Nr{  r   )	r/   r   r   rÄ   r•   r1   r-   rÌ   r9   rä   rC   rC   rD   Údepart_title  s    zHTMLTranslator.depart_titlec                 C   s   | j  |  |dd¡¡ d S )NZciter'   ræ   rä   rC   rC   rD   Úvisit_title_reference˜  s    z$HTMLTranslator.visit_title_referencec                 C   s   | j  d¡ d S )Nz</cite>rè   rä   rC   rC   rD   Údepart_title_reference›  s    z%HTMLTranslator.depart_title_referencec                 C   s   | j  | j|ddd¡ d S )Nrj   r_  r   ræ   rä   rC   rC   rD   Úvisit_topicž  s    zHTMLTranslator.visit_topicc                 C   s   | j  d¡ d S rI  rè   rä   rC   rC   rD   Údepart_topic¡  s    zHTMLTranslator.depart_topicc                 C   s   | j  | j|ddd¡ d S )NÚhrr]   r   )r/   r   rÚ   rä   rC   rC   rD   Úvisit_transition¤  s    zHTMLTranslator.visit_transitionc                 C   s   d S r<   rC   rä   rC   rC   rD   Údepart_transition§  s    z HTMLTranslator.depart_transitionc                 C   s   | j |ddd d S )NrY   Frí   r  rä   rC   rC   rD   Úvisit_versionª  s    zHTMLTranslator.visit_versionc                 C   s   |   ¡  d S r<   r  rä   rC   rC   rD   Údepart_version­  s    zHTMLTranslator.depart_versionc                 C   s   t d|jj ƒ‚d S )Nz$visiting unimplemented node type: %s)ÚNotImplementedErrorrB   rc   rä   rC   rC   rD   rD  °  s    ÿz"HTMLTranslator.unimplemented_visit)N)rX   F)rX   )r   )N)T)r'   )Ørc   rd   re   Ú__doc__r|  rÿ  r}  r‹   r]   r^   rŒ   r~  rþ  rü  r²   r°   r¿  Úcompilerá  rã  rÈ   Úordrš   r   r˜   rœ   r¡   r¤   rª   ry   rÙ   rÚ   râ   rã   rå   rç   ré   rê   rë   rñ   rõ   rø   rû   r  r  r  r
  r  r  r  r  r  r  r  r  r  r!  r"  r'  r,  r3  r4  r7  r:  r=  rE  r¦   rG  rH  rJ  rK  rL  rN  rO  rQ  rR  rT  rU  rV  rW  r[  r^  ra  rc  re  rf  rg  ri  rk  rn  rð   rô   rt  ru  ry  r  r€  r  r‡  rˆ  rŠ  r‹  r’  r“  r”  r•  r—  r˜  r™  rš  r  rž  r   r¡  r£  r¤  r¦  r¨  r«  r¬  r­  r®  rÍ  rÎ  rÏ  rÐ  rÓ  r×  rØ  rÙ  rÛ  rÜ  rÝ  rÞ  rß  rà  ræ  rè  rê  rë  rú  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r$  r'  r*  r+  r-  r.  r0  r1  r2  r3  r5  r6  r8  r9  r;  r<  r>  r?  r@  rA  rC  rE  rF  rG  rI  rJ  r  r  rL  rM  rO  rP  rQ  rR  rT  rU  rV  rW  rX  rY  r^  r`  ra  rb  rc  rd  re  rg  rh  ri  rj  rD  rC   rC   rC   rD   ri   ²   sÆ  8ÿ


    üOÿ

Bý
	
ÿ


		P
ûn
					ri   c                   @   sœ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ ZeZeZ	eZ
eZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZ eZ!eZ"d
S )r  a  
    Raise `nodes.NodeFound` if non-simple list item is encountered.

    Here "simple" means a list item containing nothing other than a single
    paragraph, a simple list, or a paragraph followed by a simple list.

    This version also checks for simple field lists and docinfo.
    c                 C   s
   t j‚d S r<   )r   r  rä   rC   rC   rD   Údefault_visitÀ  s    zSimpleListChecker.default_visitc                 C   sv   dd„ |j D ƒ}|r\t|d tjƒr\t|d tjƒsTt|d tjƒsTt|d tjƒr\| ¡  t|ƒdkrld S tj	‚d S )Nc                 S   s   g | ]}t |tjƒs|‘qS rC   rÛ   )rz   rá   rC   rC   rD   r|   Ä  s    ÿz5SimpleListChecker.visit_list_item.<locals>.<listcomp>r   r{  r   )
rà   rÉ   r   Z	paragraphr  r  r  rÄ   rj  r  )r@   rÏ   rà   rC   rC   rD   rß  Ã  s    ÿþýz!SimpleListChecker.visit_list_itemc                 C   s   d S r<   rC   rä   rC   rC   rD   Ú	pass_nodeÐ  s    zSimpleListChecker.pass_nodec                 C   s
   t j‚d S r<   rB  rä   rC   rC   rD   Úignore_nodeÓ  s    zSimpleListChecker.ignore_nodeN)#rc   rd   re   rl  ro  rß  rp  rq  rã   r  r  rŠ  rk  r
  r  rñ   rN  rQ  rT  r  r;  ri  ra  re  rT  r7  r[  r’  r”  r™  r—  rG  rC  rO  Zvisit_pendingrC   rC   rC   rD   r  µ  s@   	r  )"rl  rÇ  r»  rw  Úos.pathr¿  Úurllib.requestr   rÆ  r   r…   r]   r   r   r   r   r   Zdocutils.parsers.rst.directivesr	   Z&docutils.parsers.rst.directives.imagesr
   Zdocutils.transformsr   Zdocutils.utils.mathr   r   r   r   r   r   r~   ri   ZGenericNodeVisitorr  rC   rC   rC   rD   Ú<module>   s<                