o
    ,«a`žü  ã                   @   sR  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ZzddlZW n& e	yF   zddl
Z
G dd„ deƒZe
e_
W n e	yC   dZY nw Y nw 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mZmZmZmZ ejd	krdd
lmZ ndd
lmZ ejd	krŒe 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é    Nc                   @   s   e Zd ZdS )ÚPILN)Ú__name__Ú
__module__Ú__qualname__© r   r   ú=/usr/lib/python3/dist-packages/docutils/writers/_html_base.pyr      s    r   )ÚnodesÚutilsÚwritersÚ	languagesÚio)Ú
SafeString)Ú
writer_aux)Úunichar2texÚpick_math_environmentÚ	math2htmlÚlatex2mathmlÚtex2mathml_extern)é   r   )Úurl2pathnamec                   @   sN   e Zd ZdZ	 dZddiZdZdZdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚWriter)ÚhtmlÚxhtmlztemplate.txtÚoutput_encoding_error_handlerÚxmlcharrefreplace)r
   zhtml writers)Úhead_prefixÚheadÚ
stylesheetÚ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                 C   s   t j | ¡tjg S ©N)r
   r   Úget_transformsr   ÚAdmonitions©Úselfr   r   r   r/   K   ó   zWriter.get_transformsc                 C   sJ   |   | j¡ | _}| j |¡ | jD ]}t| |t||ƒƒ q|  ¡ | _d S r.   )	Útranslator_classÚdocumentÚvisitorÚ	walkaboutÚvisitor_attributesÚsetattrÚgetattrÚapply_templateÚoutput)r2   r6   Úattrr   r   r   Ú	translateN   s
   
zWriter.translatec                 C   s6   t | jjjdƒ}t| ¡ dƒ}| ¡  |  ¡ }|| S )NÚrbúutf-8)Úopenr5   ÚsettingsÚtemplateÚunicodeÚreadÚcloseÚinterpolation_dict)r2   Útemplate_filerC   Úsubsr   r   r   r;   U   s
   zWriter.apply_templatec                 C   sJ   i }| j j}| jD ]}d t| |ƒ¡ d¡||< q	|j|d< tj|d< |S )NÚ Ú
ÚencodingÚversion)	r5   rB   r8   Újoinr:   ÚrstripÚoutput_encodingÚdocutilsÚ__version__)r2   rI   rB   r=   r   r   r   rG   \   s   


zWriter.interpolation_dictc                 C   s2   t j | ¡ | jD ]}d t| |ƒ¡| j|< q	d S ©NrJ   )r
   r   Úassemble_partsr8   rN   r:   Úparts)r2   Úpartr   r   r   rT   e   s   
ÿzWriter.assemble_partsN)r   r   r   Ú	supportedÚdefault_templateÚsettings_defaultsÚconfig_section_dependenciesr8   r/   r>   r;   rG   rT   r   r   r   r   r   4   s    	r   c                
   @   s  e Zd ZdZdZdZeZdZdZdZ	dZ
dZ	 d	Zd
Ze d¡Ze dej¡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&„ Z�d¥d)d*„Z�d¦d+d,„Z�d§d.d/„Zd0d1„ Z d2d3„ Z!d4d5„ Z"d6d7„ Z#d8d9„ Z$d:d;„ Z%d<d=„ Z&d>d?„ Z'd@dA„ Z(�d¨dCdD„Z)dEdFdFdGdHœZ*dIdJ„ Z+dKdL„ Z,dMdN„ Z-dOdP„ Z.dQdR„ Z/dSdT„ Z0dUdV„ Z1dWdX„ Z2dYdZ„ Z3d[d\„ Z4d]d^„ Z5d_d`„ Z6dadb„ Z7dcdd„ Z8dedf„ Z9dgdh„ Z:didj„ Z;dkdl„ Z<dmdn„ Z=dodp„ Z>dqdr„ Z?dsdt„ Z@e du¡jAfdvdw„ZBdxdy„ ZCdzd{„ 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£„ ZX�d©d¥d¦„ZYd§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ö„ 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š�d-�d.„ Z›�d/�d0„ Zœ�d1�d2„ Z��d3�d4„ Zž�d5�d6„ ZŸ�d7�d8„ Z �d9�d:„ Z¡�d;�d<„ Z¢�d=�d>„ Z£�d?�d@„ Z¤�dA�dB„ Z¥�dC�dD„ Z¦�dE�dF„ Z§�dG�dH„ Z¨�dI�dJ„ Z©�dK�dL„ Zª�dM�dN„ Z«�dO�dP„ Z¬�dQ�dR„ Z­�dS�dT„ Z®�dU�dV„ Z¯�dW�dX„ Z°�dY�dZ„ Z±�d[�d\„ Z²�d]�d^„ Z³�d_�d`„ Z´�da�db„ Zµ�dc�dd„ Z¶�de�df„ Z·�dg�dh„ Z¸�di�dj„ Z¹�dk�dl„ Zº�dm�dn„ Z»�do�dp„ Z¼�dq�dr„ Z½�ds�dt„ Z¾�du�dv„ Z¿�dw�dx„ ZÀ�dy�dz„ 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ÖdBS («  Ú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%<?xml version="1.0" encoding="%s" ?>
z<!DOCTYPE html>
zW<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="%(lang)s" lang="%(lang)s">
<head>
z<meta charset="%s"/>
zR<meta name="generator" content="Docutils %s: http://docutils.sourceforge.net/" />
z2<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 ˆ _}|j}t ||j¡ˆ _ˆ j	t
j gˆ _g ˆ _g ˆ _|jr:ˆ j ˆ j|j ¡ ˆ j ˆ j¡ ˆ jd d … ˆ _‡ fdd„t |¡D ƒˆ _dgˆ _g ˆ _g ˆ _g ˆ _g ˆ _dgˆ _dˆ _t|jƒˆ _|j  ¡ ˆ _ˆ jdd … ˆ _!ˆ jd  "¡ ˆ _g ˆ _#	 g ˆ _$g ˆ _%dˆ _&dˆ _'dˆ _(dˆ _)dˆ _*dˆ _+g ˆ _,g ˆ _-g ˆ _.g ˆ _/ˆ j0gˆ _1g ˆ _2g ˆ _3g ˆ _4dˆ _5dˆ _6dˆ _7g ˆ _8d S )	Nc                    s   g | ]}ˆ   |¡‘qS r   )Ústylesheet_call)Ú.0Úpathr1   r   r   Ú
<listcomp>à   ó    ÿz+HTMLTranslator.__init__.<locals>.<listcomp>z</head>
<body>
z</body>
</html>
r   é   TF)9r   ÚNodeVisitorÚ__init__rB   Úlanguage_coder   Úget_languageÚreporterÚlanguageÚ	generatorrQ   rR   r'   r   r)   Úxml_declarationÚappendrP   r   r	   Úget_stylesheet_listr   r   r   r    r!   r(   r"   Úsection_levelÚintÚinitial_header_levelÚmath_outputÚsplitÚmath_output_optionsÚlowerÚcontextÚtopic_classesÚcolspecsÚ	compact_pÚcompact_simpleÚcompact_field_listÚ
in_docinfoÚ
in_sidebarÚin_footnote_listr#   r$   r%   r&   Úcontent_typer*   r+   r,   r-   Úin_document_titleÚ	in_mailtoÚauthor_in_authorsÚmath_header)r2   r5   rB   Úlcoder   r1   r   rj   Ñ   sb   
ÿ
ÿ

zHTMLTranslator.__init__c                 C   s6   d  | j| j | j | j | j | j | j | j ¡S rS   )	rN   r   r   r   r   r   r    r!   r"   r1   r   r   r   Úastext  s   ÿÿþþýýzHTMLTranslator.astextc                 C   s   t |ƒ}| | j¡S )z-Encode special characters in `text` & return.)rD   r>   Úspecial_characters)r2   Útextr   r   r   Úencode  s   zHTMLTranslator.encodec                 C   s   |  dd¡S )z*Try to hide a mailto: URL from harvesters.ra   ú%40©Úreplace)r2   Úurir   r   r   Úcloak_mailto  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.rb   z<span>&#64;</span>Ú.z<span>&#46;</span>rŽ   )r2   Úaddrr   r   r   Úcloak_email!  s   zHTMLTranslator.cloak_emailz[
	]c                 C   s<   |   | d|¡¡}| jr| jjr| dd¡}| dd¡}|S )z6Cleanse, HTML encode, and return attribute value text.ú r�   z&#37;&#52;&#48;r’   z&#46;)rŒ   Úsubr…   rB   Úcloak_email_addressesr�   )r2   r‹   Ú
whitespaceÚencodedr   r   r   Úattval)  s
   zHTMLTranslator.attvalc              
   C   s¬   | j jrBztj|dd� ¡ }| j j |¡ W n& ty< } zd|t|j	ƒf }| j
j |¡ d| W  Y d}~S d}~ww | j| S | j jrNt | j j|¡}| j|  |¡ S )z8Return code to reference or embed stylesheet file `path`r@   )Úsource_pathrL   z!Cannot embed stylesheet '%r': %s.z<--- %s --->
N)rB   Úembed_stylesheetr   Ú	FileInputrE   Úrecord_dependenciesÚaddÚIOErrorr   Ústrerrorr5   rm   ÚerrorÚembedded_stylesheetÚstylesheet_pathr	   Úrelative_pathÚ_destinationÚstylesheet_linkrŒ   )r2   re   ÚcontentÚerrÚmsgr   r   r   rc   3  s(   ÿÿ
ÿ€ü
zHTMLTranslator.stylesheet_callrK   Fc              
   K   s  |  ¡ }g }i }g }| ¡ D ]
\}	}
|
||	  ¡ < qg }g }| dg ¡| dd¡ ¡  D ]}| d¡r<| |dd… ¡ q+| ¡ rI||vrI| |¡ q+|rS|d || j< |r\d 	|¡|d< d	|vsbJ ‚| 
| d
g ¡¡ d
|v ry| 
|d
 ¡ |d
= |r­|d |d	< |dd… D ]%}|sžt|tjtjtjtjtjtjtjfƒr¦| d| ¡ q‡|d| 7 }q‡t| ¡ ƒ}|g}|D ]8\}	}
|
dusÂJ ‚t|
tƒràdd„ |
D ƒ}| d|	  ¡ |  d 	|¡¡f ¡ q¸| 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ÚclassrJ   z	language-é	   Nr   r•   ÚidÚidsrh   z<span id="%s"></span>c                 S   s   g | ]}t |ƒ‘qS r   )rD   )rd   Úvr   r   r   rf   }  s    z+HTMLTranslator.starttag.<locals>.<listcomp>z%s="%s"z /z<%s%s>)ry   ÚitemsÚgetÚpoprw   Ú
startswithrq   ÚstripÚlang_attributerN   ÚextendÚ
isinstancer   Úbullet_listr    Údefinition_listÚenumerated_listÚ
field_listÚoption_listÚtableÚsortedÚlistrš   rD   )r2   ÚnodeÚtagnameÚsuffixÚemptyÚ
attributesÚprefixÚattsr¯   ÚnameÚvaluer«   r   Úclsr®   ÚattlistrU   ÚvaluesÚinfixr   r   r   ÚstarttagF  sf    

€ýÿ

ÿ
ÿ zHTMLTranslator.starttagc                 K   s   | j |||fddi|¤ŽS )z1Construct and return an XML-compatible empty tag.rÄ   T)rÎ   )r2   rÁ   rÂ   rÃ   rÅ   r   r   r   Úemptytag‰  ó   zHTMLTranslator.emptytagr   c                 C   sB   dd„ |D ƒ}z|| }W n
 t y   Y dS w |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   ó   g | ]
}t |tjƒs|‘qS r   ©r¸   r   Ú	Invisible)rd   Únr   r   r   rf   ’  s    z5HTMLTranslator.set_class_on_child.<locals>.<listcomp>Nr«   )Ú
IndexErrorrq   )r2   rÁ   Úclass_ÚindexÚchildrenÚchildr   r   r   Ú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…   rB   r—   r”   r!   rq   )r2   rÁ   r‹   r™   r   r   r   Ú
visit_Text™  s
   

zHTMLTranslator.visit_Textc                 C   ó   d S r.   r   ©r2   rÁ   r   r   r   Údepart_Text   ó   zHTMLTranslator.depart_Textc                 C   ó   | j  |  |dd¡¡ d S )NÚabbrrJ   ©r!   rq   rÎ   rÝ   r   r   r   Úvisit_abbreviation£  rÐ   z!HTMLTranslator.visit_abbreviationc                 C   ó   | j  d¡ d S )Nz</abbr>©r!   rq   rÝ   r   r   r   Údepart_abbreviation§  ó   z"HTMLTranslator.depart_abbreviationc                 C   rà   )NÚacronymrJ   râ   rÝ   r   r   r   Úvisit_acronymª  rÐ   zHTMLTranslator.visit_acronymc                 C   rä   )Nz
</acronym>rå   rÝ   r   r   r   Údepart_acronym®  rç   zHTMLTranslator.depart_acronymc                 C   s.   | j |ddd� | j | j|dddd�¡ d S )NÚaddressF©r'   ÚprerJ   ©rÃ   ÚCLASS)Úvisit_docinfo_itemr!   rq   rÎ   rÝ   r   r   r   Úvisit_address±  s   ÿzHTMLTranslator.visit_addressc                 C   s   | j  d¡ |  ¡  d S ©Nú
</pre>
)r!   rq   Údepart_docinfo_itemrÝ   r   r   r   Údepart_address¶  s   zHTMLTranslator.depart_addressc                 C   s(   |d   dd¡ | j |  |d¡¡ d S )Nr«   r   Ú
admonitionÚdiv)Úinsertr!   rq   rÎ   rÝ   r   r   r   Úvisit_admonitionº  s   zHTMLTranslator.visit_admonitionNc                 C   rä   ©Nú</div>
rå   rÝ   r   r   r   Údepart_admonition¾  rç   z HTMLTranslator.depart_admonition)u   â€”rJ   )ú(ú))rJ   rJ   )ÚdashÚparenthesesÚparensÚnonec                 C   s<   | j | jj \}}| j |¡ | j | j|d|dd�¡ d S )NÚpÚattribution©rï   )Úattribution_formatsrB   r  rz   rq   r!   rÎ   )r2   rÁ   rÆ   rÃ   r   r   r   Úvisit_attributionÆ  s
   ÿz HTMLTranslator.visit_attributionc                 C   s   | j  | j ¡ d ¡ d S ©Nú</p>
©r!   rq   rz   r³   rÝ   r   r   r   Údepart_attributionÌ  ó   z!HTMLTranslator.depart_attributionc                 C   s*   t |jtjƒs|  |d¡ | j d¡ d S )NÚauthorz<p>)r¸   Úparentr   Úauthorsrð   r!   rq   rÝ   r   r   r   Úvisit_authorÏ  s   zHTMLTranslator.visit_authorc                 C   s6   | j  d¡ t|jtjƒr| j  d¡ d S |  ¡  d S )Nú</p>rK   )r!   rq   r¸   r  r   r  rô   rÝ   r   r   r   Údepart_authorÔ  s   zHTMLTranslator.depart_authorc                 C   ó   |   |d¡ d S )Nr  ©rð   rÝ   r   r   r   Úvisit_authorsÛ  rç   zHTMLTranslator.visit_authorsc                 C   ó   |   ¡  d S r.   ©rô   rÝ   r   r   r   Údepart_authorsÞ  ó   zHTMLTranslator.depart_authorsc                 C   ó   | j  |  |d¡¡ d S )NÚ
blockquoterâ   rÝ   r   r   r   Úvisit_block_quoteá  ó   z HTMLTranslator.visit_block_quotec                 C   rä   )Nz</blockquote>
rå   rÝ   r   r   r   Údepart_block_quoteä  rç   z!HTMLTranslator.depart_block_quotec                 C   s2   t | jƒ}z| |¡ W dS  tjy   Y dS w )z7Check for a simple list that can be rendered compactly.FT)ÚSimpleListCheckerr5   Úwalkr   Ú	NodeFound)r2   rÁ   r6   r   r   r   Úcheck_simple_listç  s   
ýÿz HTMLTranslator.check_simple_listc                 C   sv   d|d v rdS d|d v 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 | j	dgkr6dS |  
|¡S )NÚcompactr«   TrA   FÚcontents)r¸   r   r¼   rº   rB   Úcompact_field_listsr»   r¹   Úcompact_listsr{   r"  rÝ   r   r   r   Úis_compactableø  s   ÿÿ
zHTMLTranslator.is_compactablec                 C   sb   i }| j }| j | j | jf¡ d | _|  |¡| _ | j r!|s!d|d< | j | j|dfi |¤Ž¡ d S )NÚsimpler¬   Úul)r~   rz   rq   r}   r'  r!   rÎ   )r2   rÁ   rÇ   Úold_compact_simpler   r   r   Úvisit_bullet_list  s   
 z HTMLTranslator.visit_bullet_listc                 C   s"   | j  ¡ \| _| _| j d¡ d S )Nz</ul>
)rz   r³   r~   r}   r!   rq   rÝ   r   r   r   Údepart_bullet_list  s   z!HTMLTranslator.depart_bullet_listc                 C   ó   | j  | j|dddd�¡ d S )Nr  rJ   Úcaptionr  râ   rÝ   r   r   r   Úvisit_caption  ó   zHTMLTranslator.visit_captionc                 C   rä   r  rå   rÝ   r   r   r   Údepart_caption  rç   zHTMLTranslator.depart_captionc                 C   s<   | j s| ¡ }g |d< | j | j|ddd�¡ d| _ d S d S )Nr¯   ÚdlÚcitationr  T)r‚   Úcopyr!   rq   rÎ   )r2   rÁ   Úlistnoder   r   r   Úvisit_citation   s   
ûzHTMLTranslator.visit_citationc                 C   ó<   | j  d¡ t|jddd�tjƒs| j  d¡ d| _d S d S ©Nú</dd>
FT©ÚdescendÚsiblingsú</dl>
)r!   rq   r¸   Ú	next_noder   r3  r‚   rÝ   r   r   r   Údepart_citation+  ó   ÿ
ýzHTMLTranslator.depart_citationc              	   C   sV   d}d|v r||d 7 }nd|v r|| j j|d  7 }| j | j|ddd|d�¡ d S )Nú#ÚrefidÚrefnameÚaú[zcitation-reference©rï   Úhref)r5   Únameidsr!   rq   rÎ   )r2   rÁ   rG  r   r   r   Úvisit_citation_reference2  s   

ÿz'HTMLTranslator.visit_citation_referencec                 C   rä   )Nz]</a>rå   rÝ   r   r   r   Údepart_citation_reference=  rç   z(HTMLTranslator.depart_citation_referencec                 C   r-  )NÚspanrJ   Ú
classifierr  râ   rÝ   r   r   r   Úvisit_classifierD  r0  zHTMLTranslator.visit_classifierc                 C   rä   ©Nú</span>rå   rÝ   r   r   r   Údepart_classifierG  rç   z HTMLTranslator.depart_classifierc                 C   s&   | j  |¡ |jj |j d¡¡ d S )NÚstub)r|   rq   r  ÚstubsrÅ   r²   rÝ   r   r   r   Úvisit_colspecJ  s   zHTMLTranslator.visit_colspecc                 C   sÂ   t |jddd�tjƒrd S d|jjd v s#d| jjv r%d|jjd vr%d S tdd„ | jD ƒƒ}| j	 
|  |d	¡¡ | jD ]}t|d
 d | d ƒ}| j	 
| j|dd| d�¡ q<| j	 
d¡ d S )NFTr:  zcolwidths-autor«   zcolwidths-givenc                 s   s   � | ]}|d  V  qdS )ÚcolwidthNr   )rd   rÁ   r   r   r   Ú	<genexpr>X  s   € z0HTMLTranslator.depart_colspec.<locals>.<genexpr>ÚcolgrouprT  g      Y@g      à?Úcolzwidth: %i%%)Ústylez</colgroup>
)r¸   r>  r   Úcolspecr  rB   Útable_styleÚsumr|   r!   rq   rÎ   rt   rÏ   )r2   rÁ   Útotal_widthrT  r   r   r   Údepart_colspecO  s    ÿ

ÿzHTMLTranslator.depart_colspecz-(?=-)c                 C   s    | j  d|d| ¡ ƒ ¡ tj‚)z%Escape double-dashes in comment text.z<!-- %s -->
z- )r!   rq   r‰   r   ÚSkipNode)r2   rÁ   r–   r   r   r   Úvisit_comment`  s   zHTMLTranslator.visit_commentc                 C   sp   | j  | j|ddd�¡ t|ƒdkr4|d d  d¡ |d d  d	¡ |dd… D ]}|d  d
¡ q*d S d S )Nr÷   Úcompoundr  rh   r   r«   zcompound-firstéÿÿÿÿzcompound-lastzcompound-middle©r!   rq   rÎ   Úlen)r2   rÁ   rÙ   r   r   r   Úvisit_compoundg  s   üzHTMLTranslator.visit_compoundc                 C   rä   rú   rå   rÝ   r   r   r   Údepart_compoundo  rç   zHTMLTranslator.depart_compoundc                 C   ó   | j  | j|ddd�¡ d S )Nr÷   zdocutils containerr  râ   rÝ   r   r   r   Úvisit_containerr  ó   zHTMLTranslator.visit_containerc                 C   rä   rú   rå   rÝ   r   r   r   Údepart_containeru  rç   zHTMLTranslator.depart_containerc                 C   ó   | j |ddd� d S )NÚcontactFrì   r  rÝ   r   r   r   Úvisit_contactx  r3   zHTMLTranslator.visit_contactc                 C   r  r.   r  rÝ   r   r   r   Údepart_contact{  r  zHTMLTranslator.depart_contactc                 C   r  )NÚ	copyrightr  rÝ   r   r   r   Úvisit_copyright~  rç   zHTMLTranslator.visit_copyrightc                 C   r  r.   r  rÝ   r   r   r   Údepart_copyright�  r  zHTMLTranslator.depart_copyrightc                 C   r  )NÚdater  rÝ   r   r   r   Ú
visit_date„  rç   zHTMLTranslator.visit_datec                 C   r  r.   r  rÝ   r   r   r   Údepart_date‡  r  zHTMLTranslator.depart_datec                 C   rÜ   r.   r   rÝ   r   r   r   Úvisit_decorationŠ  rß   zHTMLTranslator.visit_decorationc                 C   rÜ   r.   r   rÝ   r   r   r   Údepart_decoration�  rß   z HTMLTranslator.depart_decorationc                 C   s&   | j  d¡ | j  |  |dd¡¡ d S )Nú</dt>
ÚddrJ   râ   rÝ   r   r   r   Úvisit_definition�  s   zHTMLTranslator.visit_definitionc                 C   rä   ©Nr9  rå   rÝ   r   r   r   Údepart_definition”  rç   z HTMLTranslator.depart_definitionc                 C   s8   |  dg ¡}|  |¡r| d¡ | j |  |d¡¡ d S )Nr«   r(  r2  )Ú
setdefaultr'  rq   r!   rÎ   ©r2   rÁ   r«   r   r   r   Úvisit_definition_list—  s   

