o ,a` @sRdZddlZddlZddlZddlZddlZddlZzddlZWn&e yFzddl Z Gddde Ze e_ Wn e yCdZYnwYnwddl Z ddl m Z mZmZmZmZddlmZddlmZddlmZmZmZmZmZejd krdd lmZndd lmZejd kre Z!Gd d d ej"Z"Gd dde j#Z$Gddde j%Z&dS)z,common definitions for Docutils HTML writersNc@s eZdZdS)PILN)__name__ __module__ __qualname__rr=/usr/lib/python3/dist-packages/docutils/writers/_html_base.pyrs r)nodesutilswriters languagesio) SafeString) writer_aux) unichar2texpick_math_environment math2html latex2mathmltex2mathml_extern)r) url2pathnamec@sNeZdZdZ dZddiZdZdZddZd d Z d d Z d dZ ddZ dS)Writer)htmlxhtmlz template.txtoutput_encoding_error_handlerxmlcharrefreplace)r z html writers) head_prefixhead stylesheet body_prefixbody_pre_docinfodocinfobody body_suffixtitlesubtitleheaderfootermetafragment html_prolog html_head html_title html_subtitle html_bodycCstj|tjgSN)r rget_transformsr Admonitionsselfrrrr/KzWriter.get_transformscCsJ||j|_}|j||jD] }t||t||q||_dSr.) translator_classdocumentvisitor walkaboutvisitor_attributessetattrgetattrapply_templateoutput)r2r6attrrrr translateNs   zWriter.translatecCs6t|jjjd}t|d}||}||S)Nrbutf-8)openr5settingstemplateunicodereadcloseinterpolation_dict)r2 template_filerCsubsrrrr;Us zWriter.apply_templatecCsJi}|jj}|jD]}dt||d||<q |j|d<tj|d<|S)N encodingversion) r5rBr8joinr:rstripoutput_encodingdocutils __version__)r2rIrBr=rrrrG\s   zWriter.interpolation_dictcCs2tj||jD] }dt|||j|<q dSNrJ)r rassemble_partsr8rNr:parts)r2partrrrrTes  zWriter.assemble_partsN) rrr supporteddefault_templatesettings_defaultsconfig_section_dependenciesr8r/r>r;rGrTrrrrr4s rc @seZdZdZdZdZeZdZdZdZ dZ dZ d Z d Z ed Zed ejZd ZeddeddeddeddeddiZ ddZddZddZddZd d!Zed"fd#d$Zd%d&Zdd)d*Zdd+d,Zdd.d/Zd0d1Z d2d3Z!d4d5Z"d6d7Z#d8d9Z$d:d;Z%dd?Z'd@dAZ(ddCdDZ)dEdFdFdGdHZ*dIdJZ+dKdLZ,dMdNZ-dOdPZ.dQdRZ/dSdTZ0dUdVZ1dWdXZ2dYdZZ3d[d\Z4d]d^Z5d_d`Z6dadbZ7dcddZ8dedfZ9dgdhZ:didjZ;dkdlZdqdrZ?dsdtZ@edujAfdvdwZBdxdyZCdzd{ZDd|d}ZEd~dZFddZGddZHddZIddZJddZKddZLddZMddZNddZOddZPddZQddZRddZSddZTddZUddZVddZWddZXdddZYddZZddZ[ddZ\ddZ]ddZ^ddZ_ddZ`ddZaddZbddZcddZdddZeddZfdd„ZgddĄZhddƄZiddȄZjddʄZkdd̄Zldd΄ZmddЄZndd҄ZoddԄZpddքZqdd؄ZrddڄZsdd܄ZtddބZuddZvddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~ddZddZddZddZddZddZddZddZddZddZddZddZd d d d d ZdddZddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEdFZdGdHZdIdJZdKdLZdMdNZdOdPZdQdRZdSdTZdUdVZdWdXZdYdZZd[d\Zd]d^Zd_d`ZdadbZdcddZdedfZdgdhZdidjZdkdlZdmdnZdodpZdqdrZdsdtZdudvZdwdxZdydzZd{d|Zd}d~ZÐddZĐddZŐddZƐddZǐddZȐddZɐddZʐddZːddZ̐ddZ͐ddZΐddZϐddZАddZѐddZҐddZӐddZԐddZՐddZdBS(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('
') html4css1.HTMLTranslator.visit_example(self, node) def depart_example(self, node): html4css1.HTMLTranslator.depart_example(self, node) if foo: self.body.append('
') c) Extend both, calling the parent functions under the same conditions:: def visit_example(self, node): if foo: self.body.append('
') else: # call the parent method _html_base.HTMLTranslator.visit_example(self, node) def depart_example(self, node): if foo: self.body.append('
') 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(' ') This way, changes in stack use will not bite you. z% z zW z zR z2 z-file:/usr/share/javascript/mathjax/MathJax.jsz4 z% z [^ \n]+| +|\nz.+\W\W.+|[-?].+lang&z&z>@@cstj||j_}|j}t||j_j t j g_ g_ g_|jr:j j|jjjj dd_fddt|D_dg_g_g_g_g_dg_d_t|j_|j _jdd_!jd"_g_# g_$g_%d_&d_'d_(d_)d_*d_+g_,g_-g_.g_/j0g_1g_2g_3g_4d_5d_6d_7g_8dS) Ncsg|]}|qSr)stylesheet_call).0pathr1rr z+HTMLTranslator.__init__..z z rTF)9r NodeVisitor__init__rB language_coder get_languagereporterlanguage generatorrQrRr'rr)xml_declarationappendrPrr get_stylesheet_listrrrr r!r(r" section_levelintinitial_header_level math_outputsplitmath_output_optionslowercontext topic_classescolspecs compact_pcompact_simplecompact_field_list in_docinfo in_sidebarin_footnote_listr#r$r%r& content_typer*r+r,r-in_document_title in_mailtoauthor_in_authors math_header)r2r5rBlcoderr1rrjsb       zHTMLTranslator.__init__cCs6d|j|j|j|j|j|j|j|jSrS) rNrrrrrr r!r"r1rrrastext szHTMLTranslator.astextcCst|}||jS)z-Encode special characters in `text` & return.)rDr>special_characters)r2textrrrencodes zHTMLTranslator.encodecCs |ddS)z*Try to hide a mailto: URL from harvesters.ra%40replace)r2urirrr cloak_mailtos zHTMLTranslator.cloak_mailtocCs|dd}|dd}|S)z;Try to hide the link text of a email link from harversters.rbz@.z.r)r2addrrrr cloak_email!s  zHTMLTranslator.cloak_emailz[ ]cCs<||d|}|jr|jjr|dd}|dd}|S)z6Cleanse, HTML encode, and return attribute value text. rz%40rz.)rsubrrBcloak_email_addressesr)r2r whitespaceencodedrrrattval)s   zHTMLTranslator.attvalc Cs|jjrBztj|dd}|jj|Wn&ty<}zd|t|j f}|j j |d|WYd}~Sd}~ww|j |S|jjrNt|jj|}|j||S)z8Return code to reference or embed stylesheet file `path`r@) source_pathrLz!Cannot embed stylesheet '%r': %s.z <--- %s ---> N)rBembed_stylesheetr FileInputrErecord_dependenciesaddIOErrorr strerrorr5rmerrorembedded_stylesheetstylesheet_pathr relative_path _destinationstylesheet_linkr)r2recontenterrmsgrrrrc3s(  zHTMLTranslator.stylesheet_callrKFc Ks|}g}i}g}|D] \} } | || <qg} g} |dg|ddD]} | dr<| | ddq+| rI| | vrI| | q+| rS| d||j<| r\d | |d<d |vsbJ| |d gd |vry| |d |d =|r|d|d <|d dD]%}|st |t j t jt jt jt jt jt jfr|d |q|d |7}qt|}|g}|D]8\} } | dusJt | trd d| D}|d| |d |fq|d| |t| fq|rd}nd}d |dd ||f|S)z Construct and return a start tag given a node (id & class attributes are extracted), tag name, and optional attributes. classesclassrJz language- NrrididsrhzcSsg|]}t|qSr)rD)rdvrrrrf}sz+HTMLTranslator.starttag..z%s="%s"z /z<%s%s>)ryitemsgetpoprw startswithrqstriplang_attributerNextend isinstancer bullet_listr definition_listenumerated_list field_list option_listtablesortedlistrrD)r2nodetagnamesuffixempty attributesprefixattsrnamevaluerr clsrattlistrUvaluesinfixrrrstarttagFsf              zHTMLTranslator.starttagcKs|j|||fddi|S)z1Construct and return an XML-compatible empty tag.rT)r)r2rrrrrrremptytagzHTMLTranslator.emptytagrcCsBdd|D}z||}Wn tyYdSw|d|dS)z Set class `class_` on the visible child no. index of `node`. Do nothing if node has fewer children than `index`. cSg|] }t|tjs|qSrrr Invisible)rdnrrrrfsz5HTMLTranslator.set_class_on_child..Nr) IndexErrorrq)r2rclass_indexchildrenchildrrrset_class_on_childs  z!HTMLTranslator.set_class_on_childcCs:|}||}|jr|jjr||}|j|dSr.)rrrrBrrr!rq)r2rrrrrr visit_Texts   zHTMLTranslator.visit_TextcCdSr.rr2rrrr depart_TextzHTMLTranslator.depart_TextcC|j||dddS)NabbrrJr!rqrrrrrvisit_abbreviationrz!HTMLTranslator.visit_abbreviationcC|jddS)Nzr!rqrrrrdepart_abbreviationz"HTMLTranslator.depart_abbreviationcCr)NacronymrJrrrrr visit_acronymrzHTMLTranslator.visit_acronymcCr)Nz rrrrrdepart_acronymrzHTMLTranslator.depart_acronymcCs.|j|ddd|j|j|dddddS)NaddressFr'prerJrCLASS)visit_docinfo_itemr!rqrrrrr visit_addresss zHTMLTranslator.visit_addresscCs|jd|dSN )r!rqdepart_docinfo_itemrrrrdepart_addresss  zHTMLTranslator.depart_addresscCs(|ddd|j||ddS)Nrr admonitiondiv)insertr!rqrrrrrvisit_admonitionszHTMLTranslator.visit_admonitionNcCrN rrrrrdepart_admonitionrz HTMLTranslator.depart_admonition)u—rJ)())rJrJ)dash parenthesesparensnonecCs<|j|jj\}}|j||j|j|d|dddS)Np attributionr)attribution_formatsrBrrzrqr!r)r2rrrrrrvisit_attributions  z HTMLTranslator.visit_attributioncCs|j|jddSN

