B “äî\»õã@súdZdZddlZddlZddlZddlZddlZddlZddl Zddl Zy ddl Z Wn&e k rzddl mm Z YnXddlmZmZmZmZmZmZddlmZddlmZddlmZmZGdd „d ejƒZGd d „d eƒZGd d „d eƒZ Gdd„deƒZ!de!_"de!_#de!_$de!_%de!_&de!_'de!_(de!_)de!_*de!_+de!_,de!_-de!_.de!_/de!_0de!_1d e!_2d!e!_3d"e!_4d#e!_5d$e!_6d%e!_7d&e!_8d'e!_9d(e!_:d)e!_;d*e!_Gd-d.„d.eƒZ?Gd/d0„d0eƒZ@Gd1d2„d2eƒZAGd3d4„d4ejBƒZCdS)5zLaTeX2e document tree Writer.ZreStructuredTextéN)ÚfrontendÚnodesÚ languagesÚwritersÚutilsÚio)Ú SafeString)Ú writer_aux)Úpick_math_environmentÚ unichar2texc(@s eZdZdZdZej ej e ¡¡Z d  ddddg¡Z dZ d d d d gd difddgd difddgddejdœfddgddgddddœfddgd dejdœfd!d"gd#d$ejd%œfd&d'gd(d)d*d+gd(dd,œfd-d.gd/d0d1ejd2œfd3d4gd0d5ejd6œfd7d8gd9d$d:œfd;dgd?ejd@gdAœfdBdCgd e ifdDedEgedFdGœfdHdIgdJdejdœfdKdLgdMd$ejd%œfdNdOgd dejdœfdPdQgdRd$ejd%œfdSdTgd dejdœfdUdVgdWd$ejd%œfdXdYgd dejdœfdZd[gd d\ifd]d^gd d/ifd_d`gd dejdœfdadbgd$dcddœfdedfgd dejdœfdgdhgd$diddœfdjdkgdldmdGœfdndogd d/ifdpdqgd dejdœfdrdsgdtgddueje dvœfdwdxgd d/ifdydzgd d{ifd|d}gd d ifd~dgd d iff#fZd€d iZdZd‚ZdƒZed„Zd Zd…d†„Zd‡dˆ„Zd‰dŠ„Zd‹dŒ„Zd S)ÚWriter)ÚlatexZlatex2ez default.texÚ z% PDF Standard Fontsz\usepackage{mathptmx} % Timesz\usepackage[scaled=.90]{helvet}z\usepackage{courier})ÚstandardÚbooktabsÚnolinesÚ borderlesszcolwidths-autozcolwidths-givenzLaTeX-Specific OptionsNz-Specify documentclass. Default is "article".z--documentclassÚdefaultÚarticlezeSpecify document options. Multiple options can be given, separated by commas. Default is "a4paper".z--documentoptionsZa4paperz5Footnotes with numbers/symbols by Docutils. (default)z--docutils-footnotesTÚ store_true)rÚactionÚ validatorz^Format for footnote references: one of "superscript" or "brackets". Default is "superscript".z--footnote-referencesÚ superscriptÚbracketszZtrim_footnote_reference_space)ÚchoicesrÚmetavarÚ overridesz!Use \cite command for citations. z--use-latex-citationsrzNUse figure floats for citations (might get mixed with real figures). (default)z--figure-citationsÚuse_latex_citationsÚ store_false)Údestrrz{Format for block quote attributions: one of "dash" (em-dash prefix), "parentheses"/"parens", or "none". Default is "dash".z --attributionÚdashÚ parenthesesÚparensÚnone)rrrzÄSpecify LaTeX packages/stylesheets. A style is referenced with \usepackage if extension is ".sty" or omitted and with \input else. Overrides previous --stylesheet and --stylesheet-path settings.z --stylesheetÚzÚstylesheet_path)rrrrz×Comma separated list of LaTeX packages/stylesheets. 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 *.tex file. z--stylesheet-pathÚ stylesheet)rrrz7Link to the stylesheet(s) in the output file. (default)z--link-stylesheetÚembed_stylesheet)rrz^Embed the stylesheet(s) in the output file. Stylesheets must be accessible during processing. z--embed-stylesheetzComma-separated list of directories where stylesheets are found. Used by --stylesheet-path when expanding relative path arguments. Default: "."z--stylesheet-dirszÚ.)rrrzlCustomization by LaTeX code in the preamble. Default: select PDF standard fonts (Times, Helvetica, Courier).z--latex-preamblez)Specify the template file. Default: "%s".z --templatez)rrz&Table of contents by LaTeX. (default) z--use-latex-tocéz6Table of contents by Docutils (without page numbers). z--use-docutils-tocÚ use_latex_tocz*Add parts on top of the section hierarchy.z--use-part-sectionz=Attach author and date to the document info table. (default) z--use-docutils-docinfoÚuse_latex_docinfoz-Attach author and date to the document title.z--use-latex-docinfoz$Typeset abstract as topic. (default)z--topic-abstractÚuse_latex_abstractzzuWhen possibile, use the specified environment for literal-blocks. Default is quoting of whitespace and special chars.z--literal-block-envzhWhen possibile, use verbatim for literal-blocks. Compatibility alias for "--literal-block-env=verbatim".z--use-verbatim-when-possiblezÈTable style. "standard" with horizontal and vertical lines, "booktabs" (LaTeX booktabs style) only horizontal lines above and below the table and below the header or "borderless". Default: "standard"z --table-stylerÚappend)rrrrrz¹LaTeX graphicx package option. Possible values are "dvips", "pdftex". "auto" includes LaTeX code to use "pdftex" if processing with pdf(la)tex and dvips otherwise. Default is no option.z--graphicx-optionz‹LaTeX font encoding. Possible values are "", "T1" (default), "OT1", "LGR,T1" or any other combination of options to the `fontenc` package. z--font-encodingÚT1z–Per default the latex-writer puts the reference title into hyperreferences. Specify "ref*" or "pageref*" to get the section number or the page number.z--reference-labelzVSpecify style and database for bibtex, for example "--use-bibtex=mystyle,mydb1,mydb2".z --use-bibtexÚ sectnum_depthzlatex2e writer)r) Ú head_prefixÚ requirementsÚlatex_preambler&Ú fallbacksÚpdfsetupÚtitleÚsubtitleÚ titledata)Úbody_pre_docinfoÚdocinfoÚ dedicationÚabstractÚbodycCstj |¡t|_dS)N)rr Ú__init__ÚLaTeXTranslatorÚtranslator_class)Úself©rDúE/tmp/pip-build-uw_ogi45/docutils/docutils/writers/latex2e/__init__.pyr@äs zWriter.__init__cCstj |¡tjgS)N)rr Úget_transformsr Z Admonitions)rCrDrDrErFés zWriter.get_transformscCs¶| |j¡}|j |¡x |jD]}t||t||ƒƒq Wyt|jjjdƒ}Wn0t k r~tt j   |j |jjj¡dƒ}YnXt t| ¡dƒ¡}| ¡| ¡| |j¡|_dS)NÚrbzutf-8)rBÚdocumentÚ walkaboutÚvisitor_attributesÚsetattrÚgetattrÚopenÚsettingsÚtemplateÚIOErrorÚosÚpathÚjoinÚdefault_template_pathÚstringÚTemplateÚstrÚreadÚcloseÚassemble_partsÚ substituteÚpartsÚoutput)rCZvisitorÚpartZ template_filerOrDrDrEÚ translateðs    zWriter.translatecCsdtj |¡xR|jD]H}t||ƒ}||jkrL|r:| d¡d |¡|j|<qd |¡|j|<qWdS)z9Assemble the `self.parts` dictionary of output fragments.r$rN) rr rZrJrLÚ head_partsr0rSr\)rCr^ÚlinesrDrDrErZs     zWriter.assemble_parts)Ú__name__Ú __module__Ú __qualname__Ú supportedZdefault_templaterQrRÚdirnameÚabspathÚ__file__rTrSZdefault_preambleZtable_style_valuesrZvalidate_booleanZvalidate_comma_separated_listZ settings_specZsettings_defaultsZconfig_sectionZconfig_section_dependenciesr`rJr]r@rFr_rZrDrDrDrEr s*                          r cD@sæeZdZdZdddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d0d3d4d5d6d7d8d9d:d;dd?d@dAdBœCZedCdD„ee ¡ƒDƒƒZdEZdFdFdGœZ dQdIdJ„Z dKdL„Z dMdN„Z dOdP„Z dHS)RÚBabelzLanguage specifics for LaTeX.Z afrikaansÚarabicÚ bulgarianZbretonÚcatalanÚczechZwelshÚdanishZngermanÚgermanZ naustrianZaustrianZ lowersorbianÚgreekZpolutonikogreekÚenglishZ australianZcanadianZbritishZ newzealandÚamericanZ esperantoÚspanishÚestonianÚbasqueÚfinnishÚfrenchZcanadienZirishZibycusÚgalicianÚhebrewÚcroatianZ uppersorbianZmagyarZ interlinguaZbahasaiÚ icelandicÚitalianÚjapaneseZkazakhÚlatinÚ lithuanianZlatvianZ mongolianZbahasamZnorskÚdutchÚnynorskÚpolishZportugesZbrazilÚromanianÚrussianZsaminZserbiancZserbianÚslovakÚsloveneZalbanianÚswedishÚturkishZ ukrainianZvietnam)CÚafÚarÚbgÚbrÚcaÚcsÚcyÚdaÚdezde-1901zde-ATz de-AT-1901ZdsbÚelz el-polytonÚenzen-AUzen-CAzen-GBzen-NZzen-USÚeoÚesÚetÚeuÚfiÚfrzfr-CAÚgaz grc-ibycusÚglÚheÚhrZhsbÚhuÚiaÚidÚisÚitÚjaÚkkZlaÚltÚlvÚmnÚmsÚnbÚnlÚnnÚnoÚplÚptzpt-BRÚroÚruÚsezsh-Cyrlzsh-LatnÚskÚslÚsqÚsrzsr-LatnÚsvÚtrÚukÚvicCsg|]\}}| ¡|f‘qSrD)Úlower)Ú.0ÚkÚvrDrDrEú kszBabel.z,Language "%s" not supported by LaTeX (babel)z.<>)rxrsNcCs||_| |¡|_i|_dS)N)ÚreporterÚ language_nameÚlanguageÚotherlanguages)rCÚ language_coder¿rDrDrEr@‡s zBabel.__init__cstˆj ¡ƒ}| ˆjpd¡dd |¡gˆ_g}x2d ‡fdd„|Dƒ¡D]}||krN| |¡qNW|r‚ˆj dd |¡¡d|kr–ˆj d ¡d |kr°ˆj d d d g¡d|krʈj d dd g¡|ddkrdtˆj ¡ƒkrˆjdddˆjg7_d ˆj¡S)z7Return the babel call with correct options and settingsrqz\usepackage[%s]{babel}ú,r$csg|]}ˆj |d¡‘qS)r$)Ú active_charsÚget)r»Úl)rCrDrEr¾“sz"Babel.__call__..z#\AtBeginDocument{\shorthandoff{%s}}rxz)\deactivatetilden % restore ~ in Galicianrtz \makeatletterz+ \addto\extrasestonian{\bbl@deactivate{~}}z \makeatotherruz) \addto\extrasbasque{\bbl@deactivate{~}}éÿÿÿÿrwzE% Prevent side-effects if French hyphenation patterns are not loaded:z\frenchbsetup{StandardLayout}z4\AtBeginDocument{\selectlanguage{%s}\noextrasfrench}r) ÚsortedrÂÚkeysr0rÁrSÚsetupÚextendÚlist)rCrZ shorthandsÚcrD)rCrEÚ__call__Œs6 zBabel.__call__c CsTx2t |¡D]$}y |j|Stk r.Yq Xq W|jdk rP|j |j|¡dS)z,Return TeX language name for `language_code`Nr$)rZnormalize_language_tagÚlanguage_codesÚKeyErrorr¿ÚwarningÚwarn_msg)rCrÃÚtagrDrDrErÀ­s   zBabel.language_namecCs|jS)N)rÁ)rCrDrDrEÚ get_language¸szBabel.get_language)N)rbrcrdÚ__doc__rÐÚdictrÍÚitemsrÓrÅr@rÏrÀrÕrDrDrDrEris˜ ! ric@s eZdZdZdd„Zdd„ZdS)Ú SortableDictz°Dictionary with additional sorting methods Tip: use key starting with with '_' for sorting before small letters and with '~' for sorting after small letters. cCst| ¡ƒ}| ¡|S)zReturn sorted list of keys)rÍrÊÚsort)rCrÊrDrDrEÚ sortedkeysÆs zSortableDict.sortedkeyscs‡fdd„ˆ ¡DƒS)z$Return list of values sorted by keyscsg|] }ˆ|‘qSrDrD)r»Úkey)rCrDrEr¾Îsz-SortableDict.sortedvalues..)rÛ)rCrD)rCrEÚ sortedvaluesÌszSortableDict.sortedvaluesN)rbrcrdrÖrÛrÝrDrDrDrErÙÀsrÙc@seZdZdZdS)Ú PreambleCmdsz'Building blocks for the latex preamble.N)rbrcrdrÖrDrDrDrErÞÚsrÞzQ % abstract title \providecommand*{\DUtitleabstract}[1]{\centerline{\textbf{#1}}}a % admonition (specially marked topic) \providecommand{\DUadmonition}[2][class-arg]{% % try \DUadmonition#1{#2}: \ifcsname DUadmonition#1\endcsname% \csname DUadmonition#1\endcsname{#2}% \else \begin{center} \fbox{\parbox{0.9\linewidth}{#2}} \end{center} \fi }z\usepackage{color}zT % docinfo (width of docinfo table) \DUprovidelength{\DUdocinfowidth}{0.9\linewidth}zv % dedication topic \providecommand*{\DUCLASSdedication}{% \renewenvironment{quote}{\begin{center}}{\end{center}}% }a· % class handling for environments (block-level elements) % \begin{DUclass}{spam} tries \DUCLASSspam and % \end{DUclass}{spam} tries \endDUCLASSspam \ifx\DUclass\undefined % poor man's "provideenvironment" \newenvironment{DUclass}[1]% {\def\DocutilsClassFunctionName{DUCLASS#1}% arg cannot be used in end-part of environment. \csname \DocutilsClassFunctionName \endcsname}% {\csname end\DocutilsClassFunctionName \endcsname}% \fizU % error admonition title \providecommand*{\DUtitleerror}[1]{\DUtitle{\color{red}#1}}z % fieldlist environment \ifthenelse{\isundefined{\DUfieldlist}}{ \newenvironment{DUfieldlist}% {\quote\description} {\enddescription\endquote} }{}zc\usepackage{float} % float configuration \floatplacement{figure}{H} % place figures here definitelyav% numeric or symbol footnotes with hyperlinks \providecommand*{\DUfootnotemark}[3]{% \raisebox{1em}{\hypertarget{#1}{}}% \hyperlink{#2}{\textsuperscript{#3}}% } \providecommand{\DUfootnotetext}[4]{% \begingroup% \renewcommand{\thefootnote}{% \protect\raisebox{1em}{\protect\hypertarget{#1}{}}% \protect\hyperlink{#2}{#3}}% \footnotetext{#4}% \endgroup% }zt% Check output format \ifx\pdftexversion\undefined \usepackage{graphicx} \else \usepackage[pdftex]{graphicx} \fia% basic code highlight: \providecommand*\DUrolecomment[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} \providecommand*\DUroledeleted[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} \providecommand*\DUrolekeyword[1]{\textbf{#1}} \providecommand*\DUrolestring[1]{\textit{#1}}a % inline markup (custom roles) % \DUrole{#1}{#2} tries \DUrole#1{#2} \providecommand*{\DUrole}[2]{% % backwards compatibility: try \docutilsrole#1{#2} \ifcsname docutilsrole#1\endcsname% \csname docutilsrole#1\endcsname{#2}% \else \csname DUrole#1\endcsname{#2}% \fi% }ze % legend environment \ifthenelse{\isundefined{\DUlegend}}{ \newenvironment{DUlegend}{\small}{} }{}a¿ % lineblock environment \DUprovidelength{\DUlineblockindent}{2.5em} \ifthenelse{\isundefined{\DUlineblock}}{ \newenvironment{DUlineblock}[1]{% \list{}{\setlength{\partopsep}{\parskip} \addtolength{\partopsep}{\baselineskip} \setlength{\topsep}{0pt} \setlength{\itemsep}{0.15\baselineskip} \setlength{\parsep}{0pt} \setlength{\leftmargin}{#1}} \raggedright } {\endlist} }{}z° %% hyperlinks: \ifthenelse{\isundefined{\hypersetup}}{ \usepackage[%s]{hyperref} \usepackage{bookmark} \urlstyle{same} %% normal text font (alternatives: tt, rm, sf) }{}z/%% local table of contents \usepackage{minitoc}a % optionlist environment \providecommand*{\DUoptionlistlabel}[1]{\bf #1 \hfill} \DUprovidelength{\DUoptionlistindent}{3cm} \ifthenelse{\isundefined{\DUoptionlist}}{ \newenvironment{DUoptionlist}{% \list{}{\setlength{\labelwidth}{\DUoptionlistindent} \setlength{\rightmargin}{1cm} \setlength{\leftmargin}{\rightmargin} \addtolength{\leftmargin}{\labelwidth} \addtolength{\leftmargin}{\labelsep} \renewcommand{\makelabel}{\DUoptionlistlabel}} } {\endlist} }{}z· % providelength (provide a length variable and set default, if it is new) \providecommand*{\DUprovidelength}[2]{ \ifthenelse{\isundefined{#1}}{\newlength{#1}\setlength{#1}{#2}}{} }zp % rubric (informal heading) \providecommand*{\DUrubric}[1]{% \subsubsection*{\centering\textit{\textmd{#1}}}}z¥ % sidebar (text outside the main text flow) \providecommand{\DUsidebar}[1]{% \begin{center} \colorbox[gray]{0.80}{\parbox{0.9\linewidth}{#1}} \end{center} }zY % subtitle (for topic/sidebar) \providecommand*{\DUsubtitle}[1]{\par\emph{#1}\smallskip}zU % subtitle (in document title) \providecommand*{\DUdocumentsubtitle}[1]{{\large #1}}zz\usepackage{longtable,ltcaption,array} \setlength{\extrarowheight}{2pt} \newlength{\DUtablewidth} % internal use in tablesz*\usepackage{textcomp} % text symbol macroszn % text mode subscript \ifx\textsubscript\undefined \usepackage{fixltx2e} % since 2015 loaded by default \fizN % titlereference role \providecommand*{\DUroletitlereference}[1]{\textsl{#1}}a % title for topics, admonitions, unsupported section levels, and sidebar \providecommand*{\DUtitle}[2][class-arg]{% % call \DUtitle#1{#2} if it exists: \ifcsname DUtitle#1\endcsname% \csname DUtitle#1\endcsname{#2}% \else \smallskip\noindent\textbf{#2}\smallskip% \fi }z % transition (break, fancybreak, anonymous section) \providecommand*{\DUtransition}{% \hspace*{\fill}\hrulefill\hspace*{\fill} \vskip 0.5\baselineskip }cJ@s‚eZdZdZedƒdedƒdedƒdiZedƒd ed ƒd ed ƒd edƒdedƒdedƒdedƒdedƒdedƒdedƒdddi Zddddd d!d d"d#d$d%d&d'd(d)d*d+d,œZdd-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAœZdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[dQd\d]d^dQd\d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtd@dudvdwdxdydzd{d|d}d~dd€dd‚dƒd„d…d†d‡œIZ dˆd‰dŠd‹dŒœZ dS)ŽÚCharMapsz8LaTeX representations for active and Unicode characters.ú\z\textbackslash{}Ú{z\{Ú}z\}ú#z\#ú$z\$ú%z\%ú&z\&ú~z\textasciitilde{}Ú_z\_ú^z\textasciicircum{}ú"z\textquotedbl{}ú[z{[}ú]z{]}é­z\-z\enskipz\quadz\,z \hspace{0pt}z\hbox{-}z\AAz\ensuremath{\Leftrightarrow}z\ensuremath{\spadesuit}z\ensuremath{\clubsuit}Úffr˜ÚflÚffiÚffl)i i i i i i i/ i i+!iÔ!i`&ic&iûiûiûiûiûz\guillemotleft{}z\guillemotright{}z\textcompwordmark{}z \textendash{}z \textemdash{}z\textquoteleft{}z\textquoteright{}z\quotesinglbase{}z\textquotedblleft{}z\textquotedblright{}z\quotedblbase{}z\textperthousand{}z\textpertenthousand{}z\guilsinglleft{}z\guilsinglright{}z\textvisiblespace{}z\dag{}z\ddag{}z\dots{}z\texttrademark{})é é«é»i i i i i i i i i i0 i1 i9 i: i#$i i! i& i"!z \textcent{}z\textcurrency{}z \textyen{}z\textbrokenbar{}z\textsection{}z\textasciidieresis{}z\textcopyright{}z\textordfeminine{}z \textlnot{}z\textregistered{}z\textasciimacron{}z \textdegree{}z \textpm{}z\texttwosuperior{}z\textthreesuperior{}z\textasciiacute{}z \textmu{}z\textparagraph{}z\textonesuperior{}z\textordmasculine{}z\textonequarter{}z\textonehalf{}z\textthreequarters{}z \texttimes{}z \textdiv{}z \textflorin{}z\textacutedbl{}z \textbardbl{}z \textbullet{}z\textasciigrave{}z\textgravedbl{}z\textreferencemark{}z\textinterrobang{}z\textfractionsolidus{}z \textlquill{}z \textrquill{}z\textdiscount{}z\textcolonmonetary{}z\textfrenchfranc{}z \textlira{}z \textnaira{}z \textwon{}z \textdong{}z \texteuro{}z \textpeso{}z\textguarani{}z\textcelsius{}z \textnumero{}z\textcircledP{}z \textrecipe{}z\textservicemark{}z \textohm{}z \textmho{}z\textestimated{}z\textleftarrow{}z\textuparrow{}z\textrightarrow{}z\textdownarrow{}z \textminus{}z\textasteriskcentered{}z \textsurd{}z \textblank{}z\textopenbullet{}z\textbigcircle{}z\textmusicalnote{}z\textmarried{}z\textdivorced{}z \textlangle{}z \textrangle{})Ié¢é¤é¥é¦é§é¨é©éªé¬é®é¯é°é±é²é³é´éµé¶é¹éºé¼é½é¾é×é÷i’i¹iºi i" i2 i3 i5 i6 i; i= iD iE iF iR i¡ i£ i¤ i¦ i© i« i¬ i± i² i!i!i!i!i !i"!i&!i'!i.!i!i‘!i’!i“!i"i"i"i"$iæ%iï%ij&i­&i®&iè'ié'z \ding{170}z \ding{169}z \ding{51}z \ding{55})ie&if&i'i'N) rbrcrdrÖÚordÚallttÚspecialÚunsupported_unicodeÚutf8_supported_unicodeÚtextcompÚpifontrDrDrDrEr߸s rßc@s"eZdZdZddd„Zdd„ZdS) Ú DocumentClassz"Details of a LaTeX document class.FcCsL||_||_dddddg|_|jdkr4|j dd¡|jrH|j dd ¡dS) NÚsectionZ subsectionZ subsubsectionÚ paragraphZ subparagraph)ZbookZmemoirÚreportZscrbookZscrreprtrÚchapterr^)Údocument_classZ _with_partÚsectionsÚinsert)rCrZ with_partrDrDrEr@fs  zDocumentClass.__init__cCs.|t|jƒkr|j|dSdt |¡SdS)z©Return the LaTeX section name for section `level`. The name depends on the specific document class. Level is 1,2,3..., as level 0 is the title. r)zDUtitle[section%s]N)ÚlenrÚromanÚtoRoman)rCÚlevelrDrDrErqszDocumentClass.sectionN)F)rbrcrdrÖr@rrDrDrDrErcs rc@sàeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6S)7ÚTableaûManage a table while traversing. Maybe change to a mixin defining the visit/departs, but then class Table internal variables are in the Translator. Table style might be :standard: horizontal and vertical lines :booktabs: only horizontal lines (requires "booktabs" LaTeX package) :borderless: no borders around table cells :nolines: alias for borderless :colwidths-auto: column widths determined by LaTeX :colwidths-given: use colum widths from rST source cCs:||_||_d|_i|_g|_g|_g|_d|_d|_dS)NFr) Ú _translatorÚ _latex_typeÚ_openÚ_attrsÚ _col_widthÚ_rowspanÚstubsÚcolwidths_autoÚ _in_thead)rCZ translatorZ latex_typerDrDrEr@ŒszTable.__init__cCs"d|_g|_g|_i|_d|_dS)NTF)r$Ú _col_specsÚcaptionr%Z_in_head)rCrDrDrErM˜s z Table.opencCs(d|_d|_g|_i|_g|_d|_dS)NF)r$r+r,r%r(r))rCrDrDrErYžs z Table.closecCs|jS)N)r$)rCrDrDrEÚis_open¦sz Table.is_opencCsbdd„||Dƒ}y|d|_Wntk r:d|_YnXd|krLd|kpZd|koZd|k|_dS)NcSs g|]}|dkr| dd¡‘qS))rrrrrr)Úreplace)r»ÚclsrDrDrEr¾ªsz)Table.set_table_style..rÈrzcolwidths-autozcolwidths-given)ÚbordersÚ IndexErrorr))rCÚ table_styleÚclassesr0rDrDrEÚset_table_style©s  zTable.set_table_stylecCs|jdkr|jsdS|jS)NÚ longtablez longtable*)r#r,)rCrDrDrEÚget_latex_type¶szTable.get_latex_typecCs||j|<dS)N)r%)rCÚattrÚvaluerDrDrEÚset¼sz Table.setcCs||jkr|j|SdS)N)r%)rCr7rDrDrErƾs  z Table.getcCs|jdkrdSdS)Nrú|r$)r0)rCrDrDrEÚget_vertical_barÃs zTable.get_vertical_barcCsNddddœ}| | d¡pd¡}d| ¡|fg}|jsD| dd ¡d  |¡S) NrÇrÎÚr)ÚleftÚcenterÚrightÚalignr>z\begin{%s}[%s]rz%\setlength{\DUtablewidth}{\linewidth}r)rÆr6r)rrS)rCZ align_mapr@ZopeningrDrDrEÚ get_openingÉs zTable.get_openingcCs4g}|jdkr| d¡| d| ¡¡d |¡S)Nrz \bottomrulez\end{%s}r)r0r0r6rS)rCÚclosingrDrDrEÚ get_closingÓs   zTable.get_closingcCs$|j |¡|j |j d¡¡dS)NZstub)r+r0r(Ú attributesrÆ)rCÚnoderDrDrEÚ visit_colspecÜs zTable.visit_colspeccCsà| ¡}dgt|jƒ|_g|_|jr@|dt|jƒ}||Sd}d}x*|jD] }t|ddƒ|}||7}qPWd}|dkrˆ||}d }xJ|jD]@}|t|ddƒ|}|j |d ¡|d ||d f7}q”W||S) zýReturn column specification for longtable. Assumes reST line length being 80 characters. Table width is hairy. === === ABC DEF === === usually gets to narrow, therefore we add 1 (fiddlefactor). rrÇéPgÚcolwidthr)gÃõ(\Âí?gð?r$g{®Gázt?z%sp{%.3f\DUtablewidth})r;rr+r'r&r)Úfloatr0)rCrEÚbarZlatex_table_specÚwidthZ total_widthrHZfactorrDrDrEÚ get_colspecsás(    zTable.get_colspecscCs*yd|j|jStk r$dSXdS)z4Return columnwidth for current cell (not multicell).z%.2f\DUtablewidthÚ*N)r&Ú _cell_in_rowr1)rCrDrDrEÚget_column_widthszTable.get_column_widthcsHy.tdd„‡‡fdd„t|ƒDƒDƒƒ}d|Stk rBdSXdS)z)Return sum of columnwidths for multicell.cSsg|]}|‘qSrDrD)r»rKrDrDrEr¾sz/Table.get_multicolumn_width..csg|]}ˆjˆ|‘qSrD)r&)r»Úco)rCÚstartrDrEr¾szp{%.2f\DUtablewidth}rÇN)ÚsumÚranger1)rCrQZlen_Zmc_widthrD)rCrQrEÚget_multicolumn_width s zTable.get_multicolumn_widthcCs4|js dSd |j¡}d|j ¡kr,d|Sd|S)Nr$r)z\caption{%s}\\ z!\caption[]{%s (... continued)}\\ )r,rSr"Ú thead_depth)rCr,rDrDrEÚ get_captions  zTable.get_captioncCs|jdkrd|j ¡kSdS)Nr5r)r)r#r"rU)rCrDrDrEÚ need_recurses zTable.need_recursecCs2|jd7_|jdkrdgS|jdkr.dgSgS)Nr)rz\hline rz \toprule )r*r0)rCrDrDrEÚ visit_thead"s   zTable.visit_theadcCszg}|jdkr| d¡|jdkrhd|j ¡kr<| d¡n,| d¡| dt|jƒd¡| d ¡|jd8_|S) Nrz \midrule r5r)z\endfirsthead z \endhead z\multicolumn{%d}{c}z&{\hfill ... continued on next page} \\z \endfoot \endlastfoot )r0r0r#r"rUrr+r*)rCÚarDrDrEÚ depart_thead*s      zTable.depart_theadcCs d|_dS)Nr)rN)rCrDrDrEÚ visit_row<szTable.visit_rowcsÔdg}dˆ_x6ttˆjƒƒD]$}ˆj|dkrˆj|d8<qWˆjdkrЇfdd„ttˆjƒƒDƒ}t|ƒtˆjƒkrˆ| d¡nHd}| ¡x0y | ¡}WnPYnX|d ||f7}q–W| |¡|S) Nz \\ rr)rcs"g|]}ˆj|dkr|d‘qS)rr))r')r»Úi)rCrDrEr¾Gsz$Table.depart_row..z\hline r$z\cline{%d-%d} )rNrSrr'r0r0ÚreverseÚpop)rCÚresr\ZrowspansZclineZc_startrD)rCrEÚ depart_row?s&    zTable.depart_rowcCs y||j|<Wn YnXdS)N)r')rCÚcellr8rDrDrEÚ set_rowspanXszTable.set_rowspancCsy |j|SdSdS)Nr)r')rCrarDrDrEÚ get_rowspan^s zTable.get_rowspancCs|jS)N)rN)rCrDrDrEÚget_entry_numberdszTable.get_entry_numbercCs|jd7_dS)Nr))rN)rCrDrDrEÚ visit_entrygszTable.visit_entrycCs t|jƒ|jkr|j|jSdS)NF)rr(rN)rCrDrDrEÚis_stub_columnjs zTable.is_stub_columnN)rbrcrdrÖr@rMrYr-r4r6r9rÆr;rArCrFrLrOrTrVrWrXrZr[r`rbrcrdrerfrDrDrDrEr!|s6    # r!c@seZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZefdd„Zdd„Zd d „Zd d „Zd d„Ze d¡fdd„Zdd„Zdd„Zd£dd„Zdd„Zd¤dd„Zdd„Zd d!„Z d"d#„Z!d$d%„Z"d&d'„Z#d(d)„Z$d*d+„Z%d,d-„Z&d.d/„Z'd0d1„Z(d2d3„Z)d4d5„Z*d6d7„Z+d¥d8d9„Z,d:d;„Z-dd?„Z/d@dA„Z0dBdC„Z1dDdE„Z2dFdG„Z3dHdI„Z4dJdK„Z5dLdM„Z6dNdO„Z7dPdQ„Z8dRdS„Z9dTdU„Z:dVdW„Z;dXdY„Zd^d_„Z?d`da„Z@dbdc„ZAddde„ZBdfdg„ZCdhdi„ZDdjdk„ZEdldm„ZFdndo„ZGdpdq„ZHdrds„ZIdtdu„ZJdvdw„ZKdxdy„ZLdzd{„ZMd|d}„ZNd~d„ZOd€d„ZPd‚dƒ„ZQd„d…„ZRd†d‡„ZSdˆd‰„ZTdŠd‹„ZUdŒd„ZVdŽd„ZWdd‘„ZXd’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ß„Zdàdá„Z€dâdã„Zdädå„Z‚dædç„Zƒ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û„Zdüdý„ZŽdþdÿ„Zdd„Zdd„Z‘dd„Z’dd„Z“dd „Z”d d „Z•d d „Z–dd„Z—dd„Z˜d§dd„Z™dd„Zšdd„Z›dd„Zœdd„Zdd„Zždd „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§d1d2„Z¨d3d4„Z©d5d6„Zªd7d8„Z«d9d:„Z¬d;d<„Z­d=d>„Z®d?d@„Z¯dAdB„Z°dCdD„Z±dEdF„Z²dGdH„Z³dIdJ„Z´dKdL„ZµdMdN„Z¶dOdP„Z·dQdR„Z¸dSdT„Z¹dUdV„ZºdWdX„Z»dYdZdZd[d\œZ¼d]d^„Z½d_d`„Z¾dadb„Z¿dcdd„ZÀdedf„ZÁdgdh„ZÂdidj„ZÃdkdl„ZÄdmdn„ZÅdodp„ZÆdqdr„ZÇdsdt„ZÈdudv„ZÉdwdx„ZÊdydz„ZËd{d|„ZÌd}d~„ZÍdd€„ZÎdd‚„ZÏdƒd„„ZÐd…d†„ZÑd‡dˆ„ZÒdZÓd‰dŠ„ZÔd‹dŒ„ZÕddŽ„ZÖdd„Z×d‘d’„ZØd“d”„ZÙd•d–„ZÚd—d˜„ZÛd™dš„ZÜd›dœ„ZÝddž„ZÞdŸd „Zßd¡d¢„ZàdS(¨rAz¾ Generate code for 8-bit LaTeX from a Docutils document tree. See the docstring of docutils.writers._html_base.HTMLTranslator for notes on and examples of safe subclassing. Fr/rcsXtj ˆ|¡ˆjjjˆ_ˆjjjˆ_|jˆ_}ˆ  |j ¡ˆ_ |j ˆ_ |j ˆ_ |jˆ_|jˆ_|jˆ_|jˆ_t|ddƒˆ_|jˆ_|j dd¡ˆ_dˆ_dˆ_|jdkrÈt d|j¡\}ˆ_ˆ_}n |jrÔdˆ_ˆjjrðˆjj dd ¡ˆ_ndˆ_t  !|j"|j¡ˆ_#||j"|jƒˆ_$ˆj#j%d ˆ_&ˆjj'g}ˆj$j(d krL| )ˆj$j(¡d *d d „|Dƒ¡ˆ_'t+|j,|j-ƒˆ_.ˆjj/dkrˆdˆ_0n*ˆjj/ 1¡dkr¤t2j3ˆ_0ndˆjj/ˆ_0|j4ˆ_4dˆj'ˆjj,fgˆ_5t6ƒˆ_7dˆj7d<|j8gˆ_8t6ƒˆ_9gˆ_:gˆ_;gˆ_gˆ_?gˆ_@gˆ_Agˆ_Bgˆ_Cgˆ_Dgˆ_Egˆ_Fgˆ_Ggˆ_Hgˆ_Id gˆ_Jgˆ_Kd ˆ_Lgˆ_Mgˆ_NtOˆdƒˆ_PˆjBˆ_Qgˆ_Rˆj dkrªdˆj ˆj7d<ˆjSsˆjrÊdˆjˆj7d<xHˆj d¡D]8}| T¡}|dkrúdˆj7d<n|dkrØdˆj7d<qØW|j, Ud ¡d!krTˆj' Ud"¡d!ksJˆj' Ud#¡d!krTd$ˆj7d%<‡fd&d „tV W|¡Dƒˆ_Xˆjd'kr‚dˆ_Ynd(ˆjˆjfˆ_Y|jYr°ˆjYd|jY7_Y|jZrÀd)t2_[n”|j\}|dk rt]|t^ˆj.j_ƒƒ}d*ˆj.j_krø|d 8}ˆj.j_d d+kr|d 8}d,|t2_[t`|d-ƒrT|jad krTd.ˆj.j_d |jad fˆj7d-<dS)/NÚ font_encodingr$rèz\_rz (\w+)(.*)ÚverbatimrÄr)r)rqr$cSsg|] }|r|‘qSrDrD)r»Z_frDrDrEr¾Ðsz,LaTeXTranslator.__init__..z\usepackage{graphicx}Úautoz\usepackage[%s]{graphicx}z\documentclass[%s]{%s}z\usepackage{ifthen}Z__staticr5Úasciiz\usepackage[%s]{inputenc}Ú _inputencz\usepackage[%s]{fontenc}Z_fontencÚOT1z+\DeclareTextSymbol{\textquotedbl}{OT1}{`\"}Z_textquotedblOT1)r1ZT2AZT2BZT2CZT4ZT5z,\DeclareTextSymbolDefault{\textquotedbl}{T1}Z _textquotedblZscrrÈZDIVZBCORz\usepackage{typearea}Ztypeareacsg|]}ˆ |¡‘qSrD)Ústylesheet_call)r»rR)rCrDrEr¾@s)Ú0ÚfalseÚFalser$z(colorlinks=true,linkcolor=%s,urlcolor=%sz\setcounter{secnumdepth}{0}rr^z\setcounter{secnumdepth}{%d}Ú sectnum_startz\setcounter{%s}{%d})brÚ NodeVisitorr@rHr¿rÒÚwarnÚerrorrNÚto_latex_encodingZoutput_encodingÚlatex_encodingr*r+rÚ_use_latex_citationsZreference_labelÚ_reference_labelZhyperlink_colorr-rLrgr.Úsection_enumerator_separatorr.Úliteral_block_envÚliteral_block_optionsÚreÚsplitZuse_verbatim_when_possibleZ use_bibtexÚbibtexrrÕrÃÚlanguage_moduleÚbabelZauthor_separatorsÚauthor_separatorZdocumentoptionsrÁr0rSrZ documentclassZuse_part_sectionÚd_classZgraphicx_optionÚgraphicx_packagerºrÞÚ graphicx_autoÚdocutils_footnotesr3rÙr4r5r6r7r8r9r:r;r<r=r>r?ÚcontextÚ title_labelsÚsubtitle_labelsÚ author_stackÚdateÚpdfinfoÚ pdfauthorÚ_section_numberÚ_enumeration_countersZ_max_enumeration_countersÚ _bibitemsÚ table_stackr!Ú active_tableÚoutÚ out_stackÚis_xetexÚstripÚfindrZget_stylesheet_listr&Úhyperref_optionsZ sectnum_xformÚ secnumdepthr2ÚminrrÚhasattrrq)rCrHZ babel_classrNr#Z d_optionsÚencr˜rD)rCrEr@¡sÚ                          zLaTeXTranslator.__init__c Csòtj |¡\}}|dk}|jjrÀ|r,|d}y$tj|dd ¡}|jj  |¡WnNt k rž}z0d|t |j ƒf}|j j |¡d| dd¡Sd }~XYnX|r´d d |d g¡}d ||fS|rÎ|}d }nd}|jjrêt |jj|¡}||S)z8Return code to reference or embed stylesheet file `path`)z.styr$z.styzutf-8)Ú source_pathÚencodingz#Cannot embed stylesheet '%s': %s.z% rz % Nz \makeatletterz \makeatotherz%% embedded stylesheet: %s %sz\usepackage{%s}z \input{%s})rQrRÚsplitextrNr'rZ FileInputrXZrecord_dependenciesÚaddrPrÚstrerrorrHr¿rtr.rSr%rZ relative_pathZ _destination) rCrRÚbaseÚextÚ is_packageÚcontentÚerrÚmsgÚcmdrDrDrErm{s4  zLaTeXTranslator.stylesheet_callcCs\ddddddddd d d d d ddœ}| ¡}||kr:||S| dd¡ dd¡}| d¡dS)zƒTranslate docutils encoding name into LaTeX's. Default method is remove "-" and "_" chars from docutils_encoding. Úlatin1Úlatin2Úlatin3Úlatin4Úiso88595Úlatin5Úlatin9ZmaccyrÚcp1251zkoi8-rzkoi8-uÚcp1250Úcp1252rj)z iso-8859-1z iso-8859-2z iso-8859-3z iso-8859-4z iso-8859-5z iso-8859-9z iso-8859-15Ú mac_cyrillicz windows-1251zkoi8-rzkoi8-uz windows-1250z windows-1252zus-asciirèr$r/ú:r)rºr.r})rCZdocutils_encodingr·rrDrDrErus&z!LaTeXTranslator.to_latex_encodingcCs |jj|S)N)rÚlabels)rCZ docutil_labelrDrDrEÚlanguage_labelÆszLaTeXTranslator.language_labelc Cs0|jr |Stj ¡}|js&| tj¡|jr6|tdƒ=|jdkr–|j s–|j rrd|tdƒ<|j |j d<d|tdƒ<n$d|tdƒ<d |td ƒ<d |td ƒ<|j r¨d |tdƒ<|j sh|j d¡sà| tj¡| tj¡| tj¡| tj¡xz|D]r}t|ƒ}|tjkrtj|j d<qò|tjkr0d|j d<qò|jdkrò|tjkròd|tj|f|j dt|ƒ<qòW| |¡}|j sºd}|j rŽ|d7}x*|dD]}| |||d|¡}q˜W|jr| d¡}x8t|dd…ƒD]$\}} |  ¡sÞ||d 7<qÞWd |¡}|j r,|j s,| dd¡}|S)aUReturn text with 'problematic' characters escaped. * Escape the special printing characters ``# $ % & ~ _ ^ \ { }``, square brackets ``[ ]``, double quotes and (in OT1) ``< | >``. * Translate non-supported Unicode characters. * Separate ``-`` (and more in literal text) to prevent input ligatures. rè)rlr$z \underline{~}Úgraphicxz\reflectbox{/}ràz \textbar{}r:z \textless{}úrçú Úutf8rz\usepackage{pifont}rz"\DeclareUnicodeCharacter{%04X}{%s}rkr/z,`'"<>éz{}rNrÈz\\ z z ~)rhrßrÚcopyÚupdaterÚinside_citation_reference_labelrrgr”Úliteralrƒr4Úinsert_non_breaking_blanksrvÚ startswithrrrrrÞrWr_r.Úinsert_newliner}Ú enumerateÚlstriprS) rCÚtextÚtableÚchÚcpZseparate_charsÚcharrar\ÚlinerDrDrEÚencodeÉsb                    "     zLaTeXTranslator.encodez[ ]cCs| | d|¡¡S)z1Cleanse, encode, and return attribute value text.r¹)rËÚsub)rCrÅÚ whitespacerDrDrEÚattvalszLaTeXTranslator.attvalcCst|jtjƒS)z@Check whether a node represents an inline or block-level element)Ú isinstanceÚparentrZ TextElement)rCrErDrDrEÚ is_inline(szLaTeXTranslator.is_inlinecCs$|j d dd„|dDƒ¡¡dS)z)Append hypertargets for all ids of `node`z% cSsg|] }d|‘qS)z"\raisebox{1em}{\hypertarget{%s}{}}rD)r»r rDrDrEr¾0sz7LaTeXTranslator.append_hypertargets..ÚidsN)r’r0rS)rCrErDrDrEÚappend_hypertargets,sz#LaTeXTranslator.append_hypertargetsTcCs.dd„| dg¡Dƒ}|r*|r*| dd¡|S)zˆReturn list of label definitions for all ids of `node` If `set_anchor` is True, an anchor is set with \phantomsection. cSsg|] }d|‘qS)z \label{%s}rD)r»r rDrDrEr¾8sz1LaTeXTranslator.ids_to_labels..rÒrz\phantomsection)rÆr)rCrEÚ set_anchorr´rDrDrEÚ ids_to_labels3s zLaTeXTranslator.ids_to_labelscCsDdd„|dDƒ}|r@|d dd¡|d<dd„|dDƒ|d<d S) z8Convert ``align-*`` class arguments into alignment args.cSsg|]}| d¡r|‘qS)zalign-)rÁ)r»r/rDrDrEr¾@sz:LaTeXTranslator.set_align_from_classes..r3rÈzalign-r$r@cSsg|]}| d¡s|‘qS)zalign-)rÁ)r»r/rDrDrEr¾CsN)r.)rCrEr@rDrDrEÚset_align_from_classes=sz&LaTeXTranslator.set_align_from_classesNcCsP| d|¡}|dkr"|j d¡n*|dkr8|j d¡n|dkrL|j d¡dS)Nr@r=z \raggedright r>z \centering r?z \raggedleft )rÆr’r0)rCrErr@rDrDrEÚinsert_align_declarationFs z(LaTeXTranslator.insert_align_declarationcCsŒt|jtjƒs|j d¡xl|dD]`}| d¡rh|j |dd…¡}|r„d|jj |<|j d|¡q$t j |j d<|j d |¡q$WdS) z6Open a group and insert declarations for class values.rr3z language-é NTz\begin{selectlanguage}{%s} ÚDUclassz\begin{DUclass}{%s} ) rÏrÐrÚcompoundr’r0rÁr€rÀrÂrÞÚduclassr6)rCrEr/rÁrDrDrEÚ duclass_openOs    zLaTeXTranslator.duclass_opencCsnxht|dƒD]X}| d¡rN|j |dd…¡}|rfd|jj|<|j d¡qtj|j d<|j d¡qWdS) z$Close a group of class declarations.r3z language-rØNTz\end{selectlanguage} rÙz\end{DUclass} ) ÚreversedrÁr€rÀrÂr’r0rÞrÛr6)rCrEr/rÁrDrDrEÚ duclass_close]s   zLaTeXTranslator.duclass_closecCs|j |j¡||_dS)N)r“r0r’)rCZnew_outrDrDrEÚpush_output_collectorisz%LaTeXTranslator.push_output_collectorcCs|j ¡|_dS)N)r“r^r’)rCrDrDrEÚpop_output_collectormsz$LaTeXTranslator.pop_output_collectorcCs|j | | ¡¡¡dS)N)r’r0rËÚastext)rCrErDrDrEÚ visit_TextsszLaTeXTranslator.visit_TextcCsdS)NrD)rCrErDrDrEÚ depart_TextvszLaTeXTranslator.depart_TextcCs|d dd¡| |¡dS)Nr3rZ abbreviation)rÚ visit_inline)rCrErDrDrEÚvisit_abbreviationysz"LaTeXTranslator.visit_abbreviationcCs| |¡dS)N)Ú depart_inline)rCrErDrDrEÚdepart_abbreviation}sz#LaTeXTranslator.depart_abbreviationcCs|d dd¡| |¡dS)Nr3rZacronym)rrä)rCrErDrDrEÚ visit_acronym€szLaTeXTranslator.visit_acronymcCs| |¡dS)N)ræ)rCrErDrDrEÚdepart_acronym„szLaTeXTranslator.depart_acronymcCs| |d¡dS)NÚaddress)Úvisit_docinfo_item)rCrErDrDrEÚ visit_address‡szLaTeXTranslator.visit_addresscCs| |¡dS)N)Údepart_docinfo_item)rCrErDrDrEÚdepart_addressŠszLaTeXTranslator.depart_addresscCsXtj|jd<d|dkr$tj|jd<dd„|dDƒ|d<|j dd |d¡¡dS)NÚ admonitionrtr3cSsg|]}|dkr|‘qS)rïrD)r»r/rDrDrEr¾’sz4LaTeXTranslator.visit_admonition..z \DUadmonition[%s]{rÄ)rÞrïr6rtr’r0rS)rCrErDrDrEÚvisit_admonitions    z LaTeXTranslator.visit_admonitioncCs|j d¡dS)Nz} )r’r0)rCrErDrDrEÚdepart_admonition–sz!LaTeXTranslator.depart_admonitioncCs| |d¡dS)NÚauthor)rë)rCrErDrDrEÚ visit_author™szLaTeXTranslator.visit_authorcCs| |¡dS)N)rí)rCrErDrDrEÚ depart_authorœszLaTeXTranslator.depart_authorcCsdS)NrD)rCrErDrDrEÚ visit_authorsŸszLaTeXTranslator.visit_authorscCsdS)NrD)rCrErDrDrEÚdepart_authors£szLaTeXTranslator.depart_authorscCs| |¡|j d¡dS)Nz \begin{quote})rÜr’r0)rCrErDrDrEÚvisit_block_quote¦s z!LaTeXTranslator.visit_block_quotecCs|j d¡| |¡dS)Nz \end{quote} )r’r0rÞ)rCrErDrDrEÚdepart_block_quoteªs z"LaTeXTranslator.depart_block_quotecCs.| |¡|jr|j d¡n |j d¡dS)Nz\begin{list}{}{}z\begin{itemize})rÜÚ is_toc_listr’r0)rCrErDrDrEÚvisit_bullet_list®s z!LaTeXTranslator.visit_bullet_listcCs.|jr|j d¡n |j d¡| |¡dS)Nz \end{list} z\end{itemize} )rùr’r0rÞ)rCrErDrDrEÚdepart_bullet_listµs z"LaTeXTranslator.depart_bullet_listcCs"|j d¡|dr| |¡dS)Nz\textsuperscript{r3)r’r0rä)rCrErDrDrEÚvisit_superscript¼s z!LaTeXTranslator.visit_superscriptcCs"|dr| |¡|j d¡dS)Nr3râ)rær’r0)rCrErDrDrEÚdepart_superscriptÁs z"LaTeXTranslator.depart_superscriptcCs.tj|jd<|j d¡|dr*| |¡dS)NÚ textsubscriptz\textsubscript{r3)rÞrþr6r’r0rä)rCrErDrDrEÚvisit_subscriptÆs  zLaTeXTranslator.visit_subscriptcCs"|dr| |¡|j d¡dS)Nr3râ)rær’r0)rCrErDrDrEÚdepart_subscriptÌs z LaTeXTranslator.depart_subscriptcCs|j d¡dS)Nz \caption{)r’r0)rCrErDrDrEÚ visit_captionÑszLaTeXTranslator.visit_captioncCs|j d¡dS)Nz} )r’r0)rCrErDrDrEÚdepart_captionÔszLaTeXTranslator.depart_captioncCs.tj|jd<|j d¡|dr*| |¡dS)NÚtitlereferencez\DUroletitlereference{r3)rÞrr6r’r0rä)rCrErDrDrEÚvisit_title_reference×s  z%LaTeXTranslator.visit_title_referencecCs"|dr| |¡|j d¡dS)Nr3râ)rær’r0)rCrErDrDrEÚdepart_title_referenceÝs z&LaTeXTranslator.depart_title_referencecCs,|jr| g¡n|j d¡| |¡dS)Nz\begin{figure}[b])rwrßr’r0rÓ)rCrErDrDrEÚvisit_citationâs  zLaTeXTranslator.visit_citationcCsN|jr>|jd}d |jdd…¡}|j ||g¡| ¡n |j d¡dS)Nrr$r)z \end{figure} )rwr’rSrr0rà)rCrEÚlabelrÅrDrDrEÚdepart_citationìs   zLaTeXTranslator.depart_citationcCs‚|jr@|js |j d¡d|_q~|jddks6tdƒ‚|jd=n>d}d|krV|d}nd|krn|jj|d}|j d |¡dS) Nz\cite{r)rÈ)r¹rz2unexpected non-whitespace while in reference labelr$ÚrefidÚrefnamez\hyperlink{%s}{[)rwr¾r’r0r?ÚAssertionErrorrHÚnameids)rCrEÚhrefrDrDrEÚvisit_citation_referenceõs   z(LaTeXTranslator.visit_citation_referencecCs|jr€d}|jdddd}t|ƒdkrZ|d}t|tjƒrZ| ¡dkrZ|dj|jkrZd}|rl|j  d¡qŒ|j  d¡d|_ n |j  d ¡dS) NFT)ZdescendZsiblingsZ include_selfr)r)r¹rrÄrâz]}) rwZtraverserrÏrÚTextráÚ __class__r’r0r¾)rCrEZfollowup_citationZ next_siblingsÚnextrDrDrEÚdepart_citation_references    z)LaTeXTranslator.depart_citation_referencecCs|j d¡dS)Nz (\textbf{)r’r0)rCrErDrDrEÚvisit_classifiersz LaTeXTranslator.visit_classifiercCs|j d¡dS)Nz}))r’r0)rCrErDrDrEÚdepart_classifiersz!LaTeXTranslator.depart_classifiercCs|j |¡dS)N)r‘rF)rCrErDrDrErF szLaTeXTranslator.visit_colspeccCsdS)NrD)rCrErDrDrEÚdepart_colspec#szLaTeXTranslator.depart_colspeccCs@t|jtjƒs|j d¡|j d| ¡ dd¡¡tj‚dS)Nrz%% %s z % ) rÏrÐrrÚr’r0rár.ÚSkipNode)rCrErDrDrEÚ visit_comment&s zLaTeXTranslator.visit_commentcCsdS)NrD)rCrErDrDrEÚdepart_comment-szLaTeXTranslator.depart_commentcCs8t|jtjƒr|j d¡|d dd¡| |¡dS)Nrr3rrÚ)rÏrÐrrÚr’r0rrÜ)rCrErDrDrEÚvisit_compound0s zLaTeXTranslator.visit_compoundcCs| |¡dS)N)rÞ)rCrErDrDrEÚdepart_compound6szLaTeXTranslator.depart_compoundcCs| |d¡dS)NÚcontact)rë)rCrErDrDrEÚ visit_contact9szLaTeXTranslator.visit_contactcCs| |¡dS)N)rí)rCrErDrDrEÚdepart_contact<szLaTeXTranslator.depart_contactcCs| |¡dS)N)rÜ)rCrErDrDrEÚvisit_container?szLaTeXTranslator.visit_containercCs| |¡dS)N)rÞ)rCrErDrDrEÚdepart_containerBsz LaTeXTranslator.depart_containercCs| |d¡dS)NÚ copyright)rë)rCrErDrDrEÚvisit_copyrightEszLaTeXTranslator.visit_copyrightcCs| |¡dS)N)rí)rCrErDrDrEÚdepart_copyrightHsz LaTeXTranslator.depart_copyrightcCs| |d¡dS)NrŠ)rë)rCrErDrDrEÚ visit_dateKszLaTeXTranslator.visit_datecCs| |¡dS)N)rí)rCrErDrDrEÚ depart_dateNszLaTeXTranslator.depart_datecCsdS)NrD)rCrErDrDrEÚvisit_decorationQsz LaTeXTranslator.visit_decorationcCsdS)NrD)rCrErDrDrEÚdepart_decorationUsz!LaTeXTranslator.depart_decorationcCsdS)NrD)rCrErDrDrEÚvisit_definitionXsz LaTeXTranslator.visit_definitioncCs|j d¡dS)Nr)r’r0)rCrErDrDrEÚdepart_definition[sz!LaTeXTranslator.depart_definitioncCs| |¡|j d¡dS)Nz\begin{description} )rÜr’r0)rCrErDrDrEÚvisit_definition_list^s z%LaTeXTranslator.visit_definition_listcCs|j d¡| |¡dS)Nz\end{description} )r’r0rÞ)rCrErDrDrEÚdepart_definition_listbs z&LaTeXTranslator.depart_definition_listcCsdS)NrD)rCrErDrDrEÚvisit_definition_list_itemfsz*LaTeXTranslator.visit_definition_list_itemcCsdS)NrD)rCrErDrDrEÚdepart_definition_list_itemisz+LaTeXTranslator.depart_definition_list_itemcCs|j d¡dS)Nr¹)r’r0)rCrErDrDrEÚvisit_descriptionlsz!LaTeXTranslator.visit_descriptioncCsdS)NrD)rCrErDrDrEÚdepart_descriptionosz"LaTeXTranslator.depart_descriptioncCs| |j¡dS)N)rßr<)rCrErDrDrEÚ visit_docinforszLaTeXTranslator.visit_docinfocCsN| ¡|jrJd|jd<tj|jd<tj|jd<|j dd¡|j d¡dS)Nz\usepackage{tabularx}ZtabularxÚ_providelengthr<rz@ % Docinfo \begin{center} \begin{tabularx}{\DUdocinfowidth}{lX} z\end{tabularx} \end{center} )ràr<r4rÞÚ providelengthr6rr0)rCrErDrDrEÚdepart_docinfous   zLaTeXTranslator.depart_docinfocCs|dkr|j | | ¡¡¡|jr´|dkr|dks:|jsF|j g¡|dkrjd|_| | ¡¡}d|_n| | ¡¡}|jd |¡tj ‚n$|dkr´|j  | | ¡¡¡tj ‚|j  d|  |¡¡|dkròd|_|j  d ¡|j  d ¡n |j  d ¡dS) Nrò)ròÚ organizationrrêrêTFrÈrŠz\textbf{%s}: & z{\raggedright z } \\ z \\ )rŒr0rÎrár+r‰rÂrËrrrŠr’rµr†)rCrEÚnamerÅrDrDrErë„s,  z"LaTeXTranslator.visit_docinfo_itemcCs|j |j ¡¡d|_dS)NF)r’r0r†r^rÂ)rCrErDrDrErí¡sz#LaTeXTranslator.depart_docinfo_itemcCs| |¡dS)N)Úvisit_literal_block)rCrErDrDrEÚvisit_doctest_block¦sz#LaTeXTranslator.visit_doctest_blockcCs| |¡dS)N)Údepart_literal_block)rCrErDrDrEÚdepart_doctest_block©sz$LaTeXTranslator.depart_doctest_blockcCs:|jst|ƒr6t|dtjƒr6|j|j|dd7_dS)NrF)rÔ)r+rrÏrr8r‡rÕ)rCrErDrDrEÚvisit_document¬szLaTeXTranslator.visit_documentcCsl|jjs|jjdkr"| ¡|jd<|j ¡|_|j ¡|_|j tj |j ¡|j rr|j   |j ¡}|j d|¡|jr”|jdg|jdg7_|js°|jrj|js°|jrj|j d¡|jrÐ|j dd¡d   |j¡g|j}|jr |d d d   |j¡g|j7}|j d d   |¡¡dd„|jDƒ}|j dd  |¡¡|j dd  |j¡¡|j d¡|jrHt|jƒdkrH|jsd }x.|jD]$}t|ƒt|dƒkr–|d}q–W|j d|¡x>|jD]4}|d dd¡}|j d|d||df¡qÖW|j d¡n,|j d|jd¡|j d|jd¡d|jkrh|jsh|j d¡dS)N)r$rqr€z pdfauthor={%s}z \hypersetup{râz%%% Title Datarz\phantomsection% r$z \\ % subtitlez\DUdocumentsubtitle{%s}z \title{%s}z% cSsg|]}d |¡‘qS)z\\ )rS)r»Z author_entryrDrDrEr¾Ôsz3LaTeXTranslator.depart_document..z \author{%s}z \and z \date{%s}z, z \maketitle z \begin{thebibliography}{%s} z\_rèz\bibitem[%s]{%s}{%s} r)z\end{thebibliography} z \bibliographystyle{%s} z\bibliography{%s} Úminitocz' \faketableofcontents % for local ToCs ) r€rÂrÁr4rÝr6r7r0rÞÚlinkingr—rŒrrSr‹r8r+r‰rŠr:rr‡r9rˆr;rwrrr~r’r.Ú has_latex_toc)rCrEZauthorsr8Z widest_labelZbiZcite_keyrDrDrEÚdepart_document²s\         zLaTeXTranslator.depart_documentcCs"|j d¡|dr| |¡dS)Nz\emph{r3)r’r0rä)rCrErDrDrEÚvisit_emphasisõs zLaTeXTranslator.visit_emphasiscCs"|dr| |¡|j d¡dS)Nr3râ)rær’r0)rCrErDrDrEÚdepart_emphasisús zLaTeXTranslator.depart_emphasiscCs2x,|j |j ¡¡r,|j d¡|j ¡qWdS)Nz & )r‘rcrdr’r0re)rCrDrDrEÚ(insert_additional_table_colum_delimiterss  z8LaTeXTranslator.insert_additional_table_colum_delimitersc Cs–|j ¡dkr| ¡n |j d¡d|krszLaTeXTranslator.depart_entrycCs|j ¡dS)N)r‘r[)rCrErDrDrEr[DszLaTeXTranslator.visit_rowcCs|j |j ¡¡dS)N)r’rÌr‘r`)rCrErDrDrEr`GszLaTeXTranslator.depart_rowc CsŒdddddddœ}dd d d g}d}|jrt|jr`|jr`|js`d  d d„|jd|j…Dƒ¡|j}|jrt||jd7}|| dd¡7}|| d¡}| dd¡}t|jƒd}dt   |¡  ¡}d||||f} |j  | ¡|  |¡|dkr(|j  d¡|||f||dkrb|j  d|| f¡n:d||j|<|j  d¡|j  d| ¡|j  d|¡d|krˆ|j  d||ddf¡dS)Nr$rjÚalphÚAlphrZRoman)r$rjZ loweralphaZ upperalphaZ lowerromanZ upperroman)r$rjr()ú(rEú))r$rr()r$rFr(r(cSsg|] }t|ƒ‘qSrD)rW)r»ÚnrDrDrEr¾\sz9LaTeXTranslator.visit_enumerated_list..rÈÚprefixÚenumtypeÚsuffixr)Úenumz %s\%s{%s}%séz\begin{enumerate}z \renewcommand{\label%s}{%s}z\newcounter{%s}z \begin{list}z{%s}z{\usecounter{%s}}rQz \setcounter{%s}{%d})r-r.Ú section_levelrŽrSrryrÆrrrrºr0rÜr’r6) rCrEÚtypesr´rJrKrLZenumeration_levelZ counter_namerrDrDrEÚvisit_enumerated_listJsP         z%LaTeXTranslator.visit_enumerated_listcCs@t|jƒdkr|j d¡n |j d¡| |¡|j ¡dS)NrNz\end{enumerate} z \end{list} )rrŽr’r0rÞr^)rCrErDrDrEÚdepart_enumerated_list}s   z&LaTeXTranslator.depart_enumerated_listcCsdS)NrD)rCrErDrDrEÚ visit_field…szLaTeXTranslator.visit_fieldcCsdS)NrD)rCrErDrDrEÚ depart_field‰szLaTeXTranslator.depart_fieldcCs|j d¡dS)Nz%[visit_field_argument] )r’r0)rCrErDrDrEÚvisit_field_argumentsz$LaTeXTranslator.visit_field_argumentcCs|j d¡dS)Nz%[depart_field_argument] )r’r0)rCrErDrDrEÚdepart_field_argumentsz%LaTeXTranslator.depart_field_argumentcCsdS)NrD)rCrErDrDrEÚvisit_field_body“sz LaTeXTranslator.visit_field_bodycCs|j|jkr|j d¡dS)Nz\\ )r’r<r0)rCrErDrDrEÚdepart_field_body–s z!LaTeXTranslator.depart_field_bodycCs2| |¡|j|jk r.tj|jd<|j d¡dS)NÚ fieldlistz\begin{DUfieldlist})rÜr’r<rÞrYr6r0)rCrErDrDrEÚvisit_field_listšs   z LaTeXTranslator.visit_field_listcCs&|j|jk r|j d¡| |¡dS)Nz\end{DUfieldlist} )r’r<r0rÞ)rCrErDrDrEÚdepart_field_list s  z!LaTeXTranslator.depart_field_listcCs*|j|jkr|j d¡n |j d¡dS)Nz\textbf{z \item[{)r’r<r0)rCrErDrDrEÚvisit_field_name¥s z LaTeXTranslator.visit_field_namecCs*|j|jkr|j d¡n |j d¡dS)Nz}: &z:}])r’r<r0)rCrErDrDrEÚdepart_field_name­s z!LaTeXTranslator.depart_field_namecCsrtj|jd<| |¡|j dd¡}|dkr>|j d|¡n |j d¡| d¡rn|j| |¡dg7_dS)NÚfloat_settingsr@r>z\begin{figure} %% align = "%s" z\begin{figure} rÒr) rÞr^r4rÜrDrÆr’r0rÕ)rCrEÚ alignmentrDrDrEÚ visit_figure³s    zLaTeXTranslator.visit_figurecCs|j d¡| |¡dS)Nz \end{figure} )r’r0rÞ)rCrErDrDrEÚ depart_figureÃs zLaTeXTranslator.depart_figurecCs| g¡|j d¡dS)Nz\newcommand{\DUfooter}{)rßr’r0)rCrErDrDrEÚ visit_footerÇs zLaTeXTranslator.visit_footercCs*|j d¡d |j¡|jd<| ¡dS)Nrâr$z~footer)r’r0rSr4rà)rCrErDrDrEÚ depart_footerËs zLaTeXTranslator.depart_footercCsØy|dd}Wn tk r0|dd}YnX|jrÔtj|jd<|d ¡}|jjdkrdd|}|j  d|dd||  |¡f¡|d|dkr¬|j|  |¡7_|d d…rÔt |d t jƒrÔ|j  d ¡dS) NÚbackrefsrrÒÚ footnotesrz[%s]z%% \DUfootnotetext{%s}{%s}{%s}{Únamesr)rå)r1r…rÞrer6rárNÚfootnote_referencesr’r0rËrÕrÏrr)rCrEZbackrefÚnumrDrDrEÚvisit_footnoteÐs   zLaTeXTranslator.visit_footnotecCs|j d¡dS)Nz} )r’r0)rCrErDrDrEÚdepart_footnoteãszLaTeXTranslator.depart_footnotecCsžd}d|kr|d}nd|kr.|jj|d}|jj}|dkrf| |¡|j d|¡|j d¡n4tj |j d<|j d|d d |f¡|j d ¡dS) Nr$r r rz\hyperlink{%s}{[z]}rez\DUfootnotemark{%s}{%s}{rÒrrâ) rHr rNrgrÓr’r0r†rÞrer6)rCrEr ÚformatrDrDrEÚvisit_footnote_referenceæs    z(LaTeXTranslator.visit_footnote_referencecCs|j |j ¡¡dS)N)r’r0r†r^)rCrErDrDrEÚdepart_footnote_reference sz)LaTeXTranslator.depart_footnote_referencecCs>t|jtjƒrtj‚n$t|jtjƒs(t‚|js:|j  |¡dS)N) rÏrÐrZfootnoterZcitationr rwr’r0)rCrEZbracketrrDrDrEÚ label_delim s zLaTeXTranslator.label_delimcCs| |dd¡dS)z9footnote or citation label: in brackets or as superscriptrëz\textsuperscript{N)rn)rCrErDrDrEÚ visit_label szLaTeXTranslator.visit_labelcCs| |dd¡dS)Nrìrâ)rn)rCrErDrDrEÚ depart_label szLaTeXTranslator.depart_labelcCsdS)NrD)rCrErDrDrEÚvisit_generated szLaTeXTranslator.visit_generatedcCsdS)NrD)rCrErDrDrEÚdepart_generated sz LaTeXTranslator.depart_generatedcCs| g¡|j d¡dS)Nz\newcommand{\DUheader}{)rßr’r0)rCrErDrDrEÚ visit_header s zLaTeXTranslator.visit_headercCs*|j d¡d |j¡|jd<| ¡dS)Nrâr$z~header)r’r0rSr4rà)rCrErDrDrEÚ depart_header s zLaTeXTranslator.depart_headercCs˜|dk rtj d¡t d|¡}|s(|S| ¡dd…\}}|dkrNd|}nF|dkrhdt|ƒd }n,|jr”|d kr”tj |j d <d |j d <d |}|S)z=Convert `length_str` with rst lenght to LaTeX length NzWdeprecation warning: LaTeXTranslator.to_latex_length() option `pxunit` will be removed.z(\d*\.?\d*)\s*(\S*)r»)r$r®z%sbpråz%.3f\linewidthgY@Zpxr0z$ \DUprovidelength{\pdfpxdimen}{1bp} z %s\pdfpxdimen) ÚsysÚstderrÚwriter|ÚmatchÚgroupsrIr”rÞr1r6)rCZ length_strZpxunitrxr8ÚunitrDrDrEÚto_latex_length$ s     zLaTeXTranslator.to_latex_lengthc Cs¼|j|jd<|j}tj |d¡ dd¡}d|krRt|jt j ƒrHd|d<|  |¡g}g}g}ddd d d d d œ}d|krºy,||d}|  |d¡|  |d¡Wnt k r¸YnXd|krÚ|  d| |d¡¡d|krø|  d|dd¡d|kr|  d| |d¡¡| |¡sFt|jt j t jfƒsF|  d¡| |¡slt|jt j ƒsl|  d¡| ¡|j |¡d} |r˜dd |¡} |j  d| |f¡|j |¡dS)Nr¶Úuriràú/r@r>)r$r$)z\raisebox{-0.5\height}{râ)z\raisebox{-\height}{râ)z!\noindent\makebox[\linewidth][c]{râ)z \noindent{z\hfill})z\noindent{\hfillrâ)ZbottomZmiddleÚtopr>r=r?rr)Úheightz height=%sZscalezscale=%fgY@rKzwidth=%srr$z[%s]rÄz\includegraphics%s{%s})rƒr4rDÚurllibÚrequestÚ url2pathnamer.rÏrÐrÚfigurerÖr0rÑr{rÑrÚr]r’rÌrS) rCrEÚattrsZ imagepathÚpreÚpostZinclude_graphics_optionsZ align_codesZ align_codeÚoptionsrDrDrEÚ visit_image= sZ         zLaTeXTranslator.visit_imagecCs(| d¡r$|j| |¡dg7_dS)NrÒr)rÆr’rÕ)rCrErDrDrEÚ depart_imaget s zLaTeXTranslator.depart_imagecCsrxl|dD]`}| d¡rN|j |dd…¡}|rjd|jj|<|j d|¡q tj|jd<|j d|¡q WdS)Nr3z language-rØTz\foreignlanguage{%s}{Úinlinez \DUrole{%s}{) rÁr€rÀrÂr’r0rÞrŠr6)rCrEr/rÁrDrDrEräx s   zLaTeXTranslator.visit_inlinecCs|j dt|dƒ¡dS)Nrâr3)r’r0r)rCrErDrDrEræƒ szLaTeXTranslator.depart_inlinecCs| |¡dS)N)Ú visit_literal)rCrErDrDrEÚvisit_interpreted† sz!LaTeXTranslator.visit_interpretedcCs| |¡dS)N)Údepart_literal)rCrErDrDrEÚdepart_interpreted‹ sz"LaTeXTranslator.depart_interpretedcCstj|jd<|j d¡dS)NÚlegendz\begin{DUlegend})rÞrr6r’r0)rCrErDrDrEÚ visit_legendŽ s zLaTeXTranslator.visit_legendcCs|j d¡dS)Nz\end{DUlegend} )r’r0)rCrErDrDrEÚ depart_legend’ szLaTeXTranslator.depart_legendcCs|j d¡dS)Nz\item[] )r’r0)rCrErDrDrEÚ visit_line• szLaTeXTranslator.visit_linecCs|j d¡dS)Nr)r’r0)rCrErDrDrEÚ depart_line˜ szLaTeXTranslator.depart_linecCsbtj|jd<tj|jd<| |¡t|jtjƒr>|j   d¡n |  |¡|j   d¡|  |¡dS)Nr0Ú lineblockz0\item[] \begin{DUlineblock}{\DUlineblockindent} z\begin{DUlineblock}{0em} ) rÞr1r6r”rÖrÏrÐrZ line_blockr’r0rÜr×)rCrErDrDrEÚvisit_line_block› s     z LaTeXTranslator.visit_line_blockcCs|j d¡| |¡dS)Nz\end{DUlineblock} )r’r0rÞ)rCrErDrDrEÚdepart_line_block¨ s z!LaTeXTranslator.depart_line_blockcCs|j d¡dS)Nz \item )r’r0)rCrErDrDrEÚvisit_list_item¬ szLaTeXTranslator.visit_list_itemcCsdS)NrD)rCrErDrDrEÚdepart_list_item¯ sz LaTeXTranslator.depart_list_itemcCsXd|_d|dkr6|jjdkr6tj|jd<tj|jd<|j  d¡|drT|  |¡dS)NTÚcoder3r#Úcolorz\texttt{) r¿rNÚsyntax_highlightrÞršr4Úhighlight_rulesr6r’r0rä)rCrErDrDrEr‹² s     zLaTeXTranslator.visit_literalcCs(d|_|dr| |¡|j d¡dS)NFr3râ)r¿rær’r0)rCrErDrDrEr¼ s zLaTeXTranslator.depart_literalcCst|ƒdkot|dtjƒS)z,Check whether a node can be typeset verbatimr)r)rrÏrr)rCrErDrDrEÚ is_plaintextÑ szLaTeXTranslator.is_plaintextcCs0ddddddœ}| d¡r4|jdg| |¡7_| |¡|j ¡sb|j d¡|j d ¡n |j d¡| |¡rÎ|j }| |d ¡|j d <|d kr d |_ nd |_ |j d||j f¡|j d|¡n^d |_d |_d |_d|dkr|jjdkrtj|j d<tj|jd<|j d¡|j d¡dS)zRender a literal block.z\usepackage{alltt}z\usepackage{moreverb}z\usepackage{listings}z\usepackage{fancyvrb})rÚlistingZ lstlistingZVerbatimZ verbatimtabrÒrz\begin{quote} z \end{quote} r$Z literal_blockrTz \begin{%s}%s z \end{%s}r™r3r#ršz"{\ttfamily \raggedright \noindent z }N)rÆr’rÕrÜr‘r-r0r†rrzr4rrhr{r¿rÂrÀrNr›rÞršrœr6)rCrEÚpackagesÚ environmentrDrDrEr5Õ s<         z#LaTeXTranslator.visit_literal_blockcCsPd|_d|_d|_d|_d|_|j |j ¡¡|j |j ¡¡|  |¡dS)NF) rÀrÂr¿rhrr’r0r†r^rÞ)rCrErDrDrEr7 sz$LaTeXTranslator.depart_literal_blockräcCs¬|dr| |¡d|jd<| ¡ tj¡}| d¡rLd |g| |¡¡}|dkrf|j r`d}q€d}nd d d |d d |g¡}|j   ||¡|dr¢|  |¡t j‚d S)z math roler3z\usepackage{amsmath}ZamsmathrÒrräz\(%s\)z$%s$z%%z \begin{%s}z%sz\end{%s}N)rär4rár_r Z uni2tex_tablerÆrSrÕrr’r0rærr)rCrEÚmath_envZ math_codeÚwrapperrDrDrEÚ visit_math s$     zLaTeXTranslator.visit_mathcCsdS)NrD)rCrErDrDrEÚ depart_math5 szLaTeXTranslator.depart_mathcCst| ¡ƒ}|j||ddS)N)r¡)r rár£)rCrEr¡rDrDrEÚvisit_math_block8 s z LaTeXTranslator.visit_math_blockcCsdS)NrD)rCrErDrDrEÚdepart_math_block< sz!LaTeXTranslator.depart_math_blockcCs|jdr|j d¡dS)NrÈz, )r†r’r0)rCrErDrDrEÚ visit_option? s zLaTeXTranslator.visit_optioncCs|jdd7<dS)NrÈr))r†)rCrErDrDrEÚ depart_optionD szLaTeXTranslator.depart_optioncCs|j | dd¡¡dS)zAAppend the delimiter betweeen an option and its argument to body.Ú delimiterr¹N)r’r0rÆ)rCrErDrDrEÚvisit_option_argumentH sz%LaTeXTranslator.visit_option_argumentcCsdS)NrD)rCrErDrDrEÚdepart_option_argumentL sz&LaTeXTranslator.depart_option_argumentcCs|j d¡|j d¡dS)Nz \item[r)r’r0r†)rCrErDrDrEÚvisit_option_groupO s z"LaTeXTranslator.visit_option_groupcCs|j ¡|j d¡dS)Nz] )r†r^r’r0)rCrErDrDrEÚdepart_option_groupT s z#LaTeXTranslator.depart_option_groupcCs2tj|jd<tj|jd<| |¡|j d¡dS)Nr0Ú optionlistz\begin{DUoptionlist})rÞr1r6r®rÜr’r0)rCrErDrDrEÚvisit_option_listX s   z!LaTeXTranslator.visit_option_listcCs|j d¡| |¡dS)Nz\end{DUoptionlist} )r’r0rÞ)rCrErDrDrEÚdepart_option_list^ s z"LaTeXTranslator.depart_option_listcCsdS)NrD)rCrErDrDrEÚvisit_option_list_itemb sz&LaTeXTranslator.visit_option_list_itemcCsdS)NrD)rCrErDrDrEÚdepart_option_list_iteme sz'LaTeXTranslator.depart_option_list_itemcCsdS)NrD)rCrErDrDrEÚvisit_option_stringh sz#LaTeXTranslator.visit_option_stringcCsdS)NrD)rCrErDrDrEÚdepart_option_stringl sz$LaTeXTranslator.depart_option_stringcCs| |d¡dS)Nr3)rë)rCrErDrDrEÚvisit_organizationp sz"LaTeXTranslator.visit_organizationcCs| |¡dS)N)rí)rCrErDrDrEÚdepart_organizations sz#LaTeXTranslator.depart_organizationcCsì|j |¡}|dkr.t|jtjtjtjfƒr.n„|dkrrt|jtjƒrrt|j|dtjƒsrt|j|dtjƒsrn@|jj r¦|dkr|j d|d|dkr²|j   d¡n |j   d¡|  d¡rÖ|j | |¡dg7_ |drè| |¡dS)Nrr)z:LaTeX merges paragraphs in tables with auto-sized columns!)Ú base_noderrÒr3)rÐÚindexrÏrZ list_itemÚ descriptionrÚrr‘r)rsr’r0rÆrÕrä)rCrEr¸rDrDrEÚvisit_paragraphv s&   zLaTeXTranslator.visit_paragraphcCs*|dr| |¡|jjs&|j d¡dS)Nr3r)rær‘r)r’r0)rCrErDrDrEÚdepart_paragraph s z LaTeXTranslator.depart_paragraphcCs:tj|jd<|j d¡| |¡|j d|d¡dS)Nršz% z"\hyperlink{%s}{\textbf{\color{red}r )rÞršr4r’r0rÓ)rCrErDrDrEÚvisit_problematic– s   z!LaTeXTranslator.visit_problematiccCs|j d¡dS)Nz}})r’r0)rCrErDrDrEÚdepart_problematicœ sz"LaTeXTranslator.depart_problematiccCsLd| dd¡ ¡krtj‚| |¡s0|j d¡|drB| |¡d|_dS)Nr rkr$rr3T) rÆr}rrrÑr’r0rärh)rCrErDrDrEÚ visit_rawŸ s   zLaTeXTranslator.visit_rawcCs2d|_|dr| |¡| |¡s.|j d¡dS)NFr3r)rhrærÑr’r0)rCrErDrDrEÚ depart_raw© s   zLaTeXTranslator.depart_rawcCsFd}x8|D]0}|dkr|d7}|dkr.|d8}|dkr dSq W|dkS)z7Test whether there are unmatched '{' or '}' characters.rrár)râTrD)rCrUr rÇrDrDrEÚhas_unbalanced_braces° s z%LaTeXTranslator.has_unbalanced_bracescCs tdƒdtdƒdtdƒdi}d|kr–t|dƒ |¡}| d¡d ksN| |¡r\| d |¡|d| ¡kr‚|j d |¡t j ‚|j d |¡dSd |kr¨|d }n"d|krÂ|j j |d}nt dƒ‚| |¡sà|j d¡|j d|¡|jr|j d|j| dd¡f¡t j ‚dS)Nrãz\#råz\%ràz\\Úrefuriz^^rÈzYExternal link "%s" not supported by LaTeX. (Must not contain "^^" or unbalanced braces.)z\url{%s}z \href{%s}{r r zUnknown reference.rz\hyperref[%s]{z\%s{%s}}r$)rrWr_r–rÀrtrár’r0rrrHr r rÑrxr.)rCrEZ special_charsr rDrDrEÚvisit_reference¼ s4    zLaTeXTranslator.visit_referencecCs&|j d¡| |¡s"|j d¡dS)Nrâr)r’r0rÑ)rCrErDrDrEÚdepart_referenceÞ s  z LaTeXTranslator.depart_referencecCs| |d¡dS)NÚrevision)rë)rCrErDrDrEÚvisit_revisionã szLaTeXTranslator.visit_revisioncCs| |¡dS)N)rí)rCrErDrDrEÚdepart_revisionæ szLaTeXTranslator.depart_revisioncCs&tj|jd<| |¡|j d¡dS)NÚrubricz \DUrubric{)rÞrÇr6rÜr’r0)rCrErDrDrEÚ visit_rubricé s  zLaTeXTranslator.visit_rubriccCs|j d¡| |¡dS)Nz} )r’r0rÞ)rCrErDrDrEÚ depart_rubricî s zLaTeXTranslator.depart_rubriccCs6|jd7_|j d¡|j|jdd7<dS)Nr)r)rOrr0)rCrErDrDrEÚ visit_sectionò s zLaTeXTranslator.visit_sectioncCs|j ¡|jd8_dS)Nr))rr^rO)rCrErDrDrEÚdepart_sectionù s zLaTeXTranslator.depart_sectioncCs2| |¡tj|jd<tj|jd<|j d¡dS)NršÚsidebarz \DUsidebar{)rÜrÞršr4rÌr6r’r0)rCrErDrDrEÚ visit_sidebarþ s   zLaTeXTranslator.visit_sidebarcCs|j d¡| |¡dS)Nz} )r’r0rÞ)rCrErDrDrEÚdepart_sidebar s zLaTeXTranslator.depart_sidebar)u—r$)rGrH)r$r$)r r!r"r#cCs:|j|jj\}}|j d¡|j |¡|j |¡dS)Nz\nopagebreak \raggedleft )Úattribution_formatsrNZ attributionr’r0r†)rCrErJrLrDrDrEÚvisit_attribution s  z!LaTeXTranslator.visit_attributioncCs|j |j ¡d¡dS)Nr)r’r0r†r^)rCrErDrDrEÚdepart_attribution sz"LaTeXTranslator.depart_attributioncCs| |d¡dS)NÚstatus)rë)rCrErDrDrEÚ visit_status szLaTeXTranslator.visit_statuscCs| |¡dS)N)rí)rCrErDrDrEÚ depart_status szLaTeXTranslator.depart_statuscCs"|j d¡|dr| |¡dS)Nz\textbf{r3)r’r0rä)rCrErDrDrEÚ visit_strong s zLaTeXTranslator.visit_strongcCs"|dr| |¡|j d¡dS)Nr3râ)rær’r0)rCrErDrDrEÚ depart_strong! s zLaTeXTranslator.depart_strongcCs tj‚dS)N)rr)rCrErDrDrEÚvisit_substitution_definition& sz-LaTeXTranslator.visit_substitution_definitioncCs| |¡dS)N)Úunimplemented_visit)rCrErDrDrEÚvisit_substitution_reference) sz,LaTeXTranslator.visit_substitution_referencecCs’t|jtjƒr@| |j¡tj|jd<|j |j |dd7_ nNt|jtj ƒrn|j   d|j  |jd¡¡n tj|jd<|j   d|jj¡dS)NÚdocumentsubtitleF)rÔz\%s*{r)r9z \DUsubtitle[%s]{)rÏrÐrrHrßr9rÞrÚr6rˆrÕrr’r0r‚rOÚtagname)rCrErDrDrEÚvisit_subtitle, s   zLaTeXTranslator.visit_subtitlecCs(t|jtjƒr| ¡n |j d¡dS)Nz} )rÏrÐrrHràr’r0)rCrErDrDrEÚdepart_subtitle9 s zLaTeXTranslator.depart_subtitlec Csütj|jd<tj|jd<dg|d<| |¡|j d¡| |¡yd|d}Wnt k rjd}YnX|j d |d |d |  |d ¡|f¡t |d ƒdkrÌ|j d|d d¡|j  d¡n,dd„t |d ƒDƒ}|j  dd |¡¡dS)Nršr8zsystem-messager3z* \DUtitle[system-message]{system-message} z , line~%srÊr$z& {\color{red}%s/%s} in \texttt{%s}%s Útyper Úsourcerdr)z \hyperlink{%s}{rrâcSs g|]\}}d||df‘qS)z\hyperlink{%s}{%d}r)rD)r»r\r rDrDrEr¾Q sz8LaTeXTranslator.visit_system_message..z backrefs: r¹)rÞršr4r8r6rðr’r0rÓrÑrËrr†rÃrS)rCrErÊrdrDrDrEÚvisit_system_message? s&        z$LaTeXTranslator.visit_system_messagecCs|j |j ¡¡| ¡dS)N)r’r0r†r^rñ)rCrErDrDrEÚdepart_system_messageU sz%LaTeXTranslator.depart_system_messagecCsÜtj|jd<|j ¡r0|j |j¡t|dƒ|_|jjdkr~t |j t j ƒr~|j   |¡dkr~|j  |j¡ d¡dkr~|j d¡|j ¡|j |jj|d¡d |kr¸|j d |d ¡|jjd krÎd |jd <| g¡dS) NrÆZtabularr5r)rrÈz \leavevmoder3r@rz\usepackage{booktabs})rÞrÆr4r‘r-rr0r!r#rÏrÐrrr¸r‚rOr–r’rMr4rNr2r9r0rß)rCrErDrDrEÚ visit_tableY s"          zLaTeXTranslator.visit_tablecCs˜|j}| ¡|j d|j ¡¡|j|7_|j |j ¡d¡|j ¡t|jƒdkrl|j  ¡|_|  d¡r”|j|j |dddg7_dS)NrrrÒF)rÔ) r’ràr0r‘rArCrYrrr^rÆrÕ)rCrEr¤rDrDrEÚ depart_tableo s   zLaTeXTranslator.depart_tablecCs`d|ksd|ksd|krdS|j d¡t|jtjƒpBt|jtjƒ }|j| ||¡7_dS)NrÁr r z% )r’r0rÏrÐrr,r8rÕ)rCrErÔrDrDrEÚ visit_target~ s zLaTeXTranslator.visit_targetcCsdS)NrD)rCrErDrDrEÚ depart_targetŒ szLaTeXTranslator.depart_targetcCs$|j d¡s | |¡| d¡dS)Nzpreamble written)r‘rÆrXrZ)rCrErDrDrEÚ visit_tbody s  zLaTeXTranslator.visit_tbodycCsdS)NrD)rCrErDrDrEÚ depart_tbody– szLaTeXTranslator.depart_tbodycCs|j d¡dS)zdefinition list termz\item[{N)r’r0)rCrErDrDrEÚ visit_term™ szLaTeXTranslator.visit_termcCs|j d¡dS)Nz}] \leavevmode )r’r0)rCrErDrDrEÚ depart_termŸ szLaTeXTranslator.depart_termcCsdS)NrD)rCrErDrDrEÚ visit_tgroup¤ szLaTeXTranslator.visit_tgroupcCsdS)NrD)rCrErDrDrEÚ depart_tgroup© szLaTeXTranslator.depart_tgroupcCs|jS)N)Ú _thead_depth)rCrDrDrErU­ szLaTeXTranslator.thead_depthcCsh|jd7_d| ¡kr@|j d|j |¡¡|j dd¡|j |j ¡¡|j |j  ¡¡dS)Nr)z{%s} zpreamble written) rìrUr’r0r‘rLr9rVrÌrX)rCrErDrDrErX° s  zLaTeXTranslator.visit_theadcCs@|dk r.|j |j ¡¡|j ¡r.| |¡|jd8_dS)Nr))r’rÌr‘rZrWrIrì)rCrErDrDrErZ¸ s   zLaTeXTranslator.depart_theadcCs®|jjdkrB| |j¡|j d¡|j d| | ¡¡¡nht |jt j ƒslt |jt j ƒslt |jt j ƒr°tj|jd<d |jd¡}|s’|j}|j d|¡|j d¡nút |jt jƒrÚ| |jj¡|j d¡nÐttd ƒrðtj|jd <|j |j¡}|j d ¡d |jdkrJtj|jd <| | ¡¡}|j d ||f¡n|j d|¡|jt|jjƒkrztj|jd<dg}||j|jdd7}|j d |¡d¡dS)z Append section and other titles.rHr$z pdftitle={%s},r8rÄr3z \DUtitle[%s]{z} r˜z zsystem-messagesršz\%s[%s]{\color{red}z\%s{F)rÔz% z% } N)rÐrÛrßr8r†r0r‹rËrárÏrÚtopicrïrÌrÞr6rSr’rÆr‘r,ršr˜r4r‚rrOršrrrÕ)rCrEr3Ú section_nameZ section_titleÚbookmarkrDrDrEÚ visit_title¿ s@         zLaTeXTranslator.visit_titlecCs8|j |j ¡¡t|jtjƒs,|jjdkr4|  ¡dS)NrH) r’r0r†r^rÏrÐrrÆrÛrà)rCrErDrDrEÚ depart_titleô s zLaTeXTranslator.depart_titlec Cs |j |j¡}dddœ}d|jjkr,d|d<y ||}Wn*tk rb|jd|d|d d SXtj|jd <d ||jd |<t |jjƒ}d||f|jd|<ddddœ}d|jjkrÄd|d<|rä|j   d||||f¡|j   d||f¡|j   d|¡d S)z=Generate a local table of contents with LaTeX package minitocr^Úmini)r^rrÚsectrz Skipping local ToC at %s level. z3 Feature not supported with option "use-latex-toc")r·Nr:z\do%stoczminitoc-z\mtcsetdepth{%stoc}{%d}zminitoc-%s-depthr)r)róròr^rÈz\setcounter{%stocdepth}{%d}z\mtcsettitle{%stoc}{%s} z\%stoc ) r‚rrOrrÑrsrÞr:r4rr’r0) rCrEr8ÚdepthrîZ minitoc_namesZ minitoc_nameZmaxdepthÚoffsetrDrDrEr:ú s0        zLaTeXTranslator.minitocc CsÎd|dkr|j d¡|j| |¡7_t| ¡tjƒrp|j d|jd| ¡ ¡|  ddg¡df¡|j r d}t| ¡tjƒr |  |  d¡ ¡¡}|  d d¡}d |dkrÊ|  |||¡dS|rÞ|j d |¡|d krö|j d |¡|j d¡d|_nd|_n¸d|dkr`|jjr`| |j¡|j d¡t| ¡tjƒrÊ|  d¡njd|dkrˆtj|jd<| |j¡n8d|dkr°tj|jd<| |j¡n|d dd¡| |¡dS)NÚcontentsr3rz \pdfbookmark[%d]{%s}{%s}r)rÒrr$rôÚlocalz\setcounter{tocdepth}{%d} ZContentsz! \renewcommand{\contentsname}{%s}z \tableofcontents Tr>z\begin{abstract}r=rí)r’r0rÕrÏZ next_noderr8rOrárÆr*rËr^r:r<rùrNr,rßr>rÞr6r=rr÷)rCrEr8rôrDrDrEÚ visit_topic sL           zLaTeXTranslator.visit_topiccCsbd|_d|dkr(|jjr(|j d¡nd|dkr>| |¡d|dksVd|dkr^| ¡dS)NFr>r3z\end{abstract} rör=)rùrNr,r’r0rørà)rCrErDrDrEÚ depart_topicN s     zLaTeXTranslator.depart_topiccCs(tj|jd<|j d¡|j d¡dS)NÚ transitionzN %___________________________________________________________________________ z\DUtransition )rÞrúr6r’r0)rCrErDrDrEÚvisit_transitionY s  z LaTeXTranslator.visit_transitioncCsdS)NrD)rCrErDrDrEÚdepart_transition^ sz!LaTeXTranslator.depart_transitioncCs| |d¡dS)NÚversion)rë)rCrErDrDrEÚ visit_versiona szLaTeXTranslator.visit_versioncCs| |¡dS)N)rí)rCrErDrDrEÚdepart_versiond szLaTeXTranslator.depart_versioncCstd|jjƒ‚dS)Nz$visiting unimplemented node type: %s)rArrb)rCrErDrDrErØg sz#LaTeXTranslator.unimplemented_visit)T)N)N)N)rä)árbrcrdrÖr”r-r.ryr<rùrOr¾rhrÀrÂr¿rrir@rmrurµrËr|ÚcompilerÎrÑrÓrÕrÖr×rÜrÞrßràrârãrårçrèrérìrîrðrñrórôrõrör÷rørúrûrürýrÿrrrrrrrrrrrrFrrrrrrrrrr!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r2rërír6r8r9r=r>r?r@rerDr[r`rQrRrSrTrUrVrWrXrZr[r\r]r`rarbrcrirjrlrmrnrorprqrrrsrtr{rˆr‰rärærŒrŽrr‘r’r“r•r–r—r˜r‹rrr5r7r£r¤r¥r¦r§r¨rªr«r¬r­r¯r°r±r²r³r´rµr¶rºr»r¼r½r¾r¿rÀrÂrÃrÅrÆrÈrÉrÊrËrÍrÎrÏrÐrÑrÓrÔrÕrÖr×rÙrÜrÝràrárârãrärårærçrèrérêrërìrUrXrZrðrñr:rørùrûrürþrÿrØrDrDrDrErAps¾  [")T       C73 7       -                        "                                   5  # 1    rA)DrÖZ __docformat__rurQÚtimer|rUÚurllib.requestr€Ú urllib.parseÚ urllib.errorrÚ ImportErrorZdocutils.utils.romanrZdocutilsrrrrrZdocutils.utils.error_reportingrZdocutils.transformsr Zdocutils.utils.mathr r r Úobjectrir×rÙrÞr>rïršr<r=rÛrtrYr^rer„rœrŠrr”r;r:r®r1rÇrÌr9rÚrÆrrþrr8rúrßrr!rrrArDrDrDrEÚsp    r1     ,u