z$HTMLTranslator.visit_definition_listc                 C   rä   ©Nr=  rå   rÝ   r   r   r   Údepart_definition_list�  rç   z%HTMLTranslator.depart_definition_listc                 C   s|   |  dg ¡|jd   dg ¡ |jd d< |  dg ¡|jd   dg ¡ |jd d< |  dg ¡|jd   dg ¡ |jd d< d S )Nr«   r   r¯   Únames)r²   rØ   rÝ   r   r   r   Úvisit_definition_list_item   s   ÿÿÿz)HTMLTranslator.visit_definition_list_itemc                 C   rÜ   r.   r   rÝ   r   r   r   Údepart_definition_list_item©  rß   z*HTMLTranslator.depart_definition_list_itemc                 C   rà   )Nrw  rJ   râ   rÝ   r   r   r   Úvisit_description¬  r  z HTMLTranslator.visit_descriptionc                 C   rä   ry  rå   rÝ   r   r   r   Údepart_description¯  rç   z!HTMLTranslator.depart_descriptionc                 C   sD   | j  t| jƒ¡ d}|  |¡r|d7 }| j | j|d|d�¡ d S )Nr    ú simpler2  r  )rz   rq   rc  r!   r'  rÎ   r|  r   r   r   Úvisit_docinfo²  s
   