r!rqrzrrrrrdepart_attributionz!HTMLTranslator.depart_attributioncCs*t|jtjs ||d|jddS)Nauthorz

)rparentrauthorsrr!rqrrrr visit_authors zHTMLTranslator.visit_authorcCs6|jdt|jtjr|jddS|dS)N

rK)r!rqrrrrrrrrr depart_authors  zHTMLTranslator.depart_authorcC||ddS)Nrrrrrr visit_authorsrzHTMLTranslator.visit_authorscC |dSr.rrrrrdepart_authors zHTMLTranslator.depart_authorscC|j||ddS)N blockquoterrrrrvisit_block_quotez HTMLTranslator.visit_block_quotecCr)Nz rrrrrdepart_block_quoterz!HTMLTranslator.depart_block_quotecCs2t|j}z||WdStjyYdSw)z7Check for a simple list that can be rendered compactly.FT)SimpleListCheckerr5walkr NodeFound)r2rr6rrrcheck_simple_lists  z HTMLTranslator.check_simple_listcCsvd|dvrdSd|dvrdSt|tjtjfr|jjsdSt|tjtjfr.|jjs.dS|j dgkr6dS| |S)NcompactrTrAFcontents) rrrrrBcompact_field_listsrr compact_listsr{r"rrrris_compactables    zHTMLTranslator.is_compactablecCsbi}|j}|j|j|jfd|_|||_|jr!|s!d|d<|j|j|dfi|dS)Nsimplerul)r~rzrqr}r'r!r)r2rrold_compact_simplerrrvisit_bullet_list s   z HTMLTranslator.visit_bullet_listcCs"|j\|_|_|jddS)Nz )rzrr~r}r!rqrrrrdepart_bullet_listsz!HTMLTranslator.depart_bullet_listcC|j|j|dddddS)NrrJcaptionrrrrrr visit_captionzHTMLTranslator.visit_captioncCrrrrrrrdepart_captionrzHTMLTranslator.depart_captioncCs<|js|}g|d<|j|j|dddd|_dSdS)NrdlcitationrT)rcopyr!rqr)r2rlistnoderrrvisit_citation s  zHTMLTranslator.visit_citationcC<|jdt|jdddtjs|jdd|_dSdSN FTdescendsiblings )r!rqr next_noderr3rrrrrdepart_citation+   zHTMLTranslator.depart_citationc CsVd}d|vr ||d7}nd|vr||jj|d7}|j|j|ddd|ddS)N#refidrefnamea[zcitation-referencerhref)r5nameidsr!rqr)r2rrGrrrvisit_citation_reference2s   z'HTMLTranslator.visit_citation_referencecCr)Nz]rrrrrdepart_citation_reference=rz(HTMLTranslator.depart_citation_referencecCr-)NspanrJ classifierrrrrrrvisit_classifierDr0zHTMLTranslator.visit_classifiercCrNrrrrrdepart_classifierGrz HTMLTranslator.depart_classifiercCs&|j||jj|jddS)Nstub)r|rqrstubsrrrrrr visit_colspecJs zHTMLTranslator.visit_colspeccCst|jdddtjr dSd|jjdvs#d|jjvr%d|jjdvr%dStdd|jD}|j | |d |jD]}t |d d |d }|j |j |d d|dq<|j ddS)NFTr:zcolwidths-autorzcolwidths-givencss|]}|dVqdS)colwidthNr)rdrrrr Xsz0HTMLTranslator.depart_colspec..colgrouprTgY@g?colz width: %i%%)stylez )rr>rcolspecrrB table_stylesumr|r!rqrrtr)r2r total_widthrTrrrdepart_colspecOs    zHTMLTranslator.depart_colspecz-(?=-)cCs |jd|d|tj)z%Escape double-dashes in comment text.z z- )r!rqrrSkipNode)r2rrrrr visit_comment`szHTMLTranslator.visit_commentcCsp|j|j|dddt|dkr4|ddd|ddd |ddD] }|dd q*dSdS) Nrcompoundrrhrrzcompound-firstz compound-lastzcompound-middler!rqrlen)r2rrrrrvisit_compoundgs zHTMLTranslator.visit_compoundcCrrrrrrrdepart_compoundorzHTMLTranslator.depart_compoundcC|j|j|ddddS)Nrzdocutils containerrrrrrrvisit_containerrzHTMLTranslator.visit_containercCrrrrrrrdepart_containerurzHTMLTranslator.depart_containercC|j|ddddS)NcontactFrrrrrr visit_contactxr3zHTMLTranslator.visit_contactcCrr.rrrrrdepart_contact{rzHTMLTranslator.depart_contactcCr)N copyrightrrrrrvisit_copyright~rzHTMLTranslator.visit_copyrightcCrr.rrrrrdepart_copyrightrzHTMLTranslator.depart_copyrightcCr)Ndaterrrrr visit_daterzHTMLTranslator.visit_datecCrr.rrrrr depart_daterzHTMLTranslator.depart_datecCrr.rrrrrvisit_decorationrzHTMLTranslator.visit_decorationcCrr.rrrrrdepart_decorationrz HTMLTranslator.depart_decorationcCs&|jd|j||dddS)N ddrJrrrrrvisit_definitions zHTMLTranslator.visit_definitioncCrNr9rrrrrdepart_definitionrz HTMLTranslator.depart_definitioncCs8|dg}||r|d|j||ddS)Nrr(r2) setdefaultr'rqr!rr2rrrrrvisit_definition_lists   z$HTMLTranslator.visit_definition_listcCrNr=rrrrrdepart_definition_listrz%HTMLTranslator.depart_definition_listcCs||dg|jddg|jdd<|dg|jddg|jdd<|dg|jddg|jdd<dS)Nrrrnames)rrrrrrvisit_definition_list_items   z)HTMLTranslator.visit_definition_list_itemcCrr.rrrrrdepart_definition_list_itemrz*HTMLTranslator.depart_definition_list_itemcCr)NrwrJrrrrrvisit_descriptionr z HTMLTranslator.visit_descriptioncCrryrrrrrdepart_descriptionrz!HTMLTranslator.depart_descriptioncCsD|jt|jd}||r|d7}|j|j|d|ddS)Nr  simpler2r)rzrqrcr!r'rr|rrr visit_docinfos  zHTMLTranslator.visit_docinfocCs0|jd|j}|j|d|_g|_dSr~)r!rqrzrr )r2rstartrrrdepart_docinfos   zHTMLTranslator.depart_docinfoTcCs^|rd|||f}|||jd||jj|f|j|j|dd|ddS)Nz z
%s
rwrJr)rradd_metar!rqrnlabelsr)r2rrr'meta_tagrrrrs z!HTMLTranslator.visit_docinfo_itemcCrryrr1rrrrrz"HTMLTranslator.depart_docinfo_itemcCr-)NrrJzcode python doctestrrrrrrvisit_doctest_blocks z"HTMLTranslator.visit_doctest_blockcCrrrrrrrdepart_doctest_blockrz#HTMLTranslator.depart_doctest_blockcCs:|ddptj|dpd}|jd||dS)Nr#rJsourcezdocutils document without titlez%s )rosrebasenamerrqr)r2rr#rrrvisit_documentszHTMLTranslator.visit_documentcCsD|j|j|jd|jjig|j|j|j d|j |jj |j d|j |jj dd |jvr=|j d|jrT|jdkrM|j |jn|j|j|j|j dd|j|j|dd d |j dd |j|j|j|jdd|j|j|j|jdd |jrJd t|jdS)Nr\rzname="dcterms.rJz=mathjaxrhrr5rrrazlen(context) = %s)rrdoctypehead_prefix_templaterBrkr)rqr'rrrPrrNrrvrr*rrr"r(r!r-rr rzrcrrrrdepart_documents8    zHTMLTranslator.depart_documentcCr)NemrJrrrrrvisit_emphasisr zHTMLTranslator.visit_emphasiscCr)Nzrrrrrdepart_emphasisrzHTMLTranslator.depart_emphasiscCsdgi}t|jjtjr|dd|jjjj|jjr$|dd|dr4d}d|d|d<nd}|d=|jjd7_d|vrM|dd|d <d |vrc|d d|d <|jj|d 7_|j|j ||d fi||j d | dS)NrrrQthrtdrhmorerowsrowspanmorecolscolspanrJz ) rrrtheadrqrRcolumnrNr!rrzry)r2rrrrrr visit_entrys$zHTMLTranslator.visit_entrycC|j|jdSr.r rrrr depart_entryzHTMLTranslator.depart_entrycCsni}d|vr |d|d<d|vr|d|d<||r'|ddd|d<|j|j|dfi|dS)NrenumtyperrJrol)r'rrr!rqrr2rrrrrvisit_enumerated_lists    z$HTMLTranslator.visit_enumerated_listcCr)Nz rrrrrdepart_enumerated_listrz%HTMLTranslator.depart_enumerated_listcCs2d}||r |d7}|j|j|d|ddS)Nz field-listrr2r)r'r!rqrr|rrrvisit_field_lists zHTMLTranslator.visit_field_listcCrr~rrrrrdepart_field_list'rz HTMLTranslator.depart_field_listcCrr.rrrrr visit_field*rzHTMLTranslator.visit_fieldcCrr.rrrrr depart_field-rzHTMLTranslator.depart_fieldc Cs*|j|j|ddd|jdddS)NdtrJrr)r!rqrrNrrrrrvisit_field_name2s zHTMLTranslator.visit_field_namecCr)Nrvrrrrrdepart_field_name6rz HTMLTranslator.depart_field_namec Cs@|j|j|ddd|jdd|js|jddSdS)NrwrJrrz

)r!rqrrNrrrrrrvisit_field_body9s zHTMLTranslator.visit_field_bodycCrryrrrrrdepart_field_body@rz HTMLTranslator.depart_field_bodycCsdddi}|drd|d|d<|dr"|dd|d7<|j|j|dfi|dS) Nrfigurewidth width: %srXalignz align-r)rr!rqrrrrr visit_figureCs    zHTMLTranslator.visit_figurecCrrrrrrr depart_figureKrzHTMLTranslator.depart_figurecC|jt|jdSr.rzrqrcr!rrrr visit_footerOrzHTMLTranslator.visit_footercCsf|j}|j|ddddg}||j|d|d|j|||jdd<|j|d=dS)Nrr&rz z r)rzrrrr!rqr&r")r2rrr&rrr depart_footerRs   zHTMLTranslator.depart_footercCsH|js"|}g|d<d|jj}|j|j|d|dd|_dSdS)Nrz footnote r2rT)rr4rBfootnote_referencesr!rqr)r2rr5rrrrvisit_footnote_s  zHTMLTranslator.visit_footnotecCr7r8)r!rqrr>rfootnoterrrrrdepart_footnotehr@zHTMLTranslator.depart_footnotec Cs8d|d}d|jj}|j|j|dd||ddS)NrArBzfootnote-reference rDrJrF)rBrr!rqr)r2rrGrrrrvisit_footnote_referenceos   z'HTMLTranslator.visit_footnote_referencecCr)Nrrrrrdepart_footnote_referenceurz(HTMLTranslator.depart_footnote_referencecCs:d|dvr|d}|jd||tjdS)Nsectnumr z %s )rrOr!rqrrr^)r2rrrrrvisit_generatedys zHTMLTranslator.visit_generatedcCrr.rrrrrdepart_generatedrzHTMLTranslator.depart_generatedcCrr.rrrrr visit_headerrzHTMLTranslator.visit_headercCsb|j}|j|dddg}||j|d|d|j||j||j|d=dS)Nrr%rz
)rzrrrr!rqrr%)r2rrr%rrr depart_headers    zHTMLTranslator.depart_headerc Cs`i}|d}t|d}d|vr|d|d<d|vr!|d|d<d|vrtrvd|vr/d|vsv|jjrvt|}z tj|t }Wn t t fyOYn'w|jj |ddd|vrhd|jd|d<d|vrud|jd |d<~d D]*}||vrtd ||}|sJd t|d t|dd |df||<qxg} d D]$}||vrtd||r||d7<| d|||f||=q| rd| |d<t|jtjst|jtjrt|jjtjsd} nd} d|vrd|d|d<|jjsd|vrpd} |s d} |jjsd} ztt|d } | } Wdn 1s,wYWnt yH}z |j} WYd}~nd}~ww| rX|jj !d|| fn|jj |ddt"#| $}d||f}|dkr||d <|j%|d!dfd"|i||&d#|d$| }n|&d#|d|d#<|j'|d%| fd&|i|}|j(|dS)'Nrrrheightscale\/z%dpxrh)rrz([0-9.]+)(\S*)$z%s%sdz ^[0-9.]+$pxz%s: %s;rrXrJrKralign-%srembedzunknown MIME typezfile insertion disabled.r?zCannot embed image %r: %szdata:%s;base64,%szapplication/x-shockwave-flashtypeobjectdataaltz imgsrc)) mimetypes guess_typerrBfile_insertion_enabledrImagerArsysgetfilesystemencodingrUnicodeEncodeErrorrrrsizerematchfloatgrouprqrNrrr TextElement reference embed_imagesrErr5rmrbase64 b64encodedecoderrrr!)r2rrrmimetype imagepathratt_namerrXrerr_msg imagefile imagedatardata64tagrrr visit_images             zHTMLTranslator.visit_imagecCrr.rrrrr depart_imagerzHTMLTranslator.depart_imagecCr)NrKrJrrrrr visit_inliner zHTMLTranslator.visit_inlinecCrrNrrrrr depart_inlinerzHTMLTranslator.depart_inlinecCst|jtjr |jj}nd}|j|j|jdddd|j|j|dd|d|jj rD|jd}t |dkrF|jd |d dSdSdS) NbracketsrrJlabelrrKbackrefsrhz!r) rrrrrBrr!rqrfootnote_backlinksrc)r2rrrrrr visit_labels    zHTMLTranslator.visit_labelcCs|jjr|jd}t|dkr|jd|jd|jjr:t|dkr:ddt|dD}|jdd||jd dS) NrrhrrOcSsg|] \}}d||fqS)%sr)rdirefrrrrfsz/HTMLTranslator.depart_label..z$(%s),z
)rBrrrcr!rq enumeraterN)r2rr backlinksrrr depart_labels    zHTMLTranslator.depart_labelcCrf)Nrlegendrrrrrr visit_legend rhzHTMLTranslator.visit_legendcCrrrrrrr depart_legendrzHTMLTranslator.depart_legendcCs6|j|j|ddddt|s|jddSdS)NrrJlinerz
rbrrrr visit_lineszHTMLTranslator.visit_linecCrrrrrrr depart_linerzHTMLTranslator.depart_linecCrf)Nrz line-blockrrrrrrvisit_line_blockrhzHTMLTranslator.visit_line_blockcCrrrrrrrdepart_line_blockrz HTMLTranslator.depart_line_blockcCr)NlirJrrrrrvisit_list_item!r zHTMLTranslator.visit_list_itemcCr)Nz rrrrrdepart_list_item$rzHTMLTranslator.depart_list_itemcCs|dg}d|vr dd|D|d<|j||dddS|j|j|dddd|}t|jtjs>| d d }|j |D]!}| r\|j |r\|jd ||qD|j||qD|jd tj) NrcodecSsg|]}|dkr|qS)rrrdrrrrrf-sz0HTMLTranslator.visit_literal..rJrKzdocutils literalrrKrz%srO)rr!rqrrrrr literal_blockrwords_and_spacesfindallrin_word_wrap_pointsearchrr^)r2rrrtokenrrr visit_literal(s&   zHTMLTranslator.visit_literalcCr)Nrrrrrdepart_literalBszHTMLTranslator.depart_literalcCs>|j|j|ddddd|dgvr|jddSdS)NrrJ literal-blockrrrz)r!rqrrrrrrvisit_literal_blockFsz"HTMLTranslator.visit_literal_blockcCs,d|dgvr|jd|jddS)Nrrrz )rr!rqrrrrdepart_literal_blockKs z#HTMLTranslator.depart_literal_block)rrJrJ)rrKformula)rrKmath)rttrmathmlrrlatexrJc sjjvrjjdjd_jj|dk}jjd}ddddd}|j|dk}jd krFjrDjd d krFd}|tj }|rgz ||||f}Wn t yf||}Ynwjd vrq |}jd krj szjd _ WntyjjdYnwdj vrj d7_ jj g_ njdkrΈjrˆj s‡fddjd dD_ |dktj_t|}njd krdjvrj_j_dj}zA|dkrt|jj}n2|dkrt|jj}n$|d krtj|| jjd}n|s"tj || d}njjdWnct!y6t!dt"y} zKjjj| |d} #| j$%&|dj$%d| j'j$%dj$%j&|d d!d"j$% |j$%d#(| t)j*d} ~ ww|rj$%j&||d$t+||d%j$%||rj$%d$|rj$%d&||rňj$%d$t)j*)'Nz=math-output format "%s" not supported falling back to "latex"r!rJr)z$%s$\begin{%s} %s \end{%s})z\(%s\)r")NNrr r blahtexml)r!rrz@No MathJax URL specified, using local fallback (see config.html)?z?config=TeX-AMS_CHTMLrcs"g|] }t|jjqSr)rcr find_file_in_dirsrBstylesheet_dirs)rdsr1rrrfs z-HTMLTranslator.visit_math..rzXHTML 1rlatexmlttm)inlinerm)r*z3option "%s" not supported with math-output "MathML"zis "latexmlmath" in your PATH?) base_noderr rrrrrKr),rv math_tagsr5rmrrxrr>r uni2tex_table TypeErrorrr mathjax_urlrwarningmathjax_scriptrwrDocumentParameters displaymoderdoctype_mathmlcontent_type_mathmlrrNryrr(r)r#r tex2mathmlOSError SyntaxErrorvisit_system_messager!rqrargsdepart_system_messagerr^bool) r2rmath_envrclsargwrapperswrapper math_code converterrerr_noderr1r visit_math\s                         zHTMLTranslator.visit_mathcCrr.rrrrr depart_mathrzHTMLTranslator.depart_mathcCst|}|j||ddS)N)r>)rrrE)r2rr>rrrvisit_math_blocks zHTMLTranslator.visit_math_blockcCrr.rrrrrdepart_math_blockrz HTMLTranslator.depart_math_blockcCs&|j|dfi|}||dS)Nr')rnon_default_attributesr)r2rr'rrr visit_metazHTMLTranslator.visit_metacCrr.rrrrr depart_metarzHTMLTranslator.depart_metacCs|j||j|dSr.)r'rqr)r2rrrrrs zHTMLTranslator.add_metacCr-)NrKrJoptionrrrrrr visit_optionr0zHTMLTranslator.visit_optioncCs6|jdt|jdddtjr|jddSdS)NrOFTr:, )r!rqrr>rrMrrrr depart_options zHTMLTranslator.depart_optioncCs.|j|dd|j||dddS)N delimiterrvarrJ)r!rqrrrrrrvisit_option_argumentsz$HTMLTranslator.visit_option_argumentcCr)Nzrrrrrdepart_option_argumentrz%HTMLTranslator.depart_option_argumentcCs&|j||dd|jddS)NrrJzrrrrrvisit_option_groupsz!HTMLTranslator.visit_option_groupcCr)Nz rrrrrdepart_option_grouprz"HTMLTranslator.depart_option_groupcCrf)Nr2z option-listrrrrrrvisit_option_listsz HTMLTranslator.visit_option_listcCrr~rrrrrdepart_option_listrz!HTMLTranslator.depart_option_listcCrr.rrrrrvisit_option_list_itemrz%HTMLTranslator.visit_option_list_itemcCrr.rrrrrdepart_option_list_itemrz&HTMLTranslator.depart_option_list_itemcCrr.rrrrrvisit_option_stringrz"HTMLTranslator.visit_option_stringcCrr.rrrrrdepart_option_stringrz#HTMLTranslator.depart_option_stringcCr)N organizationrrrrrvisit_organizationrz!HTMLTranslator.visit_organizationcCrr.rrrrrdepart_organizationrz"HTMLTranslator.depart_organizationcCr)NrrJrrrrrvisit_paragraphr zHTMLTranslator.visit_paragraphcCsB|jdt|jtjtjfrt|jdks|jddSdS)NrrhrK)r!rqrrr list_itementryrcrrrrdepart_paragraphs zHTMLTranslator.depart_paragraphcCsV|dr|jd|d|jdn|jd|j|j|dddddS)NrBzrrJrK problematicr)hasattrr!rqrzrrrrrvisit_problematic s  z HTMLTranslator.visit_problematiccCs"|jd|j|jdSrNr rrrrdepart_problematic(s z!HTMLTranslator.depart_problematiccCsxd|ddvr9t|jtjrdpd}|dr%|j|j||dd|j| |dr9|jd|tj ) NrformatrJrKrr)rr,) rrwrrrrr!rqrrr^)r2rtrrr visit_raw,szHTMLTranslator.visit_rawcCsddi}d|vr.|d|d<|jjr%|ddr%||d|d<d|_|dd7<nd|vs6Jd d |d|d<|dd 7<t|d kr\t|d tjr\|dd7<t|j tj s{t|d krqt|d tjssJ|dd7<|j |j |ddfi|dS)NrrrefurirGzmailto:Tz externalrBz3References must have "refuri" or "refid" attribute.rAz internalrhrz image-referencerDrJ)rBrrrrrcrrimagerrr!rqrrrrrvisit_reference7s(    "zHTMLTranslator.visit_referencecCs0|jdt|jtjs|jdd|_dS)NrrKF)r!rqrrrrrrrrrdepart_referenceLs   zHTMLTranslator.depart_referencecCrj)NrevisionFrrrrrrvisit_revisionRr3zHTMLTranslator.visit_revisioncCrr.rrrrrdepart_revisionUrzHTMLTranslator.depart_revisioncCs |j||ddd|_dS)NtrrJr)r!rqrrrrrr visit_rowXs zHTMLTranslator.visit_rowcCr)Nz rrrrr depart_row\rzHTMLTranslator.depart_rowcCr-)NrrJrubricrrrrrr visit_rubric_r0zHTMLTranslator.visit_rubriccCrrrrrrr depart_rubricbrzHTMLTranslator.depart_rubriccCs*|jd7_|j|j|ddddS)Nrhrsectionr)rsr!rqrrrrr visit_sectioneszHTMLTranslator.visit_sectioncCs|jd8_|jddS)Nrhr)rsr!rqrrrrdepart_sectionjszHTMLTranslator.depart_sectioncCs"|j|j|dddd|_dS)NrsidebarrT)r!rqrrrrrr visit_sidebaros zHTMLTranslator.visit_sidebarcCs|jdd|_dS)NrF)r!rqrrrrrdepart_sidebart  zHTMLTranslator.depart_sidebarcCrj)NstatusFrrrrrr visit_statusxr3zHTMLTranslator.visit_statuscCrr.rrrrr depart_status{rzHTMLTranslator.depart_statuscCr)NstrongrJrrrrr visit_strong~r zHTMLTranslator.visit_strongcCr)Nz rrrrr depart_strongrzHTMLTranslator.depart_strongcCr)NrrJrrrrrvisit_subscriptr zHTMLTranslator.visit_subscriptcCr)Nzrrrrrdepart_subscriptrzHTMLTranslator.depart_subscriptcCtj)zInternal only.rr^rrrrvisit_substitution_definitionz,HTMLTranslator.visit_substitution_definitioncCs||dSr.)unimplemented_visitrrrrvisit_substitution_referencesz+HTMLTranslator.visit_substitution_referencecCsht|jtjr d}nt|jtjrd}t|jd|_n t|jtjr%d}|j |j |dd|ddS)Nzsidebar-subtitler$rhzsection-subtitlerrJr) rrrr{r5rcr!rrxrqrr|rrrvisit_subtitleszHTMLTranslator.visit_subtitlecCsb|jdt|jtjr/|j|jd|_d|_|j |j|j |j|jdd=dSdS)Nr rar) r!rqrrrr5rr$rrr,rrrrdepart_subtitles zHTMLTranslator.depart_subtitlecCr)NsuprJrrrrrvisit_superscriptr z HTMLTranslator.visit_superscriptcCr)Nzrrrrrdepart_superscriptrz!HTMLTranslator.depart_superscriptc Cs|j|j|ddd|jdd}t|drH|d}t|dkr+d|d }nd}g}|D]}|d ||f|d7}q1d d |}|d rTd|d }nd}|jd|d|d||d||fdS)Nrzsystem-messagerz

rJrrhz%; backlinkrrz; backlinks: %srOrz , line %szISystem Message: %s/%s (%s%s)%s

rlevelr)r!rqrrcrNrer)r2r backref_textrrrbackrefrrrrr:s2       z#HTMLTranslator.visit_system_messagecCrrrrrrrr<rz$HTMLTranslator.depart_system_messagecCs|i}dd|jjdD}d|vr|d|dd|vr'd|d|d<|j|d fd d |i|}|j|dS) NcSsg|]}|dqS)z )rrrrrrfrgz.HTMLTranslator.visit_table..rrrrrrXrrr)rBrZrwrqrrNr!)r2rrrrrrr visit_tables zHTMLTranslator.visit_tablecCr)Nz rrrrr depart_tablerzHTMLTranslator.depart_tablecCsRd|vs!d|vs!d|vs!|j|j|dddd|jddS|jddS) NrkrBrCrKrJtargetrrO)r!rqrrzrrrr visit_targets zHTMLTranslator.visit_targetcCrr.r rrrr depart_targetrzHTMLTranslator.depart_targetcCr)Ntbodyrrrrr visit_tbodyrzHTMLTranslator.visit_tbodycCr)Nz rrrrr depart_tbodyrzHTMLTranslator.depart_tbodycCr)NrrJrrrrr visit_termr zHTMLTranslator.visit_termcCsdS)zg Leave the end tag to `self.visit_definition()`, in case there's a classifier. Nrrrrr depart_termszHTMLTranslator.depart_termcCsg|_g|_dSr.)r|rRrrrr visit_tgroups zHTMLTranslator.visit_tgroupcCrr.rrrrr depart_tgrouprzHTMLTranslator.depart_tgroupcCr)Nrrrrrr visit_theadrzHTMLTranslator.visit_theadcCr)Nz rrrrr depart_theadrzHTMLTranslator.depart_theadcCsd}t|jtjr|j|j|ddddnt|jtjr,|j|j|ddddnt|jtjrA|j|j|ddddnt|jtj rV|j||ddd }nt|jtj rs|j|j|d dd dd }t |j|_ net|jtj s|J|j|jd }i}t |jdkrt|jd tjrd|d<|j|j|d|dfi|i}|drd|d<d|d|d<|r|j|jiddfi|d|}nd|}|j|dS)z,Only 6 section levels are supported by HTML.r rrJz topic-titlerz sidebar-titlezadmonition-titler.z h1r#z rhrz with-subtitlerzh%srBz toc-backrefrrArGrDz z N)rrrtopicr!rqrr{ Admonitionrr5rcrrxrsrur$rerz)r2r close_tagh_levelrrrr visit_titlesR   zHTMLTranslator.visit_titlecCs`|j|j|jr.|j|jd|_d|_|j|j|j|j|jdd=dSdS)Nrar) r!rqrzrrr#rrr+rrrr depart_title*szHTMLTranslator.depart_titlecCr)NciterJrrrrrvisit_title_reference3r z$HTMLTranslator.visit_title_referencecCr)Nzrrrrrdepart_title_reference6rz%HTMLTranslator.depart_title_referencecCs&|j|j|ddd|d|_dS)Nrrrr)r!rqrr{rrrr visit_topic9rKzHTMLTranslator.visit_topiccCs|jdg|_dSr)r!rqr{rrrr depart_topic=r~zHTMLTranslator.depart_topiccCrf)NhrrQr)r!rqrrrrrvisit_transitionArhzHTMLTranslator.visit_transitioncCrr.rrrrrdepart_transitionDrz HTMLTranslator.depart_transitioncCrj)NrMFrrrrrr visit_versionGr3zHTMLTranslator.visit_versioncCrr.rrrrrdepart_versionJrzHTMLTranslator.depart_versioncCstd|jj)Nz$visiting unimplemented node type: %s)NotImplementedError __class__rrrrrrMsz"HTMLTranslator.unimplemented_visit)rKF)rK)rr.)T)rJ)rrr__doc__rprr5rrror2r0rrrcompilerUrrordrrjrrrrrrcrrrrrrrrrrrrrrrr rrrrrrr"r'r+r,r/r1r6r?rIrJrMrPrSr]rr_rdrergrirlrmrorprrrsrtrurxrzr}rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r rrrrr-rErFrGrHrJrLrrNrPrSrTrUrVrWrXrYrZr[r\r^r_r`rcrfrgrjrmrnrprqrsrtrvrwryrzr|r}rrrrrrrrrrrrr:r<rrrrrrrrrrrrrrrrrrrrrrrrrrrr[ks8 ;   C                V        e                                                            (       r[c@seZdZdZddZddZddZdd ZeZeZ eZ eZ eZ eZ eZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZ eZ!eZ"d S) ra 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. cCrr.)rr!rrrr default_visit]szSimpleListChecker.default_visitcCsrdd|jD}|r.t|dtjr.t|dtjs*t|dtjs*t|dtjr.|t|dkr6dStj )NcSrrr)rdrrrrrfas  z5SimpleListChecker.visit_list_item..rrarh) rrr paragraphrrrrrcr!)r2rrrrrr `s z!SimpleListChecker.visit_list_itemcCrr.rrrrr pass_nodemrzSimpleListChecker.pass_nodecCrr.rrrrr ignore_nodeprzSimpleListChecker.ignore_nodeN)#rrrrrr rrrr`r+rrrrrrlrorrr^rrr}rrrMrxrrrrr_rr visit_pendingrrrrrRsB  r)'rrrros.pathrr PIL.Imager ImportErrorrrrQrr r r r docutils.utils.error_reportingr docutils.transformsrdocutils.utils.mathrrrrr version_infourllib.requestrurllibstrrDrrir[GenericNodeVisitorrrrrrsT         7r