zHTMLTranslator.visit_docinfoc                 C   s0   | j  d¡ | j ¡ }| j |d … | _g | _ d S r~  )r!   rq   rz   r³   r    )r2   rÁ   Ústartr   r   r   Údepart_docinfo¹  s   

zHTMLTranslator.depart_docinfoTc                 C   s^   |rd||   | ¡ ¡f }|  |¡ | j d|| jj| f ¡ | j | j|dd|d�¡ d S )Nz <meta name="%s" content="%s" />
z<dt class="%s">%s</dt>
rw  rJ   r  )rš   r‰   Úadd_metar!   rq   rn   ÚlabelsrÎ   )r2   rÁ   rÈ   r'   Úmeta_tagr   r   r   rð   ¿  s   ÿ
ÿz!HTMLTranslator.visit_docinfo_itemc                 C   rä   ry  rå   r1   r   r   r   rô   È  rç   z"HTMLTranslator.depart_docinfo_itemc                 C   r-  )Nrí   rJ   zcode python doctestrî   râ   rÝ   r   r   r   Úvisit_doctest_blockË  s   ÿz"HTMLTranslator.visit_doctest_blockc                 C   rä   rò   rå   rÝ   r   r   r   Údepart_doctest_blockÏ  rç   z#HTMLTranslator.depart_doctest_blockc                 C   s:   |  dd¡ptj |d ¡pd}| j d|  |¡ ¡ d S )Nr#   rJ   Úsourcezdocutils document without titlez<title>%s</title>
)r²   Úosre   Úbasenamer   rq   rŒ   )r2   rÁ   r#   r   r   r   Úvisit_documentÒ  s   ÿzHTMLTranslator.visit_documentc                 C   sD  | j  | j| jd| jji g¡ | j | j¡ | j 	d| j
| jj ¡ | j 	d| j
| jj ¡ dd | j¡v r=| j d¡ | jrT| jdkrM| j | j¡ n| j | j¡ | j | jdd … ¡ | j | j|dd	d
�¡ | j 	dd¡ | j | j¡ | j | jdd … | j | j | j | jd d…  ¡ | jr J dt| jƒ ƒ‚d S )Nr\   r   zname="dcterms.rJ   z=<link rel="schema.dcterms" href="http://purl.org/dc/terms/"/>Úmathjaxrh   r÷   r5   r  rû   ra  zlen(context) = %s)r   r·   ÚdoctypeÚhead_prefix_templaterB   rk   r)   rq   r'   rø   rƒ   rP   r   rN   r‡   rv   r   r*   r   rÎ   r"   r(   r!   r-   r   r    rz   rc  rÝ   r   r   r   Údepart_document×  s8   

ÿÿÿ
ÿÿþzHTMLTranslator.depart_documentc                 C   rà   )NÚemrJ   râ   rÝ   r   r   r   Úvisit_emphasisð  r  zHTMLTranslator.visit_emphasisc                 C   rä   )Nz</em>rå   rÝ   r   r   r   Údepart_emphasisó  rç   zHTMLTranslator.depart_emphasisc                 C   sü   dg i}t |jjtjƒr|d  d¡ |jjjj|jj r$|d  d¡ |d r4d}d |d ¡|d< nd}|d= |j jd7  _d|v rM|d d |d	< d
|v rc|d
 d |d< |j j|d
 7  _| j | j	||dfi |¤Ž¡ | j
 d| ¡  ¡ d S )Nr¬   r   rQ  Úthr•   Útdrh   ÚmorerowsÚrowspanÚmorecolsÚcolspanrJ   z</%s>
)r¸   r  r   Útheadrq   rR  ÚcolumnrN   r!   rÎ   rz   ry   )r2   rÁ   rÇ   rÂ   r   r   r   Úvisit_entryö  s$   zHTMLTranslator.visit_entryc                 C   ó   | j  | j ¡ ¡ d S r.   r
  rÝ   r   r   r   Údepart_entry  ó   zHTMLTranslator.depart_entryc                 C   sn   i }d|v r|d |d< d|v r|d |d< |   |¡r'| dd¡d  ¡ |d< | j | j|dfi |¤Ž¡ d S )Nr‡  Úenumtyper¬   rJ   r…  Úol)r'  r²   rµ   r!   rq   rÎ   ©r2   rÁ   rÇ   r   r   r   Úvisit_enumerated_list  s   
 z$HTMLTranslator.visit_enumerated_listc                 C   rä   )Nz</ol>
rå   rÝ   r   r   r   Údepart_enumerated_list  rç   z%HTMLTranslator.depart_enumerated_listc                 C   s2   d}|   |¡r|d7 }| j | j|d|d�¡ d S )Nz
field-listr…  r2  r  )r'  r!   rq   rÎ   r|  r   r   r   Úvisit_field_list  s   
zHTMLTranslator.visit_field_listc                 C   rä   r~  rå   rÝ   r   r   r   Údepart_field_list'  rç   z HTMLTranslator.depart_field_listc                 C   rÜ   r.   r   rÝ   r   r   r   Úvisit_field*  rß   zHTMLTranslator.visit_fieldc                 C   rÜ   r.   r   rÝ   r   r   r   Údepart_field-  rß   zHTMLTranslator.depart_fieldc              
   C   s*   | j  | j|ddd |jd ¡d�¡ d S )NÚdtrJ   r«   r  )r!   rq   rÎ   rN   r  rÝ   r   r   r   Úvisit_field_name2  s   ÿzHTMLTranslator.visit_field_namec                 C   rä   )Nrv  rå   rÝ   r   r   r   Údepart_field_name6  rç   z HTMLTranslator.depart_field_namec              
   C   s@   | j  | j|ddd |jd ¡d�¡ |js| j  d¡ d S d S )Nrw  rJ   r«   r  z<p></p>)r!   rq   rÎ   rN   r  rØ   rÝ   r   r   r   Úvisit_field_body9  s   ÿÿzHTMLTranslator.visit_field_bodyc                 C   rä   ry  rå   rÝ   r   r   r   Údepart_field_body@  rç   z HTMLTranslator.depart_field_bodyc                 C   sd   ddi}|  d¡rd|d  |d< |  d¡r"|d  d|d  7  < | j | j|dfi |¤Ž¡ d S )	Nr¬   ÚfigureÚwidthú	width: %srX  Úalignz align-r÷   )r²   r!   rq   rÎ   r§  r   r   r   Úvisit_figureC  s   

 zHTMLTranslator.visit_figurec                 C   rä   rú   rå   rÝ   r   r   r   Údepart_figureK  rç   zHTMLTranslator.depart_figurec                 C   ó   | j  t| jƒ¡ d S r.   ©rz   rq   rc  r!   rÝ   r   r   r   Úvisit_footerO  r¤  zHTMLTranslator.visit_footerc                 C   sf   | j  ¡ }| j|ddd�dg}| | j|d … ¡ | d¡ | j |¡ || jd d…< | j|d …= d S )Nr÷   r&   r  z<hr class="footer" />
z
</div>
r   )rz   r³   rÎ   r·   r!   rq   r&   r"   )r2   rÁ   r‡  r&   r   r   r   Údepart_footerR  s   
ÿ
zHTMLTranslator.depart_footerc                 C   sH   | j s"| ¡ }g |d< d| jj }| j | j|d|d�¡ d| _ d S d S )Nr¯   z	footnote r2  r  T)r‚   r4  rB   Úfootnote_referencesr!   rq   rÎ   )r2   rÁ   r5  r«   r   r   r   Úvisit_footnote_  s   
úzHTMLTranslator.visit_footnotec                 C   r7  r8  )r!   rq   r¸   r>  r   Úfootnoter‚   rÝ   r   r   r   Údepart_footnoteh  r@  zHTMLTranslator.depart_footnotec              	   C   s8   d|d  }d| j j }| j | j|dd||d�¡ d S )NrA  rB  zfootnote-reference rD  rJ   rF  )rB   r½  r!   rq   rÎ   )r2   rÁ   rG  r«   r   r   r   Úvisit_footnote_referenceo  s
   ÿz'HTMLTranslator.visit_footnote_referencec                 C   rä   )Nú</a>rå   rÝ   r   r   r   Údepart_footnote_referenceu  rç   z(HTMLTranslator.depart_footnote_referencec                 C   s:   d|d v r|  ¡  d¡}| j d|  |¡ ¡ tj‚d S )NÚsectnumr«   õ   Â z <span class="sectnum">%s</span> )r‰   rO   r!   rq   rŒ   r   r^  )r2   rÁ   rÄ  r   r   r   Úvisit_generatedy  s   ÿúzHTMLTranslator.visit_generatedc                 C   rÜ   r.   r   rÝ   r   r   r   Údepart_generated‚  rß   zHTMLTranslator.depart_generatedc                 C   r¹  r.   rº  rÝ   r   r   r   Úvisit_header…  r¤  zHTMLTranslator.visit_headerc                 C   sb   | j  ¡ }| j|ddd�g}| | j|d … ¡ | d¡ | j |¡ | j |¡ | j|d …= d S )Nr÷   r%   r  z
<hr class="header"/>
</div>
)rz   r³   rÎ   r·   r!   rq   r   r%   )r2   rÁ   r‡  r%   r   r   r   Údepart_headerˆ  s   

zHTMLTranslator.depart_headerc              
   C   s`  i }|d }t  |¡d }d|v r|d |d< d|v r!|d |d< d|v r£trvd|v r/d|v sv| jjrvt|ƒ}ztj | t	 
¡ ¡¡}W n ttfyO   Y n'w | jj | dd¡¡ d|vrhd|jd  |d< d|vrud|jd	  |d< ~d
D ]*}||v r¢t d|| ¡}|sŠJ ‚dt| d	¡ƒt|d ƒd  | d¡f ||< qxg }	d
D ]$}||v rËt d|| ¡r½||  d7  < |	 d||| f ¡ ||= q§|	rÕd |	¡|d< t|jtjƒsët|jtjƒrît|jjtjƒsîd}
nd}
d|v rüd|d  |d< | jj�sd|v �rpd}|�sd}| jj�sd}ztt|ƒdƒ�}| ¡ }W d   ƒ n	1 �s,w   Y  W n t�yH } z	|j}W Y d }~nd }~ww |�rX| jj  !d||f ¡ n| jj | dd¡¡ t" #|¡ $¡ }d||f }|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%dpxrh   )r´  rÊ  z([0-9.]+)(\S*)$z%s%séd   é   z	^[0-9.]+$Úpxz%s: %s;r•   rX  rJ   rK   r¶  úalign-%sr¬   Úembedzunknown MIME typezfile insertion disabled.r?   zCannot embed image %r: %szdata:%s;base64,%szapplication/x-shockwave-flashÚtypeÚobjectÚdataÚaltz	</object>ÚimgÚsrc))Ú	mimetypesÚ
guess_typer   rB   Úfile_insertion_enabledr   ÚImagerA   rŒ   ÚsysÚgetfilesystemencodingr    ÚUnicodeEncodeErrorrž   rŸ   r�   ÚsizeÚreÚmatchÚfloatÚgrouprq   rN   r¸   r  r   ÚTextElementÚ	referenceÚembed_imagesrE   r¡   r5   rm   r¢   Úbase64Ú	b64encodeÚdecoderÎ   r²   rÏ   r!   )r2   rÁ   rÇ   r�   ÚmimetypeÚ	imagepathr×  Úatt_namerâ  rX  rÃ   Úerr_msgÚ	imagefileÚ	imagedatar©   Údata64Útagr   r   r   Úvisit_image‘  s¶   ÿÿÿ
ÿ
þ€€ÿþ

ÿ€€ÿ
ÿ
ÿ

ÿÿÿzHTMLTranslator.visit_imagec                 C   rÜ   r.   r   rÝ   r   r   r   Údepart_imageç  rß   zHTMLTranslator.depart_imagec                 C   rà   )NrK  rJ   râ   rÝ   r   r   r   Úvisit_inlineê  r  zHTMLTranslator.visit_inlinec                 C   rä   rN  rå   rÝ   r   r   r   Údepart_inlineí  rç   zHTMLTranslator.depart_inlinec                 C   s�   t |jtjƒr| jj}nd}| j | j|jdddd�¡ | j | j|dd|d�¡ | jj	rD|jd }t
|ƒdkrF| j d	|d
  ¡ d S d S d S )NÚbracketsr®  rJ   Úlabelr  rK  Úbackrefsrh   z!<a class="fn-backref" href="#%s">r   )r¸   r  r   r¿  rB   r½  r!   rq   rÎ   Úfootnote_backlinksrc  )r2   rÁ   r«   rù  r   r   r   Úvisit_labelñ  s   


ÿýzHTMLTranslator.visit_labelc                 C   s„   | j jr|jd }t|ƒdkr| j d¡ | j d¡ | j jr:t|ƒdkr:dd„ t|dƒD ƒ}| j dd |¡ ¡ | j d	¡ d S )
Nrù  rh   rÂ  rO  c                 S   s   g | ]
\}}d ||f ‘qS )ú<a href="#%s">%s</a>r   )rd   ÚiÚrefr   r   r   rf     s    ÿz/HTMLTranslator.depart_label.<locals>.<listcomp>z$<span class="fn-backref">(%s)</span>ú,z
</dt>
<dd>)rB   rú  r  rc  r!   rq   Ú	enumeraterN   )r2   rÁ   rù  Ú	backlinksr   r   r   Údepart_label   s   
ÿÿzHTMLTranslator.depart_labelc                 C   rf  )Nr÷   Úlegendr  râ   rÝ   r   r   r   Úvisit_legend  rh  zHTMLTranslator.visit_legendc                 C   rä   rú   rå   rÝ   r   r   r   Údepart_legend  rç   zHTMLTranslator.depart_legendc                 C   s6   | j  | j|dddd�¡ t|ƒs| j  d¡ d S d S )Nr÷   rJ   Úlinerî   z<br />rb  rÝ   r   r   r   Ú
visit_line  s   ÿzHTMLTranslator.visit_linec                 C   rä   rú   rå   rÝ   r   r   r   Údepart_line  rç   zHTMLTranslator.depart_linec                 C   rf  )Nr÷   z
line-blockr  râ   rÝ   r   r   r   Úvisit_line_block  rh  zHTMLTranslator.visit_line_blockc                 C   rä   rú   rå   rÝ   r   r   r   Údepart_line_block  rç   z HTMLTranslator.depart_line_blockc                 C   rà   )NÚlirJ   râ   rÝ   r   r   r   Úvisit_list_item!  r  zHTMLTranslator.visit_list_itemc                 C   rä   )Nz</li>
rå   rÝ   r   r   r   Údepart_list_item$  rç   zHTMLTranslator.depart_list_itemc                 C   sÞ   |  dg ¡}d|v r dd„ |D ƒ|d< | j |  |dd¡¡ d S | j | j|dddd�¡ | ¡ }t|jtjƒs>| 	d	d
¡}| j
 |¡D ]!}| ¡ r\| j |¡r\| j d|  |¡ ¡ qD| j |  |¡¡ qD| j d¡ tj‚)Nr«   Úcodec                 S   s   g | ]}|d kr|‘qS )r  r   ©rd   rÊ   r   r   r   rf   -  s    z0HTMLTranslator.visit_literal.<locals>.<listcomp>rJ   rK  zdocutils literalr  rK   r•   z<span class="pre">%s</span>rO  )r²   r!   rq   rÎ   r‰   r¸   r  r   Úliteral_blockr�   Úwords_and_spacesÚfindallrµ   Úin_word_wrap_pointÚsearchrŒ   r^  )r2   rÁ   r«   r‹   Útokenr   r   r   Úvisit_literal(  s&   ÿÿzHTMLTranslator.visit_literalc                 C   rä   )Nú</code>rå   rÝ   r   r   r   Údepart_literalB  s   zHTMLTranslator.depart_literalc                 C   s>   | j  | j|dddd�¡ d| dg ¡v r| j  d¡ d S d S )Nrí   rJ   úliteral-blockr  r  r«   z<code>)r!   rq   rÎ   r²   rÝ   r   r   r   Úvisit_literal_blockF  s   ÿz"HTMLTranslator.visit_literal_blockc                 C   s,   d|  dg ¡v r| j d¡ | j d¡ d S )Nr  r«   r  z</pre>
)r²   r!   rq   rÝ   r   r   r   Údepart_literal_blockK  s   z#HTMLTranslator.depart_literal_block)r÷   rJ   rJ   )r÷   rK  Úformula)r÷   rK  Úmath)rí   Úttr  ©Úmathmlr   r’  ÚlatexrJ   c              
      s�  ˆ j ˆ jvrˆ jj dˆ j  ¡ dˆ _ ˆ jˆ j  |dk }ˆ jˆ j  d }dddddœ}|ˆ j  |dk }ˆ j d	krFˆ jrDˆ jd
 dkrFd }| ¡  tj	¡}|rgz	||||f }W n t
yf   || }Y nw ˆ j dv rqˆ  |¡}ˆ j dkr§ˆ js§zˆ jd
 ˆ _W n ty‘   ˆ jj d¡ Y nw dˆ jvržˆ  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�rŽdˆ jv ráˆ jˆ _ˆ jˆ _d ˆ j¡ ¡ }zA|dkr÷t |ˆ jj¡}n2|dk�rt |ˆ jj¡}n$|dk�rtj|| ˆ jjd�}n|�s"tj || d�}nˆ jj d¡ W nc t!�y6   t!dƒ‚ t"�y� }	 zKˆ jjj|	|d�}
ˆ  #|
¡ ˆ j$ %ˆ  &|d¡¡ ˆ j$ %d |	j'¡¡ ˆ j$ %d¡ ˆ j$ %ˆ j&|d d!d"�¡ ˆ j$ %ˆ  |¡¡ ˆ j$ %d#¡ ˆ  (|
¡ t)j*‚d }	~	ww |�r¢ˆ j$ %ˆ j&||d$t+|ƒ |d%�¡ ˆ j$ %|¡ |�r±ˆ j$ %d$¡ |�r¼ˆ j$ %d&| ¡ |�rÅˆ j$ %d$¡ t)j*‚)'Nz=math-output format "%s" not supported falling back to "latex"r!  rJ   rÏ  )z$%s$ú\begin{%s}
%s
\end{%s})z\(%s\)r"  )NNr  r   r   Ú	blahtexml)r!  r’  r’  z@No MathJax URL specified, using local fallback (see config.html)ú?z?config=TeX-AMS_CHTMLr   c                    s"   g | ]}ˆ   t |ˆ jj¡¡‘qS r   )rc   r	   Úfind_file_in_dirsrB   Ústylesheet_dirs)rd   Úsr1   r   r   rf   ˆ  s
    þÿz-HTMLTranslator.visit_math.<locals>.<listcomp>rÿ  zXHTML 1r•   ÚlatexmlÚttm)Úinlinerm   )r*  z3option "%s" not supported with math-output "MathML"zis "latexmlmath" in your PATH?)Ú	base_noder  r	  rí   r  r  ró   rK   rî   ú</%s>),rv   Ú	math_tagsr5   rm   r¢   rx   r‰   r>   r   Úuni2tex_tableÚ	TypeErrorrŒ   r‡   Úmathjax_urlrÕ   ÚwarningÚmathjax_scriptrw   r   ÚDocumentParametersÚdisplaymoder“  Údoctype_mathmlÚcontent_type_mathmlrƒ   rN   ry   r   r(  r)  r#  r   Ú
tex2mathmlÚOSErrorÚSyntaxErrorÚvisit_system_messager!   rq   rÎ   ÚargsÚdepart_system_messager   r^  Úbool)r2   rÁ   Úmath_envrò  ÚclsargÚwrappersÚwrapperÚ	math_codeÚ	converterr©   Úerr_noder   r1   r   Ú
visit_math\  sÄ   ÿÿüÿ

ÿ


þ
ÿ
ÿ
þÿ€
ÿ
€õ
þzHTMLTranslator.visit_mathc                 C   rÜ   r.   r   rÝ   r   r   r   Údepart_mathÁ  rß   zHTMLTranslator.depart_mathc                 C   s   t | ¡ ƒ}| j||d� d S )N)r>  )r   r‰   rE  )r2   rÁ   r>  r   r   r   Úvisit_math_blockÄ  s   zHTMLTranslator.visit_math_blockc                 C   rÜ   r.   r   rÝ   r   r   r   Údepart_math_blockÈ  rß   z HTMLTranslator.depart_math_blockc                 C   s&   | j |dfi | ¡ ¤Ž}|  |¡ d S )Nr'   )rÏ   Únon_default_attributesr‰  )r2   rÁ   r'   r   r   r   Ú
visit_metaÍ  ó   zHTMLTranslator.visit_metac                 C   rÜ   r.   r   rÝ   r   r   r   Údepart_metaÑ  rß   zHTMLTranslator.depart_metac                 C   s   | j  |¡ | j |¡ d S r.   )r'   rq   r   )r2   rò  r   r   r   r‰  Ô  s   zHTMLTranslator.add_metac                 C   r-  )NrK  rJ   Úoptionr  râ   rÝ   r   r   r   Úvisit_optionØ  r0  zHTMLTranslator.visit_optionc                 C   s6   | j  d¡ t|jddd�tjƒr| j  d¡ d S d S )NrO  FTr:  ú, )r!   rq   r¸   r>  r   rM  rÝ   r   r   r   Údepart_optionÛ  s   ÿþzHTMLTranslator.depart_optionc                 C   s.   | j  | dd¡¡ | j  |  |dd¡¡ d S )NÚ	delimiterr•   ÚvarrJ   )r!   rq   r²   rÎ   rÝ   r   r   r   Úvisit_option_argumentá  s   z$HTMLTranslator.visit_option_argumentc                 C   rä   )Nz</var>rå   rÝ   r   r   r   Údepart_option_argumentå  rç   z%HTMLTranslator.depart_option_argumentc                 C   s&   | j  |  |dd¡¡ | j  d¡ d S )Nr®  rJ   z<kbd>râ   rÝ   r   r   r   Úvisit_option_groupè  s   z!HTMLTranslator.visit_option_groupc                 C   rä   )Nz</kbd></dt>
rå   rÝ   r   r   r   Údepart_option_groupì  rç   z"HTMLTranslator.depart_option_groupc                 C   rf  )Nr2  zoption-listr  râ   rÝ   r   r   r   Úvisit_option_listï  s   ÿz HTMLTranslator.visit_option_listc                 C   rä   r~  rå   rÝ   r   r   r   Údepart_option_listó  rç   z!HTMLTranslator.depart_option_listc                 C   rÜ   r.   r   rÝ   r   r   r   Úvisit_option_list_itemö  rß   z%HTMLTranslator.visit_option_list_itemc                 C   rÜ   r.   r   rÝ   r   r   r   Údepart_option_list_itemù  rß   z&HTMLTranslator.depart_option_list_itemc                 C   rÜ   r.   r   rÝ   r   r   r   Úvisit_option_stringü  rß   z"HTMLTranslator.visit_option_stringc                 C   rÜ   r.   r   rÝ   r   r   r   Údepart_option_stringÿ  rß   z#HTMLTranslator.depart_option_stringc                 C   r  )NÚorganizationr  rÝ   r   r   r   Úvisit_organization  rç   z!HTMLTranslator.visit_organizationc                 C   r  r.   r  rÝ   r   r   r   Údepart_organization  r  z"HTMLTranslator.depart_organizationc                 C   rà   )Nr  rJ   râ   rÝ   r   r   r   Úvisit_paragraph  r  zHTMLTranslator.visit_paragraphc                 C   sB   | j  d¡ t|jtjtjfƒrt|jƒdks| j  d¡ d S d S )Nr  rh   rK   )r!   rq   r¸   r  r   Ú	list_itemÚentryrc  rÝ   r   r   r   Údepart_paragraph  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 )NrB  z<a href="#%s">rÂ  rJ   rK  Úproblematicr  )Úhasattrr!   rq   rz   rÎ   rÝ   r   r   r   Úvisit_problematic   s
   
z HTMLTranslator.visit_problematicc                 C   s"   | j  d¡ | j  | j ¡ ¡ d S rN  r
  rÝ   r   r   r   Údepart_problematic(  s   z!HTMLTranslator.depart_problematicc                 C   sx   d|  dd¡ ¡ v r9t|jtjƒrdpd}|d r%| j | j||dd�¡ | j | 	¡ ¡ |d r9| j d| ¡ tj
‚)	Nr   ÚformatrJ   rK  r÷   r«   )rÃ   r,  )r²   rw   r¸   r  r   rå  r!   rq   rÎ   r‰   r^  )r2   rÁ   Útr   r   r   Ú	visit_raw,  s   zHTMLTranslator.visit_rawc                 C   s  ddi}d|v r.|d |d< | j jr%|d  d¡r%|  |d ¡|d< d| _|d  d7  < nd|v s6J 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rqt|d tjƒssJ ‚|d  d7  < | j | j|ddfi |¤Ž¡ d S )Nr¬   ræ  ÚrefurirG  zmailto:Tz	 externalrB  z3References must have "refuri" or "refid" attribute.rA  z	 internalrh   r   z image-referencerD  rJ   )rB   r—   r´   r‘   r…   rc  r¸   r   Úimager  rå  r!   rq   rÎ   r§  r   r   r   Úvisit_reference7  s(   ÿ
ÿ "zHTMLTranslator.visit_referencec                 C   s0   | j  d¡ t|jtjƒs| j  d¡ d| _d S )NrÂ  rK   F)r!   rq   r¸   r  r   rå  r…   rÝ   r   r   r   Údepart_referenceL  s   
zHTMLTranslator.depart_referencec                 C   rj  )NÚrevisionFrì   r  rÝ   r   r   r   Úvisit_revisionR  r3   zHTMLTranslator.visit_revisionc                 C   r  r.   r  rÝ   r   r   r   Údepart_revisionU  r  zHTMLTranslator.depart_revisionc                 C   s    | j  |  |dd¡¡ d|_d S )NÚtrrJ   r   )r!   rq   rÎ   r   rÝ   r   r   r   Ú	visit_rowX  s   
zHTMLTranslator.visit_rowc                 C   rä   )Nz</tr>
rå   rÝ   r   r   r   Ú
depart_row\  rç   zHTMLTranslator.depart_rowc                 C   r-  )Nr  rJ   Úrubricr  râ   rÝ   r   r   r   Úvisit_rubric_  r0  zHTMLTranslator.visit_rubricc                 C   rä   r  rå   rÝ   r   r   r   Údepart_rubricb  rç   zHTMLTranslator.depart_rubricc                 C   s*   |  j d7  _ | j | j|ddd�¡ d S )Nrh   r÷   Úsectionr  )rs   r!   rq   rÎ   rÝ   r   r   r   Úvisit_sectione  s   ÿzHTMLTranslator.visit_sectionc                 C   s   |  j d8  _ | j d¡ d S )Nrh   rû   )rs   r!   rq   rÝ   r   r   r   Údepart_sectionj  s   zHTMLTranslator.depart_sectionc                 C   s"   | j  | j|ddd�¡ d| _d S )Nr÷   Úsidebarr  T)r!   rq   rÎ   r�   rÝ   r   r   r   Úvisit_sidebaro  s   ÿ
zHTMLTranslator.visit_sidebarc                 C   s   | j  d¡ d| _d S )Nrû   F)r!   rq   r�   rÝ   r   r   r   Údepart_sidebart  ó   
zHTMLTranslator.depart_sidebarc                 C   rj  )NÚstatusFrì   r  rÝ   r   r   r   Úvisit_statusx  r3   zHTMLTranslator.visit_statusc                 C   r  r.   r  rÝ   r   r   r   Údepart_status{  r  zHTMLTranslator.depart_statusc                 C   rà   )NÚstrongrJ   râ   rÝ   r   r   r   Úvisit_strong~  r  zHTMLTranslator.visit_strongc                 C   rä   )Nz	</strong>rå   rÝ   r   r   r   Údepart_strong�  rç   zHTMLTranslator.depart_strongc                 C   rà   )Nr–   rJ   râ   rÝ   r   r   r   Úvisit_subscript„  r  zHTMLTranslator.visit_subscriptc                 C   rä   )Nz</sub>rå   rÝ   r   r   r   Údepart_subscript‡  rç   zHTMLTranslator.depart_subscriptc                 C   ó   t j‚)zInternal only.©r   r^  rÝ   r   r   r   Úvisit_substitution_definitionŠ  ó   z,HTMLTranslator.visit_substitution_definitionc                 C   s   |   |¡ d S r.   )Úunimplemented_visitrÝ   r   r   r   Úvisit_substitution_referenceŽ  s   z+HTMLTranslator.visit_substitution_referencec                 C   sh   t |jtjƒr
d}nt |jtjƒrd}t| jƒd | _n	t |jtjƒr%d}| j 	| j
|dd|d�¡ d S )Nzsidebar-subtitler$   rh   zsection-subtitler  rJ   r  )r¸   r  r   r{  r5   rc  r!   r„   rx  rq   rÎ   r|  r   r   r   Úvisit_subtitle•  s   zHTMLTranslator.visit_subtitlec                 C   sb   | j  d¡ t|jtjƒr/| j | jd… | _d| _| j 	| j ¡ | j
 	| j ¡ | j d d …= d S d S )Nr	  ra  r   )r!   rq   r¸   r  r   r5   r„   r$   r   r·   r,   rÝ   r   r   r   Údepart_subtitleŸ  s   ûzHTMLTranslator.depart_subtitlec                 C   rà   )NÚsuprJ   râ   rÝ   r   r   r   Úvisit_superscript¨  r  z HTMLTranslator.visit_superscriptc                 C   rä   )Nz</sup>rå   rÝ   r   r   r   Údepart_superscript«  rç   z!HTMLTranslator.depart_superscriptc              	   C   sÜ   | j  | j|ddd�¡ | j  d¡ d}t|d ƒrH|d }t|ƒdkr+d|d	  }nd}g }|D ]}| d
||f ¡ |d7 }q1dd |¡ }| d¡rTd|d  }nd}| j  d|d |d |  |d ¡||f ¡ d S )Nr÷   zsystem-messager  z <p class="system-message-title">rJ   rù  rh   z%; <em><a href="#%s">backlink</a></em>r   rü  z; <em>backlinks: %s</em>rO  r  z	, line %szISystem Message: %s/%s (<span class="docutils literal">%s</span>%s)%s</p>
rÓ  ÚlevelrŽ  )r!   rq   rÎ   rc  rN   re  rŒ   )r2   rÁ   Úbackref_textrù  rý  r  Úbackrefr  r   r   r   r:  ®  s2   ÿ
ÿ
ÿ
þz#HTMLTranslator.visit_system_messagec                 C   rä   rú   rå   rÝ   r   r   r   r<  È  rç   z$HTMLTranslator.depart_system_messagec                 C   s|   i }dd„ | j j d¡D ƒ}d|v r| d|d  ¡ d|v r'd|d  |d< | j|d	fd
d |¡i|¤Ž}| j |¡ d S )Nc                 S   s   g | ]}|  d ¡‘qS )z 	
)rµ   r  r   r   r   rf   Í  rg   z.HTMLTranslator.visit_table.<locals>.<listcomp>rÿ  r¶  rÑ  r´  rµ  rX  r¾   rï   r•   )rB   rZ  rw   rq   rÎ   rN   r!   )r2   rÁ   rÇ   r«   rò  r   r   r   Úvisit_tableË  s   ÿzHTMLTranslator.visit_tablec                 C   rä   )Nz	</table>
rå   rÝ   r   r   r   Údepart_tableÖ  rç   zHTMLTranslator.depart_tablec                 C   sR   d|v s!d|v s!d|v s!| j  | j|dddd�¡ | j d¡ d S | j d¡ d S )	Nrk  rB  rC  rK  rJ   Útargetr  rO  )r!   rq   rÎ   rz   rÝ   r   r   r   Úvisit_targetÙ  s
   zHTMLTranslator.visit_targetc                 C   r¢  r.   r
  rÝ   r   r   r   Údepart_targetá  r¤  zHTMLTranslator.depart_targetc                 C   r  )NÚtbodyrâ   rÝ   r   r   r   Úvisit_tbodyå  r  zHTMLTranslator.visit_tbodyc                 C   rä   )Nz	</tbody>
rå   rÝ   r   r   r   Údepart_tbodyè  rç   zHTMLTranslator.depart_tbodyc                 C   rà   )Nr®  rJ   râ   rÝ   r   r   r   Ú
visit_termë  r  zHTMLTranslator.visit_termc                 C   s   dS )zg
        Leave the end tag to `self.visit_definition()`, in case there's a
        classifier.
        Nr   rÝ   r   r   r   Údepart_termî  s   zHTMLTranslator.depart_termc                 C   s   g | _ g |_d S r.   )r|   rR  rÝ   r   r   r   Úvisit_tgroupõ  s   
zHTMLTranslator.visit_tgroupc                 C   rÜ   r.   r   rÝ   r   r   r   Údepart_tgroupù  rß   zHTMLTranslator.depart_tgroupc                 C   r  )NrŸ  râ   rÝ   r   r   r   Úvisit_theadü  r  zHTMLTranslator.visit_theadc                 C   rä   )Nz	</thead>
rå   rÝ   r   r   r   Údepart_theadÿ  rç   zHTMLTranslator.depart_theadc                 C   sÀ  d}t |jtjƒr| j | j|dddd�¡ nÁt |jtjƒr,| j | j|dddd�¡ n¬t |jtjƒrA| j | j|dddd�¡ n—t |jtj	ƒrV| j |  |dd¡¡ d	}n‚t |jtj
ƒrs| j | j|d
ddd�¡ d}t| jƒ| _net |jtjƒs|J ‚| j| j d }i }t|jƒdkršt |jd tjƒršd|d< | j | j|d| dfi |¤Ž¡ i }| d¡r¾d|d< d|d  |d< |rÔ| j | ji ddfi |¤Ž¡ d| }nd| }| j |¡ dS )z,Only 6 section levels are supported by HTML.r	  r  rJ   ztopic-titler  zsidebar-titlezadmonition-titler.  z</caption>
Úh1r#   z</h1>
rh   rÏ  zwith-subtitlerï   zh%srB  ztoc-backrefr¬   rA  rG  rD  z</a></h%s>
z</h%s>
N)r¸   r  r   Útopicr!   rq   rÎ   r{  Ú
Admonitionr¾   r5   rc  r„   rx  rs   ru   r$   re  rz   )r2   rÁ   Ú	close_tagÚh_levelrÇ   r   r   r   Úvisit_title  sR   ÿÿÿÿÿÿ

zHTMLTranslator.visit_titlec                 C   s`   | j  | j ¡ ¡ | jr.| j | jd… | _d| _| j | j ¡ | j | j ¡ | j d d …= d S d S )Nra  r   )	r!   rq   rz   r³   r„   r#   r   r·   r+   rÝ   r   r   r   Údepart_title*  s   ûzHTMLTranslator.depart_titlec                 C   rà   )NÚciterJ   râ   rÝ   r   r   r   Úvisit_title_reference3  r  z$HTMLTranslator.visit_title_referencec                 C   rä   )Nz</cite>rå   rÝ   r   r   r   Údepart_title_reference6  rç   z%HTMLTranslator.depart_title_referencec                 C   s&   | j  | j|ddd�¡ |d | _d S )Nr÷   r¤  r  r«   )r!   rq   rÎ   r{   rÝ   r   r   r   Úvisit_topic9  rK  zHTMLTranslator.visit_topicc                 C   s   | j  d¡ g | _d S rú   )r!   rq   r{   rÝ   r   r   r   Údepart_topic=  r~  zHTMLTranslator.depart_topicc                 C   rf  )NÚhrrQ   r  )r!   rq   rÏ   rÝ   r   r   r   Úvisit_transitionA  rh  zHTMLTranslator.visit_transitionc                 C   rÜ   r.   r   rÝ   r   r   r   Údepart_transitionD  rß   z HTMLTranslator.depart_transitionc                 C   rj  )NrM   Frì   r  rÝ   r   r   r   Úvisit_versionG  r3   zHTMLTranslator.visit_versionc                 C   r  r.   r  rÝ   r   r   r   Údepart_versionJ  r  zHTMLTranslator.depart_versionc                 C   s   t d|jj ƒ‚)Nz$visiting unimplemented node type: %s)ÚNotImplementedErrorÚ	__class__r   rÝ   r   r   r   r‹  M  s   ÿz"HTMLTranslator.unimplemented_visit)rK   F)rK   )r   r.   )T)rJ   )×r   r   r   Ú__doc__rp   r“  r5  r”  rƒ   ro   r2  r0  r§   r£   rá  Úcompiler  ÚUr  r¶   ÚordrŠ   rj   r‰   rŒ   r‘   r”   rš   rc   rÎ   rÏ   rÚ   rÛ   rÞ   rã   ræ   ré   rê   rñ   rõ   rù   rü   r  r  r  r  r  r  r  r  r  r"  r'  r+  r,  r/  r1  r6  r?  rI  rJ  rM  rP  rS  r]  r–   r_  rd  re  rg  ri  rl  rm  ro  rp  rr  rs  rt  ru  rx  rz  r}  r  r�  r‚  rƒ  r„  r†  rˆ  rð   rô   rŒ  r�  r‘  r•  r—  r˜  r¡  r£  r¨  r©  rª  r«  r¬  r­  r¯  r°  r±  r²  r·  r¸  r»  r¼  r¾  rÀ  rÁ  rÃ  rÆ  rÇ  rÈ  rÉ  ró  rô  rõ  rö  rû  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r-  rE  rF  rG  rH  rJ  rL  r‰  rN  rP  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r^  r_  r`  rc  rf  rg  rj  rm  rn  rp  rq  rs  rt  rv  rw  ry  rz  r|  r}  r€  r�  rƒ  r„  r…  r†  r‰  rŒ  r�  rŽ  r�  r‘  r:  r<  r•  r–  r˜  r™  r›  rœ  r�  rž  rŸ  r   r¡  r¢  r¨  r©  r«  r¬  r­  r®  r°  r±  r²  r³  r‹  r   r   r   r   r[   k   sÂ   8
ü;	
ÿ
Cý


ÿ		
			V
üe
	(	r[   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   r‡  r.   )r   r!  rÝ   r   r   r   Údefault_visit]  s   zSimpleListChecker.default_visitc                 C   sr   dd„ |j D ƒ}|r.t|d tjƒr.t|d tjƒs*t|d tjƒs*t|d tjƒr.| ¡  t|ƒdkr6d S tj	‚)Nc                 S   rÑ   r   rÒ   )rd   rÙ   r   r   r   rf   a  s    

ÿz5SimpleListChecker.visit_list_item.<locals>.<listcomp>r   ra  rh   )
rØ   r¸   r   Ú	paragraphr¹   r»   r¼   r³   rc  r!  )r2   rÁ   rØ   r   r   r   r  `  s   ÿþýz!SimpleListChecker.visit_list_itemc                 C   rÜ   r.   r   rÝ   r   r   r   Ú	pass_nodem  rß   zSimpleListChecker.pass_nodec                 C   r‡  r.   rˆ  rÝ   r   r   r   Úignore_nodep  rŠ  zSimpleListChecker.ignore_nodeN)#r   r   r   r¶  rº  r  r¼  r½  rÛ   r`  r+  r¨  r†  r  r  rñ   rl  ro  rr  r^  r€  r²  r}  r�  r�  rM  rx  rª  r¬  r±  r¯  r_  r‰  r˜  Úvisit_pendingr   r   r   r   r  R  sB    	r  )'r¶  rè  rÙ  r�  Úos.pathrá  rÝ  Ú	PIL.Imager   ÚImportErrorrÜ  rÔ  rQ   r   r	   r
   r   r   Údocutils.utils.error_reportingr   Údocutils.transformsr   Údocutils.utils.mathr   r   r   r   r   Úversion_infoÚurllib.requestr   ÚurllibÚstrrD   r   ri   r[   ÚGenericNodeVisitorr  r   r   r   r   Ú<module>   sT   
ÿ€û

7           r