o
    f'haÃ ã                   @   sL  d Z dZddlZddlZddlZddlZejdk r&ddlmZ ddl	m
Z
 nddlm
Z
 zddlZW n eyD   ddlm  mZ 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 ejdkrreZG dd„ dejƒZG dd„ deƒZ G dd„ de!ƒZ"G dd„ deƒZ#de#_$de#_%de#_&de#_'de#_(de#_)de#_*de#_+de#_,de#_-dd„ Z.ej/ 0e 1ej/ 2e3¡¡d¡Z4ee4d d!��2Z5e5D ]'Z6e6 7d"¡Z6e6 8d#¡sÙqÌe6 9d$¡Z:e:sáqÌe.e5ƒZ;e:d%v ríe; 7¡ Z;e<e#e:e;ƒ qÌW d  ƒ n1 sþw   Y  G d&d'„ d'eƒZ=G d(d)„ d)eƒZ>G d*d+„ d+eƒZ?G d,d-„ d-ej@ƒZAdS ).zLaTeX2e document tree Writer.ÚreStructuredTexté    N)é   r   )Úopen)Úurl2pathname)ÚfrontendÚnodesÚ	languagesÚwritersÚutils)Ú
SafeString)Ú
writer_aux)Úpick_math_environmentÚunichar2texc                   @   sz  e Zd ZdZ	 dZe ej 	e
¡¡Zd g d¢¡ZdZddg dd	gd
dif‘ddgd
dif‘ddgddgddddœf‘ddgddejdœf‘ddgddejdœf‘d d!gg d"¢d#dd$œf‘d%d&gd'd(d)ejd*œf‘d+d,gd(d-ejd.œf‘d/d0gd1dd2œf‘d3d4gddejdœf‘d5d6gd7ejd8gd9œf‘d:d;gd
eif‘d<e d=ged>d?œf‘d@dAgdBdejdœf‘dCdDgdEdejdœf‘dFdGgddejdœf‘dHdIgdJdejdœf‘dKdLgddejdœf‘dMdNgdOdejdœf‘dPdQgddejdœf‘dRdSgd
dTif‘dUdVgd
d'if‘dWdXgddejdœf‘dYdZgdd[d\œf‘d]d^gddejdœf‘d_d`gddad\œf‘dbdcgddded?œf‘dfdggd
d'if‘dhdigddejdœf‘djdkgdlgddmejednœf‘dodpgd
d'if‘dqdrgd
dsif‘dtdugd
d'if‘dvdwgd
d'if‘dxdygdBdejdœf‘dzd{gd|dejdœf‘d}d~gdBdejdœf‘R fZdd€iZd�Zd‚ZdƒZed„ ZdZ	 d…d†„ Zd‡dˆ„ Zd‰dŠ„ Zd‹dŒ„ ZdS )�ÚWriter)ÚlatexÚlatex2ezdefault.texÚ
)z% PDF Standard Fontsz\usepackage{mathptmx} % Timesz\usepackage[scaled=.90]{helvet}z\usepackage{courier})ÚstandardÚbooktabsÚnolinesÚ
borderlessúcolwidths-autoúcolwidths-givenzLaTeX-Specific OptionsNz1Specify LaTeX documentclass.  Default: "article".z--documentclassÚdefaultÚarticlezcSpecify document options.  Multiple options can be given, separated by commas.  Default: "a4paper".z--documentoptionsÚa4paperz\Format for footnote references: one of "superscript" or "brackets".  Default: "superscript".z--footnote-referencesÚsuperscriptÚbracketsz<format>Útrim_footnote_reference_space)Úchoicesr   ÚmetavarÚ	overridesz1Use \cite command for citations. (future default)z--use-latex-citationsFÚ
store_true)r   ÚactionÚ	validatorzVUse figure floats for citations (might get mixed with real figures). (current default)z--figure-citationsÚuse_latex_citationsÚstore_false)Údestr#   r$   zyFormat for block quote attributions: one of "dash" (em-dash prefix), "parentheses"/"parens", or "none".  Default: "dash".z--attribution©ÚdashÚparenthesesÚparensÚnoner)   )r   r   r    zÇ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<file[,file,...]>Ústylesheet_path)r   r    r!   r$   z×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)r    r!   r$   z7Link to the stylesheet(s) in the output file. (default)z--link-stylesheetÚembed_stylesheet)r'   r#   z^Embed the stylesheet(s) in the output file. Stylesheets must be accessible during processing. z--embed-stylesheetz�Comma-separated list of directories where stylesheets are found. Used by --stylesheet-path when expanding relative path arguments. Default: ".".z--stylesheet-dirsz<dir[,dir,...]>Ú.)r    r$   r   zlCustomization 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<file>)r   r    z%Table of contents by LaTeX. (default)z--use-latex-tocTz5Table 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_abstractz;Use LaTeX abstract environment for the document's abstract.z--use-latex-abstractzSColor of any hyperlinks embedded in text. Default: "blue" (use "false" to disable).z--hyperlink-colorÚbluez-Additional options to the "hyperref" package.z--hyperref-optionszJEnable compound enumerators for nested enumerated lists (e.g. "1.2.a.ii").z--compound-enumeratorszCDisable compound enumerators for nested enumerated lists. (default)z--no-compound-enumeratorsÚcompound_enumerators)r#   r'   zzEnable section ("." subsection ...) prefixes for compound enumerators.  This has no effect without --compound-enumerators.z --section-prefix-for-enumeratorsz<Disable section prefixes for compound enumerators. (default)z#--no-section-prefix-for-enumeratorsÚsection_prefix_for_enumeratorszeSet the separator between section number and enumerator for compound enumerated lists.  Default: "-".z--section-enumerator-separatorú-z<char>zdWhen possible, use the specified environment for literal-blocks. Default: "" (fall back to "alltt").z--literal-block-envziWhen possible, 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)r   r    r#   r$   r   zLaTeX graphicx package option. Possible values are "dvipdfmx", "dvips", "dvisvgm", "luatex", "pdftex", and "xetex".Default: "".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-bibtexz]Use legacy functions with class value list for \DUtitle and \DUadmonition (current default). z--legacy-class-functionszqUse \DUrole and "DUclass" wrappers for class values. Place admonition content in an environment (future default).z--new-class-functionsÚlegacy_class_functionszsFootnotes with numbers/symbols by Docutils. (default) (The alternative, --latex-footnotes, is not implemented yet.)z--docutils-footnotesÚsectnum_depthr   zlatex2e writer)r	   zlatex writers)Úhead_prefixÚrequirementsÚlatex_preambler/   Ú	fallbacksÚpdfsetupÚ	titledata)ÚtitleÚsubtitleÚbody_pre_docinfoÚdocinfoÚ
dedicationÚabstractÚbodyc                 C   s   t j | ¡ t| _d S ©N)r	   r   Ú__init__ÚLaTeXTranslatorÚtranslator_class©Úself© rP   úC/usr/lib/python3/dist-packages/docutils/writers/latex2e/__init__.pyrK   û   s   
zWriter.__init__c                 C   s   t j | ¡tjg S rJ   )r	   r   Úget_transformsr   ÚAdmonitionsrN   rP   rP   rQ   rR      s   
þzWriter.get_transformsc                 C   s®   |   | j¡}| j |¡ | jD ]}t| |t||ƒƒ qzt| jjjdd�}W n t	y>   tt
j | j| jjj¡dd�}Y nw t | ¡ ¡}| ¡  |  ¡  | | j¡| _d S )NÚutf8©Úencoding)rM   ÚdocumentÚ	walkaboutÚvisitor_attributesÚsetattrÚgetattrr   ÚsettingsÚtemplateÚIOErrorÚosÚpathÚjoinÚdefault_template_pathÚstringÚTemplateÚreadÚcloseÚassemble_partsÚ
substituteÚpartsÚoutput)rO   ÚvisitorÚpartÚtemplate_filer]   rP   rP   rQ   Ú	translate  s&   


ÿÿ
ÿÿzWriter.translatec                 C   s`   t j | ¡ | jD ]$}t| |ƒ}|| jv r%|r| d¡ d |¡| j|< q	d |¡| j|< q	dS )z9Assemble the `self.parts` dictionary of output fragments.r-   r   N)	r	   r   rg   rY   r[   Ú
head_partsr9   ra   ri   )rO   rl   ÚlinesrP   rP   rQ   rg     s   



øzWriter.assemble_parts)Ú__name__Ú
__module__Ú__qualname__Ú	supportedÚdefault_templateÚdocutilsÚ_datadirr_   r`   ÚabspathÚ__file__rb   ra   Údefault_preambleÚtable_style_valuesr   Úvalidate_booleanÚvalidate_comma_separated_listÚsettings_specÚsettings_defaultsÚconfig_sectionÚconfig_section_dependenciesro   rY   rj   rK   rR   rn   rg   rP   rP   rP   rQ   r   *   s   þýýþýùÿþóÿýïÿýêþûå#ÿûÝ*þÖ-ÿýÓ2þüÎ9ýÇ=þÃ@ÿþÀDÿþ¼Hÿþ¸Lÿþ´Pÿþ°Tÿþ¬Xÿþ¨\
þ¤_
ÿ¡aÿýŸfýšjÿý–oþ‘rýŽvýŠzÿý†üû� 
û �ö ü �ð ü �ë ý �æ þý �â $þý �Ü +þý �Õý 6r   c                   @   sø  e Zd ZdZi dd“dd“dd“dd	“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“i d$d%“d&d'“d(d)“d*d+“d,d-“d.d/“d0d1“d2d3“d4d5“d6d7“d8d9“d:d;“d<d=“d>d?“d@dA“dBdC“dDdE“¥i dFdG“dHdI“dJdK“dLdM“dNdO“dPdQ“dRdS“dTdU“dVdW“dXdY“dZd[“d\d]“d^d_“d`da“dbdc“ddd_“dedf“¥i dgdh“didj“dkdl“dmdn“dodp“dqdr“dsdt“dudv“dwdx“dydz“d{dr“d|dt“d}d~“dd€“d�d‚“dƒd„“¥Zed…d†„ e ¡ D ƒƒZd‡Zdˆdˆd‰œZd“d‹dŒ„Z	d�dŽ„ Z
d�d�„ Zd‘d’„ ZdŠS )”ÚBabelzLanguage specifics for LaTeX.ÚafÚ	afrikaansÚarÚarabicÚbgÚ	bulgarianÚbrÚbretonÚcaÚcatalanÚcsÚczechÚcyÚwelshÚdaÚdanishÚdeÚngermanzde-1901Úgermanzde-ATÚ	naustrianz
de-AT-1901ÚaustrianÚdsbÚlowersorbianÚelÚgreekz
el-polytonÚpolutonikogreekÚenÚenglishzen-AUÚ
australianzen-CAÚcanadianzen-GBÚbritishzen-NZÚ
newzealandzen-USÚamericanÚeoÚ	esperantoÚesÚspanishÚetÚestonianÚeuÚbasqueÚfiÚfinnishÚfrÚfrenchzfr-CAÚcanadienÚgaÚirishz
grc-ibycusÚibycusÚglÚgalicianÚheÚhebrewÚhrÚcroatianÚhsbÚuppersorbianÚhuÚmagyarÚiaÚinterlinguaÚidÚbahasaiÚisÚ	icelandicÚitÚitalianÚjaÚjapaneseÚkkÚkazakhÚlaÚlatinÚltÚ
lithuanianÚlvÚlatvianÚmnÚ	mongolianÚmsÚbahasamÚnbÚnorskÚnlÚdutchÚnnÚnynorskÚnoÚplÚpolishÚptÚportugeszpt-BRÚbrazilÚroÚromanianÚruÚrussianÚseÚsaminzsh-CyrlÚserbianczsh-LatnÚserbianÚskÚslovakÚslÚsloveneÚsqÚalbanianÚsrzsr-LatnÚsvÚswedishÚtrÚturkishÚukÚ	ukrainianÚviÚvietnamc                 C   s   g | ]
\}}|  ¡ |f‘qS rP   )Úlower)Ú.0ÚkÚvrP   rP   rQ   Ú
<listcomp>ƒ  s    zBabel.<listcomp>z,Language "%s" not supported by LaTeX (babel)z.<>)rµ   r§   Nc                 C   s   || _ |  |¡| _i | _d S rJ   )ÚreporterÚlanguage_nameÚlanguageÚotherlanguages)rO   Úlanguage_coderü   rP   rP   rQ   rK   Ÿ  s   
zBabel.__init__c                    s  t ˆ j ¡ ƒ}| ˆ jpd¡ dd |¡ gˆ _g }d ‡ fdd„|D ƒ¡D ]}||vr1| |¡ q&|r?ˆ j dd |¡ ¡ d|v rIˆ j d	¡ d
|v rUˆ j g d¢¡ d|v raˆ j g d¢¡ |d dkr{dˆ j ¡ v r{ˆ  jdddˆ j g7  _d ˆ j¡S )z7Return the babel call with correct options and settingsrž   z\usepackage[%s]{babel}ú,r-   c                    s   g | ]	}ˆ j  |d ¡‘qS )r-   )Úactive_charsÚget)rø   ÚlrN   rP   rQ   rû   «  ó    z"Babel.__call__.<locals>.<listcomp>z#\AtBeginDocument{\shorthandoff{%s}}rµ   z)\deactivatetilden % restore ~ in Galicianr©   )ú\makeatletterz+  \addto\extrasestonian{\bbl@deactivate{~}}ú\makeatotherr«   )r  z)  \addto\extrasbasque{\bbl@deactivate{~}}r  éÿÿÿÿr¯   zE% Prevent side-effects if French hyphenation patterns are not loaded:z\frenchbsetup{StandardLayout}z4\AtBeginDocument{\selectlanguage{%s}\noextrasfrench}r   )Úsortedrÿ   Úkeysr9   rþ   ra   ÚsetupÚextend)rO   r   Ú
shorthandsÚcrP   rN   rQ   Ú__call__¤  s6   
€ÿÿýzBabel.__call__c              	   C   sR   t  |¡D ]}z| j| W   S  ty   Y qw | jdur'| j | j| ¡ dS )z,Return TeX language name for `language_code`Nr-   )r
   Únormalize_language_tagÚlanguage_codesÚKeyErrorrü   ÚwarningÚwarn_msg)rO   r   ÚtagrP   rP   rQ   rý   Å  s   ÿ
zBabel.language_namec                 C   ó   | j S rJ   )rþ   rN   rP   rP   rQ   Úget_languageÐ  s   zBabel.get_languagerJ   )rq   rr   rs   Ú__doc__r  ÚdictÚitemsr  r  rK   r  rý   r  rP   rP   rP   rQ   r‚   (  s$   þýûúù	÷
öõôóòñðïîíìëêéèçæåäâá à!ß#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó.Ò/Ñ0Ð1Ï2Î3Í4Ì5Ë6Ê7É8È9Ç:Æ;Å<Ä=Ã>Â?Á@ÀA¿B¾C½D¼E»G¹H¸I·Mù
!r‚   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚSortableDictz°Dictionary with additional sorting methods

    Tip: use key starting with with '_' for sorting before small letters
         and with '~' for sorting after small letters.
    c                 C   s   t |  ¡ ƒ}|S )zReturn sorted list of keys)r	  r
  )rO   r
  rP   rP   rQ   Ú
sortedkeysÞ  s   zSortableDict.sortedkeysc                    s   ‡ fdd„ˆ   ¡ D ƒS )z$Return list of values sorted by keysc                    s   g | ]}ˆ | ‘qS rP   rP   )rø   ÚkeyrN   rP   rQ   rû   å  ó    z-SortableDict.sortedvalues.<locals>.<listcomp>)r  rN   rP   rN   rQ   Úsortedvaluesã  ó   zSortableDict.sortedvaluesN)rq   rr   rs   r  r  r  rP   rP   rP   rQ   r  Ø  s    r  c                   @   s   e Zd ZdZdS )ÚPreambleCmdsz'Building blocks for the latex preamble.N)rq   rr   rs   r  rP   rP   rP   rQ   r!  ñ  s    r!  z\usepackage{color}zl\usepackage{float} % extended float configuration
\floatplacement{figure}{H} % place figures here definitelyz¯%% 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}zz\usepackage{longtable,ltcaption,array}
\setlength{\extrarowheight}{2pt}
\newlength{\DUtablewidth} % internal use in tablesz*\usepackage{textcomp} % text symbol macroszQ
% 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
}zU
% error admonition title
\providecommand*{\DUtitleerror}[1]{\DUtitle{\color{red}#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
}c                 C   s8   t | ƒg}| D ]}| ¡ s n| |¡ qd |¡ ¡ S )Nr-   )ÚnextÚstripr9   ra   Úrstrip)ÚfpÚblockÚlinerP   rP   rQ   Ú_read_block7  s   
r(  údocutils.styrT   rU   z% 
z::ú:)ÚcolorÚfloatÚtableÚtextcompc                   @   s,  e Zd ZdZedƒdedƒdedƒdiZedƒd	ed
ƒdedƒdedƒdedƒdedƒdedƒdedƒdedƒdedƒdddiZi dd“d d!“d"d“d#d!“d$d%“d&d'“d(d%“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“d;d<“Zi d=d“d>d?“d@dA“dBdC“dDdE“dFdG“dHdI“dJdK“dLdM“dNdO“dPdQ“dRdS“dTdU“dVdW“dXdY“dZd[“d\d]“d^d_d`dadbœ¥Zi dcdd“dedf“dgdh“didj“dkdl“dmdn“dodp“dqdr“dsdt“dudv“dwdx“dydz“d{d|“d}d~“dd€“d�d‚“dƒd„“i d…d†“d‡dˆ“d‰dŠ“d‹dŒ“d�dŽ“d�d�“d‘d’“d“d”“d•d–“d—d‚“d˜d™“dšd›“dœd�“džd‚“dŸd™“d d¡“d¢d£“¥i d¤d¥“d¦d§“d¨d©“dªd«“d¬d­“d®d¯“d°d±“d²d³“d´dµ“d¶d·“d¸d¹“dºd»“d¼d½“d¾d¿“dÀdÁ“dÂdÃ“dÄdÅ“¥i dÆdÇ“dÈdÉ“dÊdË“dÌda“dÍdÎ“dÏdÐ“dÑdÒ“dÓdÔ“dÕdÖ“d×dØ“dÙdÚ“dÛdÜ“dÝdÞ“dßdà“dádâ“dãdä“dådæ“¥dçdèdédêdëdìœ¥Z	dídîdïdðdñœZ
dòS )óÚCharMapsz8LaTeX representations for active and Unicode characters.ú\z\textbackslash{}ú{z\{ú}z\}ú#ú\#ú$z\$ú%ú\%ú&z\&ú~z\textasciitilde{}Ú_ú\_ú^z\textasciicircum{}ú"z\textquotedbl{}ú[z{[}ú]z{]}é­   z\-i    z\enskipi   z\quadi   i   i   z\,i   z\hspace{0pt}i/   i   z\hbox{-}i+!  z\AAiÔ!  z\ensuremath{\Leftrightarrow}i`&  z\ensuremath{\spadesuit}ic&  z\ensuremath{\clubsuit}i û  Úffiû  r¬   iû  Úfliû  Úffiiû  Úfflé    é«   z\guillemotleft{}é»   z\guillemotright{}i   z\textcompwordmark{}i   z\textendash{}i   z\textemdash{}i   z\textquoteleft{}i   z\textquoteright{}i   z\quotesinglbase{}i   z\textquotedblleft{}i   z\textquotedblright{}i   z\quotedblbase{}i0   z\textperthousand{}i1   z\textpertenthousand{}i9   z\guilsinglleft{}i:   z\guilsinglright{}i#$  z\textvisiblespace{}z\dag{}z\ddag{}z\dots{}z\texttrademark{})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{}i’  z\textflorin{}i¹  iº  z\textacutedbl{}i   z\textbardbl{}i"   z\textbullet{}i2   i3   i5   z\textasciigrave{}i6   z\textgravedbl{}i;   z\textreferencemark{}i=   z\textinterrobang{}iD   z\textfractionsolidus{}iE   z\textlquill{}iF   z\textrquill{}iR   z\textdiscount{}i¡   z\textcolonmonetary{}i£   z\textfrenchfranc{}i¤   z\textlira{}i¦   z\textnaira{}i©   z
\textwon{}i«   z\textdong{}i¬   z\texteuro{}i±   z\textpeso{}i²   z\textguarani{}i!  z\textcelsius{}i!  z\textnumero{}i!  z\textcircledP{}i!  z\textrecipe{}i !  z\textservicemark{}rH  i&!  z
\textohm{}i'!  z
\textmho{}i.!  z\textestimated{}i�!  z\textleftarrow{}i‘!  z\textuparrow{}i’!  z\textrightarrow{}i“!  z\textdownarrow{}i"  z\textminus{}i"  z\textasteriskcentered{}i"  z\textsurd{}i"$  z\textblank{}iæ%  z\textopenbullet{}iï%  z\textbigcircle{}z\textmusicalnote{}z\textmarried{}z\textdivorced{}z\textlangle{}z\textrangle{})ij&  i­&  i®&  iè'  ié'  z
\ding{170}z
\ding{169}z	\ding{51}z	\ding{55})ie&  if&  i'  i'  N)rq   rr   rs   r  ÚordÚallttÚspecialÚunsupported_unicodeÚutf8_supported_unicoder.  ÚpifontrP   rP   rP   rQ   r/  U  sâ   ýìýüûúùø	÷õôóñðïîíìëÿþýüûúùø	÷
öõôóòñðïëþýüûúùø	÷
öõôóòñðïîíìëêéèçæäãâá à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó.Ò/Ñ0Ð1Ï2Î3Í4Ì5Ë6Ê7É8È9Ç:Æ;Å<Ä=Ã>Â?Á@ÀA¿B¾C½D¼E»FºGµO
ür/  c                   @   s"   e Zd ZdZddd„Zdd„ ZdS )	ÚDocumentClassz"Details of a LaTeX document class.Fc                 C   sJ   || _ || _g d¢| _| j dv r| j dd¡ | jr#| j dd¡ d S d S )N)ÚsectionÚ
subsectionÚsubsubsectionÚ	paragraphÚsubparagraph)ÚbookÚmemoirÚreportÚscrbookÚscrreprtr   Úchapterrl   )Údocument_classÚ
_with_partÚsectionsÚinsert)rO   rt  Ú	with_partrP   rP   rQ   rK     s   

ÿzDocumentClass.__init__c                 C   s    |t | jƒkr| j|d  S dS )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.
        é   ÚDUtitle)Úlenrv  )rO   ÚlevelrP   rP   rQ   ri    s   zDocumentClass.sectionN)F)rq   rr   rs   r  rK   ri  rP   rP   rP   rQ   rh     s    
rh  c                   @   sâ   e Zd Z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d8d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d1d2„ Zd3d4„ Zd5d6„ Zd7S )9Ú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
    c                 C   s:   || _ || _d| _i | _g | _g | _g | _d| _d| _d S )NFr   )	Ú_translatorÚ_latex_typeÚ_openÚ_attrsÚ
_col_widthÚ_rowspanÚstubsÚcolwidths_autoÚ	_in_thead)rO   Ú
translatorÚ
latex_typerP   rP   rQ   rK   *  s   
zTable.__init__c                 C   s"   d| _ g | _g | _i | _d| _d S )NTF)r€  Ú
_col_specsÚcaptionr�  Ú_in_headrN   rP   rP   rQ   r   6  s
   
z
Table.openc                 C   s(   d| _ d | _g | _i | _g | _d| _d S ©NF)r€  r‰  rŠ  r�  r„  r…  rN   rP   rP   rQ   rf   <  s   
zTable.closec                 C   r  rJ   )r€  rN   rP   rP   rQ   Úis_openD  ó   zTable.is_openc                 C   s`   dd„ || D ƒ}z|d | _ W n ty   d| _ Y nw d|v r%d|vp,d|v o,d|v| _d S )Nc                 S   s    g | ]}|d v r|  dd¡‘qS ))r   r   r   r   r   r   ©Úreplace©rø   ÚclsrP   rP   rQ   rû   H  s
    
þz)Table.set_table_style.<locals>.<listcomp>r  r   r   r   )ÚbordersÚ
IndexErrorr…  )rO   Útable_styleÚclassesr“  rP   rP   rQ   Úset_table_styleG  s   ÿ
ÿÿýzTable.set_table_stylec                 C   s   | j dkr
| js
dS | j S )NÚ	longtableú
longtable*)r  rŠ  rN   rP   rP   rQ   Úget_latex_typeT  s   zTable.get_latex_typec                 C   s   || j |< d S rJ   ©r�  )rO   ÚattrÚvaluerP   rP   rQ   ÚsetZ  ó   z	Table.setc                 C   s   || j v r
| j | S d S rJ   r›  )rO   rœ  rP   rP   rQ   r  \  s   

z	Table.getc                 C   s   | j dkrdS dS )Nr   ú|r-   )r“  rN   rP   rP   rQ   Úget_vertical_bara  s   
zTable.get_vertical_barú
\linewidthc                 C   sv   dddddœ}|  |   d¡¡}|  ¡ }|r$|dvr$d|f d	|f g}nd
||f g}| js6| dd| ¡ d |¡S )Nz[l]z[c]z[r]r-   )ÚleftÚcenterÚrightNÚalign©r˜  r™  z"\noindent\makebox[\linewidth]%s{%%ú
\begin{%s}z\begin{%s}%sr  z\setlength{\DUtablewidth}{%s}%%r   )r  rš  r…  rw  ra   )rO   ÚwidthÚ	align_mapr¦  rˆ  ÚopeningrP   rP   rQ   Úget_openingg  s   ýÿ
zTable.get_openingc                 C   sT   g }| j dkr| d¡ | d|  ¡  ¡ |  d¡r%|  ¡ dvr%| d¡ d |¡S )Nr   z\bottomruleú\end{%s}r¦  r§  r2  r   )r“  r9   rš  r  ra   )rO   ÚclosingrP   rP   rQ   Úget_closingx  s   



zTable.get_closingc                 C   s$   | j  |¡ | j |j d¡¡ d S )NÚstub)r‰  r9   r„  Ú
attributesr  ©rO   ÚnoderP   rP   rQ   Úvisit_colspecƒ  s   zTable.visit_colspecc                 C   sØ   |   ¡ }dgt| jƒ | _g | _| jr |d t| jƒ }|| S d}d}| jD ]}t|d d ƒ| }||7 }q'd}|dkrB|| }d	}| jD ] }|t|d d ƒ | }| j |d
 ¡ |d||d
 f 7 }qG|| 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).
        r   r  éP   g        Úcolwidthry  gÃõ(\�Âí?g      ð?r-   g{®Gázt?z%sp{%.3f\DUtablewidth})r¡  r{  r‰  rƒ  r‚  r…  r,  r9   )rO   r³  ÚbarÚlatex_table_specr©  Útotal_widthr¶  ÚfactorrP   rP   rQ   Úget_colspecsˆ  s(   


zTable.get_colspecsc                 C   s(   z	d| j | j  W S  ty   Y dS w )z4Return columnwidth for current cell (not multicell).z%.2f\DUtablewidthÚ*)r‚  Ú_cell_in_rowr”  rN   rP   rP   rQ   Úget_column_width«  s
   ÿzTable.get_column_widthc                    sF   zt dd„ ‡ ‡fdd„t|ƒD ƒD ƒƒ}d| W S  ty"   Y dS w )z)Return sum of columnwidths for multicell.c                 S   s   g | ]}|‘qS rP   rP   )rø   r©  rP   rP   rQ   rû   µ  s    ÿz/Table.get_multicolumn_width.<locals>.<listcomp>c                    s   g | ]	}ˆ j ˆ|  ‘qS rP   )r‚  )rø   Úco©rO   ÚstartrP   rQ   rû   ¶  s    ÿzp{%.2f\DUtablewidth}r  )ÚsumÚranger”  )rO   rÁ  Úlen_Úmc_widthrP   rÀ  rQ   Úget_multicolumn_width²  s   ÿÿ
ÿzTable.get_multicolumn_widthc                 C   s4   | j sdS d | j ¡}d| j ¡ krd| S d| S )Nr-   ry  z\caption{%s}\\
z!\caption[]{%s (... continued)}\\
)rŠ  ra   r~  Úthead_depth)rO   rŠ  rP   rP   rQ   Úget_caption¼  s   zTable.get_captionc                 C   s   | j dkrd| j ¡ kS dS )Nr˜  ry  r   )r  r~  rÇ  rN   rP   rP   rQ   Úneed_recurseÄ  s   
zTable.need_recursec                 C   s2   |  j d7  _ | jdkrdgS | jdkrdgS g S )Nry  r   ú\hline
r   z	\toprule
)r†  r“  rN   rP   rP   rQ   Úvisit_theadÉ  s   

zTable.visit_theadc                 C   sz   g }| j dkr| d¡ | jdkr4d| j ¡ kr| d¡ n| d¡ | dt| jƒ d ¡ | d	¡ |  jd8  _|S )
Nr   z	\midrule
r˜  ry  z\endfirsthead
z	\endhead
z\multicolumn{%d}{c}z&{\hfill ... continued on next page} \\z
\endfoot
\endlastfoot
)r“  r9   r  r~  rÇ  r{  r‰  r†  )rO   ÚarP   rP   rQ   Údepart_theadÑ  s   



ÿ
zTable.depart_theadc                 C   s
   d| _ d S ©Nr   ©r½  rN   rP   rP   rQ   Ú	visit_rowã  s   
zTable.visit_rowc                    sÌ   dg}d ˆ _ ttˆ jƒƒD ]}ˆ j| dkrˆ j|  d8  < qˆ jdkrd‡ fdd„ttˆ jƒƒD ƒ}t|ƒtˆ jƒkrC| d¡ |S d}| ¡  	 z| ¡ }W n   Y n	|d
||f 7 }qJ| |¡ |S )Nú \\
r   ry  r   c                    s"   g | ]}ˆ j | d kr|d ‘qS )r   ry  ©rƒ  )rø   ÚirN   rP   rQ   rû   î  s    ÿz$Table.depart_row.<locals>.<listcomp>rÊ  r-   Tz\cline{%d-%d}
)r½  rÃ  r{  rƒ  r“  r9   ÚreverseÚpop)rO   ÚresrÓ  ÚrowspansÚclineÚc_startrP   rN   rQ   Ú
depart_rowæ  s,   €

öû
zTable.depart_rowc                 C   s   z|| j |< W d S    Y d S rJ   rÒ  )rO   Úcellr�  rP   rP   rQ   Úset_rowspanÿ  s   zTable.set_rowspanc                 C   s   z| j | W S    Y dS rÎ  rÒ  )rO   rÛ  rP   rP   rQ   Úget_rowspan  s   zTable.get_rowspanc                 C   r  rJ   rÏ  rN   rP   rP   rQ   Úget_entry_number  rŽ  zTable.get_entry_numberc                 C   s   |  j d7  _ d S ©Nry  rÏ  rN   rP   rP   rQ   Úvisit_entry  ó   zTable.visit_entryc                 C   s    t | jƒ| jkr| j| j S dS rŒ  )r{  r„  r½  rN   rP   rP   rQ   Úis_stub_column  s   zTable.is_stub_columnN)r¢  )rq   rr   rs   r  rK   r   rf   r�  r—  rš  rž  r  r¡  r¬  r¯  r´  r»  r¾  rÆ  rÈ  rÉ  rË  rÍ  rÐ  rÚ  rÜ  rÝ  rÞ  rà  râ  rP   rP   rP   rQ   r}    s8    
#
r}  c                   @   s  e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZef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„ Z�d¡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-„ Z&d.d/„ Z'd0d1„ Z(d2d3„ Z)d4d5„ Z*d6d7„ Z+d8d9„ Z,d:d;„ Z-d<d=„ Z.d>d?„ Z/d@dA„ Z0dBdC„ Z1dDdE„ Z2dFdG„ Z3dHdI„ Z4dJdK„ Z5dLdM„ Z6dNdO„ Z7dPdQ„ Z8dRdS„ Z9dTdU„ Z:dVdW„ Z;dXdY„ Z<dZd[„ Z=d\d]„ Z>d^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�„ 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£„ 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è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�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�dX�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ZÒ�d‡�dˆ„ ZÓ�d‰�dŠ„ ZÔ�d‹�dŒ„ ZÕ�d��dŽ„ ZÖ�d��d�„ Z×�d‘�d’„ ZØ�d“�d”„ ZÙ�d•�d–„ ZÚ�d—�d˜„ ZÛ�d™�dš„ ZÜ�d›�dœ„ ZÝ�d��dž„ ZÞ�dŸ�d „ ZßdS (¤  rL   z¾
    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.
    Fr8   r   c           	         s˜  t j ˆ |¡ ˆ jjjˆ _ˆ jjjˆ _|j ˆ _}ˆ  	|j
¡ˆ _|jˆ _|jˆ _|jˆ _|jˆ _|jˆ _|jˆ _t|ddƒˆ _|jˆ _|j dd¡ˆ _dˆ _dˆ _|jrbt d|j¡\}ˆ _ˆ _}n|jrhdˆ _ˆ jjrvˆ jj dd¡ˆ _nd ˆ _t  !|j"|j¡ˆ _#||j"|jƒˆ _$ˆ j#j%d	 ˆ _&ˆ jj'g}ˆ j$j(d
vr£| )ˆ j$j(¡ d *t+d |ƒ¡ˆ _'t,|j-|j.ƒˆ _/ˆ jj0dkr¾dˆ _1ndˆ jj0 ˆ _1|j2ˆ _2dˆ j'ˆ jj-f gˆ _3t4ƒ ˆ _5dˆ j5d< |j6gˆ _6t4ƒ ˆ _7g ˆ _8g ˆ _9g ˆ _:g ˆ _;g ˆ _<g ˆ _=g ˆ _>g ˆ _?g ˆ _@g ˆ _A	 g ˆ _Bg ˆ _Cg ˆ _Dg ˆ _Eg ˆ _Fg ˆ _G|j"dk�r&ˆ jG )d|j" ¡ d	gˆ _Hg ˆ _Id	ˆ _Jg ˆ _Kg ˆ _LtMˆ dƒˆ _Nˆ j@ˆ _Og ˆ _Pˆ jdk�rQdˆ j ˆ j5d< ˆ jQ�s…ˆ j�radˆ j ˆ j5d< ˆ j d¡D ]}| R¡ }|dk�rydˆ j5d< �qg|dv�rƒdˆ j5d< �qg|j- Sd¡dk�r¥ˆ j' Sd ¡dk�s ˆ j' Sd!¡dk�r¥d"ˆ j5d#< tT U|¡}d$|v ˆ _Vˆ jV�rÈd%d&„ |D ƒ}ˆ jjW�rÃd'ˆ _Vnd(ˆ j7d)< ‡ fd*d&„|D ƒˆ _Xˆ jd+v �rÜdˆ _Yn	d,ˆ jˆ jf ˆ _Y|jY�róˆ  jYd|jY 7  _Y|jZ�rüd-t[_\d S |j]}|d u�r*t^|t_ˆ j/j`ƒƒ}d.ˆ j/j`v �r|d8 }ˆ j/j`d	 d/k�r%|d8 }d0| t[_\ta|d1ƒ�rH|jbdk�rJd2ˆ j/j`d	 |jbd f ˆ j5d1< d S d S d S )3NÚfont_encodingr-   r:  r;  z	(\w+)(.*)Úverbatimr  ry  r   )rž   r-   z\usepackage{graphicx}z\usepackage[%s]{graphicx}z\documentclass[%s]{%s}z\usepackage{ifthen}Ú__staticr�   z  pdflang={%s},r˜  Úasciiz\usepackage[%s]{inputenc}Ú	_inputencz\usepackage[%s]{fontenc}Ú_fontencÚOT1z+\DeclareTextSymbol{\textquotedbl}{OT1}{`\"}Ú_textquotedblOT1)r:   ÚT2AÚT2BÚT2CÚT4ÚT5z,\DeclareTextSymbolDefault{\textquotedbl}{T1}Ú_textquotedblÚscrr  ÚDIVÚBCORz\usepackage{typearea}Útypearearv   c                 S   ó   g | ]}|d kr|‘qS )rv   rP   )rø   ÚsheetrP   rP   rQ   rû   é  ó    ÿz,LaTeXTranslator.__init__.<locals>.<listcomp>Fz!\usepackage{docutils}[2020/08/28]r)  c                    s   g | ]}ˆ   |¡‘qS rP   )Ústylesheet_call)rø   r`   rN   rP   rQ   rû   ó  ó    ÿ)Ú0ÚfalseÚFalser-   z(colorlinks=true,linkcolor=%s,urlcolor=%sz\setcounter{secnumdepth}{0}rs  rl   z\setcounter{secnumdepth}{%d}Úsectnum_startz\setcounter{%s}{%d})cr   ÚNodeVisitorrK   rW   rü   r  ÚwarnÚerrorr\   Úto_latex_encodingÚoutput_encodingÚlatex_encodingr2   r3   r%   Ú_use_latex_citationsÚreference_labelÚ_reference_labelÚhyperlink_colorr6   r[   rã  r7   Úsection_enumerator_separatorr�  Úliteral_block_envÚliteral_block_optionsÚreÚsplitÚuse_verbatim_when_possibleÚ
use_bibtexÚbibtexr   r  r   Úlanguage_moduleÚbabelÚauthor_separatorsÚauthor_separatorÚdocumentoptionsrþ   r9   ra   Úfilterrh  ÚdocumentclassÚuse_part_sectionÚd_classÚgraphicx_optionÚgraphicx_packageÚdocutils_footnotesr=   r  r>   r?   r@   rA   rC   rD   rB   rE   rF   rG   rH   rI   ÚcontextÚtitle_labelsÚsubtitle_labelsÚauthor_stackÚdateÚ	pdfauthorÚpdfinfoÚ_section_numberÚ_enumeration_countersÚ_max_enumeration_countersÚ	_bibitemsÚtable_stackr}  Úactive_tableÚoutÚ	out_stackÚis_xetexr#  Úfindr
   Úget_stylesheet_listÚfallback_stylesheetr;   r/   Úhyperref_optionsÚsectnum_xformr!  Úsecnumdepthr<   Úminr{  rv  Úhasattrrý  )	rO   rW   Úbabel_classr\   r,   Ú	d_optionsÚencÚstylesheet_listr1  rP   rN   rQ   rK   H  s  ÿÿýÿ
ÿÿ
ÿ


ÿ
ÿ
ÿ
ÿ€



ÿ
ÿÿ


ÿÿÿþzLaTeXTranslator.__init__c           	   
   C   sú   t j |¡\}}|dv }| jjrd|r|d }ztjj|dd� ¡ }| jj	 
|¡ W n* tyS } zd|t|jƒf }| jj |¡ d| dd¡ W  Y d	}~S d	}~ww |r^d d
|dg¡}d||f S |rk|}d}nd}| jjryt | jj|¡}|| S )z8Return code to reference or embed stylesheet file `path`)ú.styr-   r8  zutf-8)Úsource_pathrV   z!Cannot embed stylesheet %r:
  %s.z% r   ú
% Nr  r  z%% embedded stylesheet: %s
%sz\usepackage{%s}z
\input{%s})r_   r`   Úsplitextr\   r0   rv   ÚioÚ	FileInputre   Úrecord_dependenciesÚaddr^   r   ÚstrerrorrW   rü   r   r�  ra   r.   r
   Úrelative_pathÚ_destination)	rO   r`   ÚbaseÚextÚ
is_packageÚcontentÚerrÚmsgÚcmdrP   rP   rQ   rø  .  sB   ÿÿ
ÿ€üþzLaTeXTranslator.stylesheet_callc                 C   s\   ddddddddd	d
dddddœ}|  ¡ }||v r|| S | dd¡ dd¡}| d¡d S )zƒTranslate docutils encoding name into LaTeX's.

        Default method is remove "-" and "_" chars from docutils_encoding.
        Úlatin1Úlatin2Úlatin3Úlatin4Úiso88595Úlatin5Úlatin9ÚmaccyrÚcp1251úkoi8-rúkoi8-uÚcp1250Úcp1252ræ  )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-1251rS  rT  zwindows-1250zwindows-1252zus-asciir:  r-   r8   r*  r   )r÷   r�  r  )rO   Údocutils_encodingrñ   rV   rP   rP   rQ   r  P  s(   óz!LaTeXTranslator.to_latex_encodingc                 C   s   | j j| S rJ   )r  Úlabels)rO   Údocutil_labelrP   rP   rQ   Úlanguage_labely  s   zLaTeXTranslator.language_labelc           
      C   s6  | j r|S tj ¡ }| js| tj¡ | jr| js|tdƒ= | jdv rN| j	sN| j
r<d|tdƒ< | j| jd< d|tdƒ< nd|tdƒ< d	|td
ƒ< d|tdƒ< | jrad|tdƒ< d| jj |tdƒ< | j	s¿| j d¡s|| tj¡ | tj¡ | tj¡ | tj¡ |D ]:}t|ƒ}|tjv r™| js™tj| jd< q„|tjv r¤d| jd< q„| jdkr¾|tjv r¾d|tj| f | jdt|ƒ < q„| |¡}| j	sãd}| j
rÐ|d7 }|d D ]}| || |d | ¡}qÔ| j�r| d¡}t|dd… ƒD ]\}}	|	 ¡ �s||  d7  < qôd |¡}| j
�r| j�s| dd¡}|S ) aU  Return 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:  )ré  r-   z\underline{~}Úgraphicxz\reflectbox{/}r0  z
\textbar{}r   z\textless{}ú<z\textgreater{}ú>r9  ú ú	rT   r.  z\usepackage{pifont}rg  z"\DeclareUnicodeCharacter{%04X}{%s}rç  r8   z,`'"<>é   z{}r   Nr  ú\\
z  z ~) rä  r/  rc  ÚcopyÚupdaterd  Úinside_citation_reference_labelrb  rã  r+  Úliteralr  r>   Úinsert_non_breaking_blanksr\   Ú	tab_widthr  Ú
startswithre  rf  r.  rg  r.  r!  Ústrrn   r�  Úinsert_newliner  Ú	enumerateÚlstripra   )
rO   Útextr-  ÚchÚcpÚseparate_charsÚcharrp   rÓ  r'  rP   rP   rQ   Úencode|  sl   




ÿÿ€


€
zLaTeXTranslator.encodez[
	]c                 C   s   |   | d|¡¡S )z1Cleanse, encode, and return attribute value text.r_  )rs  Úsub)rO   rn  Ú
whitespacerP   rP   rQ   ÚattvalÓ  s   zLaTeXTranslator.attvalc                 C   s   t |jtjƒS )z@Check whether a node represents an inline or block-level element)Ú
isinstanceÚparentr   ÚTextElementr²  rP   rP   rQ   Ú	is_inlineß  s   zLaTeXTranslator.is_inlinec                 C   s$   | j  d dd„ |d D ƒ¡¡ dS )z)Append hypertargets for all ids of `node`ú%
c                 S   ó   g | ]}d | ‘qS )z"\raisebox{1em}{\hypertarget{%s}{}}rP   ©rø   rÀ   rP   rP   rQ   rû   ç  s
    ÿÿz7LaTeXTranslator.append_hypertargets.<locals>.<listcomp>ÚidsN)r)  r9   ra   r²  rP   rP   rQ   Úappend_hypertargetsã  s   ÿz#LaTeXTranslator.append_hypertargetsTc                 C   s@   dd„ |  dg ¡D ƒ}|rdd„ |D ƒ}|r|r| dd¡ |S )zÅReturn list of label definitions for all ids of `node`

        If `set_anchor` is True, an anchor is set with \phantomsection.
        If `protect` is True, the \label cmd is made robust.
        c                 S   r|  )z
\label{%s}rP   r}  rP   rP   rQ   rû   ð  r  z1LaTeXTranslator.ids_to_labels.<locals>.<listcomp>r~  c                 S   s   g | ]}d | ‘qS )z\protectrP   )rø   ÚlabelrP   rP   rQ   rû   ò  r  r   z\phantomsection)r  rw  )rO   r³  Ú
set_anchorÚprotectrY  rP   rP   rQ   Úids_to_labelsê  s   zLaTeXTranslator.ids_to_labelsc                 C   sH   dd„ |d D ƒ}|r"|d   dd¡|d< dd„ |d D ƒ|d< d	S d	S )
z8Convert ``align-*`` class arguments into alignment args.c                 S   s   g | ]	}|  d ¡r|‘qS ©úalign-©ri  r‘  rP   rP   rQ   rû   ú  r  z:LaTeXTranslator.set_align_from_classes.<locals>.<listcomp>r–  r  r…  r-   r¦  c                 S   s   g | ]	}|  d ¡s|‘qS r„  r†  r‘  rP   rP   rQ   rû   ý  s    
ÿNr�  )rO   r³  r¦  rP   rP   rQ   Úset_align_from_classes÷  s
   þz&LaTeXTranslator.set_align_from_classesNc                 C   sX   |  d|¡}|dkr| j d¡ d S |dkr| j d¡ d S |dkr*| j d¡ d S d S )Nr¦  r£  z\raggedright
r¤  z\centering
r¥  z\raggedleft
)r  r)  r9   )rO   r³  r   r¦  rP   rP   rQ   Úinsert_align_declaration   s   ÿz(LaTeXTranslator.insert_align_declarationc                 C   s¦   t |jtjƒs| j d¡ |d D ]?}| d¡r3| j |dd… ¡}|r2d| jj	|< | j d| ¡ qt |tj
ƒr?|tjv r?q| jsHtj| jd< | j d	| ¡ qdS )
z6Open a group and insert declarations for class values.r   r–  ú	language-é	   NTz\begin{selectlanguage}{%s}
ÚDUclassz\begin{DUclass}{%s}
)rw  rx  r   Úcompoundr)  r9   ri  r  rý   rÿ   r-  r   r{   r.  r!  Úduclassr@   ©rO   r³  r’  rþ   rP   rP   rQ   Úduclass_open	  s   
€õzLaTeXTranslator.duclass_openc                 C   s|   t |d ƒD ]5}| d¡r | j |dd… ¡}|r| j d¡ qt|tjƒr,|t	j
v r,q| js5tj| jd< | j d¡ qdS )z$Close a group of class declarations.r–  r‰  rŠ  Nz\end{selectlanguage}
r‹  ú\end{DUclass}
)Úreversedri  r  rý   r)  r9   rw  r   r-  r   r{   r.  r!  r�  r@   rŽ  rP   rP   rQ   Úduclass_close  s   
€özLaTeXTranslator.duclass_closec                 C   s   | j  | j¡ || _d S rJ   )r*  r9   r)  )rO   Únew_outrP   rP   rQ   Úpush_output_collector(  s   
z%LaTeXTranslator.push_output_collectorc                 C   s   | j  ¡ | _d S rJ   )r*  rÕ  r)  rN   rP   rP   rQ   Úpop_output_collector,  ó   z$LaTeXTranslator.pop_output_collectorc                 C   sn   |D ]}t |tjtjtjfƒs nqdS t |tjƒrdS t |tjtjfƒr*|  |¡S t |tj	tj
fƒs5dS dS )aD  
        Return LaTeX code required between term or field name and content.

        In a LaTeX "description" environment (used for definition
        lists and non-docinfo field lists), a ``\leavevmode``
        between an item's label and content ensures the correct
        placement of certain block constructs.
        r-   z\leavevmode
ú\leavevmode)rw  r   Ú	InvisibleÚfootnoteÚcitationÚimageÚ	containerrŒ  Úterm_postfixrl  Ú
math_block)rO   r³  ÚchildrP   rP   rQ   r�  /  s    	ÿþ

ÿzLaTeXTranslator.term_postfixc                 C   s   | j  |  | ¡ ¡¡ d S rJ   )r)  r9   rs  Úastextr²  rP   rP   rQ   Ú
visit_TextJ  ó   zLaTeXTranslator.visit_Textc                 C   ó   d S rJ   rP   r²  rP   rP   rQ   Údepart_TextM  ó   zLaTeXTranslator.depart_Textc                 C   ó   |d   dd¡ |  |¡ d S )Nr–  r   Úabbreviation©rw  Úvisit_inliner²  rP   rP   rQ   Úvisit_abbreviationP  ó   z"LaTeXTranslator.visit_abbreviationc                 C   ó   |   |¡ d S rJ   ©Údepart_inliner²  rP   rP   rQ   Údepart_abbreviationT  rŸ  z#LaTeXTranslator.depart_abbreviationc                 C   r¦  )Nr–  r   Úacronymr¨  r²  rP   rP   rQ   Úvisit_acronymW  r«  zLaTeXTranslator.visit_acronymc                 C   r¬  rJ   r­  r²  rP   rP   rQ   Údepart_acronym[  rŸ  zLaTeXTranslator.depart_acronymc                 C   ó   |   |d¡ d S )NÚaddress©Úvisit_docinfo_itemr²  rP   rP   rQ   Úvisit_address^  r–  zLaTeXTranslator.visit_addressc                 C   r¬  rJ   ©Údepart_docinfo_itemr²  rP   rP   rQ   Údepart_addressa  rŸ  zLaTeXTranslator.depart_addressc                 C   sª   dd„ |d D ƒ|d< | j jr0tj| jd< d|d v r!tj| jd< | j dd |d ¡ ¡ d S | j	s9tj
| jd< d|d v rH| j	sHtj| jd< |  |¡ | j d¡ d S )	Nc                 S   rõ  )Ú
admonitionrP   r‘  rP   rP   rQ   rû   f  r÷  z4LaTeXTranslator.visit_admonition.<locals>.<listcomp>r–  r»  r   z
\DUadmonition[%s]{r  z\begin{DUadmonition})r\   r;   r!  Úadmonition_legacyr@   Úerror_legacyr)  r9   ra   r.  r»  r   r�  r²  rP   rP   rQ   Úvisit_admonitiond  s   
z LaTeXTranslator.visit_admonitionc                 C   s2   | j jr| j d¡ d S | j d¡ |  |¡ d S )Nú}
z\end{DUadmonition}
)r\   r;   r)  r9   r’  r²  rP   rP   rQ   Údepart_admonitionu  s
   z!LaTeXTranslator.depart_admonitionc                 C   s&   | j  |  | ¡ ¡¡ |  |d¡ d S )NÚauthor)r!  r9   rv  r   r¶  r²  rP   rP   rQ   Úvisit_author|  s   zLaTeXTranslator.visit_authorc                 C   r¬  rJ   r¸  r²  rP   rP   rQ   Údepart_author€  rŸ  zLaTeXTranslator.depart_authorc                 C   r£  rJ   rP   r²  rP   rP   rQ   Úvisit_authorsƒ  ó   zLaTeXTranslator.visit_authorsc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_authors‡  r¥  zLaTeXTranslator.depart_authorsc                 C   ó   |   |¡ | j d¡ d S )Nz\begin{quote}©r�  r)  r9   r²  rP   rP   rQ   Úvisit_block_quoteŠ  ó   
z!LaTeXTranslator.visit_block_quotec                 C   ó   | j  d¡ |  |¡ d S )Nz\end{quote}
©r)  r9   r’  r²  rP   rP   rQ   Údepart_block_quoteŽ  ó   z"LaTeXTranslator.depart_block_quotec                 C   s0   |   |¡ | jr| j d¡ d S | j d¡ d S )Nz\begin{list}{}{}z\begin{itemize})r�  Úis_toc_listr)  r9   r²  rP   rP   rQ   Úvisit_bullet_list’  s   
z!LaTeXTranslator.visit_bullet_listc                 C   s.   | j r
| j d¡ n| j d¡ |  |¡ d S )Nú\end{list}
z\end{itemize}
)rÏ  r)  r9   r’  r²  rP   rP   rQ   Údepart_bullet_list™  s   z"LaTeXTranslator.depart_bullet_listc                 C   ó&   | j  d¡ |d r|  |¡ d S d S )Nú\textsuperscript{r–  ©r)  r9   r©  r²  rP   rP   rQ   Úvisit_superscript   ó   ÿz!LaTeXTranslator.visit_superscriptc                 C   ó"   |d r	|   |¡ | j d¡ d S ©Nr–  r2  ©r®  r)  r9   r²  rP   rP   rQ   Údepart_superscript¥  ó   
z"LaTeXTranslator.depart_superscriptc                 C   rÓ  )Nz\textsubscript{r–  rÕ  r²  rP   rP   rQ   Úvisit_subscriptª  r×  zLaTeXTranslator.visit_subscriptc                 C   rØ  rÙ  rÚ  r²  rP   rP   rQ   Údepart_subscript¯  rÜ  z LaTeXTranslator.depart_subscriptc                 C   ó   | j  d¡ d S )Nz

\caption{©r)  r9   r²  rP   rP   rQ   Úvisit_caption´  r–  zLaTeXTranslator.visit_captionc                 C   rß  ©Nr¿  rà  r²  rP   rP   rQ   Údepart_caption·  r–  zLaTeXTranslator.depart_captionc                 C   s8   | j s	tj| jd< | j d¡ |d r|  |¡ d S d S )NÚtitlereferencez\DUroletitlereference{r–  )r.  r!  rä  r@   r)  r9   r©  r²  rP   rP   rQ   Úvisit_title_referenceº  s   ÿz%LaTeXTranslator.visit_title_referencec                 C   rØ  rÙ  rÚ  r²  rP   rP   rQ   Údepart_title_referenceÁ  rÜ  z&LaTeXTranslator.depart_title_referencec                 C   s.   | j r
|  g ¡ d S | j d¡ |  |¡ d S )Nz\begin{figure}[b])r  r”  r)  r9   r  r²  rP   rP   rQ   Úvisit_citationÆ  s   zLaTeXTranslator.visit_citationc                 C   sP   | j r | jd }d | jdd … ¡}| j ||g¡ |  ¡  d S | j d¡ d S )Nr   r-   ry  ú\end{figure}
)r  r)  ra   r&  r9   r•  )rO   r³  r€  rn  rP   rP   rQ   Údepart_citationÎ  s   
zLaTeXTranslator.depart_citationc                 C   s†   | j r"| js| j d¡ d| _d S | jd dv sJ dƒ‚| jd= d S d}d|v r-|d }nd|v r9| jj|d  }| j d	| ¡ d S )
Nz\cite{ry  r  ©r_  r   z2unexpected non-whitespace while in reference labelr-   ÚrefidÚrefnameú\hyperlink{%s}{[)r  re  r)  r9   rW   Únameids)rO   r³  ÚhrefrP   rP   rQ   Úvisit_citation_referenceØ  s   
ÿ
z(LaTeXTranslator.visit_citation_referencec                 C   sˆ   | j r<d}|jddd�}t|tjƒr'| ¡ dv r'|jddd�}t|tjƒr'd}|r1| j d¡ d S | j d¡ d| _	d S | j d¡ d S )NFT©ÚdescendÚsiblingsrê  r  r2  ú]})
r  Ú	next_noderw  r   ÚTextr   Úcitation_referencer)  r9   re  )rO   r³  Úfollowup_citationÚsiblingÚsibling2rP   rP   rQ   Údepart_citation_referenceé  s   
z)LaTeXTranslator.depart_citation_referencec                 C   rß  )Nz	(\textbf{rà  r²  rP   rP   rQ   Úvisit_classifierü  r–  z LaTeXTranslator.visit_classifierc                 C   rß  )Nz})rà  r²  rP   rP   rQ   Údepart_classifierÿ  r–  z!LaTeXTranslator.depart_classifierc                 C   s   | j  |¡ d S rJ   )r(  r´  r²  rP   rP   rQ   r´    r–  zLaTeXTranslator.visit_colspecc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_colspec  r¥  zLaTeXTranslator.depart_colspecc                 C   s<   t |jtjƒs| j d¡ | j d| ¡  dd¡ ¡ tj‚)Nr   z%% %s
r:  )	rw  rx  r   rŒ  r)  r9   r   r�  ÚSkipNoder²  rP   rP   rQ   Úvisit_comment  s   zLaTeXTranslator.visit_commentc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_comment  r¥  zLaTeXTranslator.depart_commentc                 C   s8   t |jtjƒr| j d¡ |d  dd¡ |  |¡ d S )Nr   r–  r   rŒ  )rw  rx  r   rŒ  r)  r9   rw  r�  r²  rP   rP   rQ   Úvisit_compound  s   zLaTeXTranslator.visit_compoundc                 C   r¬  rJ   ©r’  r²  rP   rP   rQ   Údepart_compound  rŸ  zLaTeXTranslator.depart_compoundc                 C   r³  )NÚcontactrµ  r²  rP   rP   rQ   Úvisit_contact  r–  zLaTeXTranslator.visit_contactc                 C   r¬  rJ   r¸  r²  rP   rP   rQ   Údepart_contact  rŸ  zLaTeXTranslator.depart_contactc                 C   r¬  rJ   )r�  r²  rP   rP   rQ   Úvisit_container!  rŸ  zLaTeXTranslator.visit_containerc                 C   r¬  rJ   r  r²  rP   rP   rQ   Údepart_container$  rŸ  z LaTeXTranslator.depart_containerc                 C   r³  )NÚ	copyrightrµ  r²  rP   rP   rQ   Úvisit_copyright'  r–  zLaTeXTranslator.visit_copyrightc                 C   r¬  rJ   r¸  r²  rP   rP   rQ   Údepart_copyright*  rŸ  z LaTeXTranslator.depart_copyrightc                 C   r³  )Nr   rµ  r²  rP   rP   rQ   Ú
visit_date-  r–  zLaTeXTranslator.visit_datec                 C   r¬  rJ   r¸  r²  rP   rP   rQ   Údepart_date0  rŸ  zLaTeXTranslator.depart_datec                 C   r£  rJ   rP   r²  rP   rP   rQ   Úvisit_decoration3  rÅ  z LaTeXTranslator.visit_decorationc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_decoration7  r¥  z!LaTeXTranslator.depart_decorationc                 C   r£  rJ   rP   r²  rP   rP   rQ   Úvisit_definition:  r¥  z LaTeXTranslator.visit_definitionc                 C   rß  ©Nr   rà  r²  rP   rP   rQ   Údepart_definition=  r–  z!LaTeXTranslator.depart_definitionc                 C   rÇ  )Nz\begin{description}
rÈ  r²  rP   rP   rQ   Úvisit_definition_list@  rÊ  z%LaTeXTranslator.visit_definition_listc                 C   rË  )Nz\end{description}
rÌ  r²  rP   rP   rQ   Údepart_definition_listD  rÎ  z&LaTeXTranslator.depart_definition_listc                 C   r£  rJ   rP   r²  rP   rP   rQ   Úvisit_definition_list_itemH  r¥  z*LaTeXTranslator.visit_definition_list_itemc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_definition_list_itemK  r¥  z+LaTeXTranslator.depart_definition_list_itemc                 C   rß  )Nr_  rà  r²  rP   rP   rQ   Úvisit_descriptionN  r–  z!LaTeXTranslator.visit_descriptionc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_descriptionQ  r¥  z"LaTeXTranslator.depart_descriptionc                 C   s   |   | j¡ d S rJ   )r”  rF   r²  rP   rP   rQ   Úvisit_docinfoT  r–  zLaTeXTranslator.visit_docinfoc                 C   sX   |   ¡  | jr*d| jd< | jstj| jd< tj| jd< | j dd¡ | j d¡ d S d S )Nz\usepackage{tabularx}ÚtabularxÚ_providelengthrF   r   z@
% Docinfo
\begin{center}
\begin{tabularx}{\DUdocinfowidth}{lX}
z\end{tabularx}
\end{center}
)	r•  rF   r>   r.  r!  Úprovidelengthr@   rw  r9   r²  rP   rP   rQ   Údepart_docinfoW  s   
özLaTeXTranslator.depart_docinfoc                 C   sä   | j rJ|dv r8|dks| js| j g ¡ |dkr&d| _|  | ¡ ¡}d| _n|  | ¡ ¡}| jd  |¡ tj‚|dkrJ| j	 |  | ¡ ¡¡ tj‚| j
 d|  |¡ ¡ |dkrjd| _| j
 d	¡ | j d
¡ d S | j d¡ d S )N)rÁ  Úorganizationr  r´  rÁ  r´  TFr  r   z\textbf{%s}: &
	z{\raggedright
z } \\
rÑ  )r3   r  r9   rk  rs  r   rv  r   rÿ  r   r)  r[  r  )rO   r³  Únamern  rP   rP   rQ   r¶  g  s(   z"LaTeXTranslator.visit_docinfo_itemc                 C   s   | j  | j ¡ ¡ d| _d S rŒ  )r)  r9   r  rÕ  rk  r²  rP   rP   rQ   r¹  ‚  s   
z#LaTeXTranslator.depart_docinfo_itemc                 C   r¬  rJ   )Úvisit_literal_blockr²  rP   rP   rQ   Úvisit_doctest_block‡  rŸ  z#LaTeXTranslator.visit_doctest_blockc                 C   r¬  rJ   )Údepart_literal_blockr²  rP   rP   rQ   Údepart_doctest_blockŠ  rŸ  z$LaTeXTranslator.depart_doctest_blockc                 C   sP   | j st|ƒr$t|d tjƒr&| jjdk}|  j| j|d|d�7  _d S d S d S )Nr   ro  F©r�  r‚  )	r3   r{  rw  r   rC   r\   r  r  rƒ  ©rO   r³  r‚  rP   rP   rQ   Úvisit_document�  s   ÿÿýzLaTeXTranslator.visit_documentc                 C   sH  | j js
| j jdvr|   ¡ | jd< | j ¡ | _| j ¡ | _| j tj	| j
 ¡ | jr9| j | j¡}| j d| ¡ | jrJ|  jdg| j dg 7  _| jsV| jr§| jsV| jr§d | j¡g}| jre|| j7 }| jrw|ddd | j¡ g| j 7 }| j d	d
 |¡ ¡ dd„ | jD ƒ}| j dd |¡ ¡ | j dd | j¡ ¡ | j d¡ | j�rt| jƒdk�r| jsød}| jD ]}t|ƒt|d ƒk rË|d }q»| j d| ¡ | jD ]}|d  dd¡}| j d|d ||d f ¡ q×| j d¡ n| j d| jd  ¡ | j d| jd  ¡ d| jv �r | j�s"| j d¡ d S d S d S )N)r-   rž   r  z  pdfauthor={%s}z\hypersetup{r2  r-   ú\\z\DUdocumentsubtitle{%s}z
\title{%s}ú%
  c                 S   s   g | ]}d   |¡‘qS )rb  )ra   )rø   Úauthor_entryrP   rP   rQ   rû   µ  rù  z3LaTeXTranslator.depart_document.<locals>.<listcomp>z\author{%s}z \and
z	\date{%s}ú, z\maketitle
r   z
\begin{thebibliography}{%s}
r;  r:  z\bibitem[%s]{%s}{%s}
ry  z\end{thebibliography}
z
\bibliographystyle{%s}
z\bibliography{%s}
Úminitocz'
\faketableofcontents % for local ToCs
)r  rÿ   rþ   r>   r  r@   rA   r9   r!  Úlinkingr/  r!  r  ra   r"  rC   r3   r  r   r  rD   r  rB   rE   r  r{  r&  r  r)  r�  Úhas_latex_toc)rO   r³  ÚauthorsrC   Úwidest_labelÚbiÚcite_keyrP   rP   rQ   Údepart_document•  sv   ÿÿÿ
ÿþÿÿ
€ÿ
ÿÿÿzLaTeXTranslator.depart_documentc                 C   rÓ  )Nz\emph{r–  rÕ  r²  rP   rP   rQ   Úvisit_emphasisÖ  r×  zLaTeXTranslator.visit_emphasisc                 C   rØ  rÙ  rÚ  r²  rP   rP   rQ   Údepart_emphasisÛ  rÜ  zLaTeXTranslator.depart_emphasisc                 C   sB   | j  | j  ¡ ¡r| j d¡ | j  ¡  | j  | j  ¡ ¡s	d S d S )Nú & )r(  rÝ  rÞ  r)  r9   rà  rN   rP   rP   rQ   Ú(insert_additional_table_colum_delimitersâ  s   ÿ
ýÿz8LaTeXTranslator.insert_additional_table_colum_delimitersc              	   C   s’  | j  ¡ dkr|  ¡  n| j d¡ d|v rd|v rtdƒ‚d|v rKd| jd< |d d }| j  | j  ¡ |¡ | j d	|| j  ¡ f ¡ | j	 d
¡ n=d|v r‚| j  ¡ dkr\| j  
¡ }nd}|d d }| j d||| j  | j  ¡ |¡| j  
¡ f ¡ | j	 d
¡ n| j	 d¡ t|ƒr¦t|jjtjƒs™| j  ¡ r¦| j d¡ | j	 d
¡ n| j	 d¡ | j jsÂ| jd  d¡rÂ| ¡ rÂ| j d¡ | j  ¡  d S )Nr   r6  ÚmorerowsÚmorecolszKCells that span multiple rows *and* columns currently not supported, sorry.z\usepackage{multirow}Úmultirowry  z\multirow{%d}{%s}{r2  r-   z\multicolumn{%d}{%s%s%s}{ú\textbf{r  r1  r6  )r(  rÞ  r7  r)  r9   ÚNotImplementedErrorr>   rÜ  r¾  r  r¡  rÆ  r{  rw  rx  r   Útheadrâ  r…  Úendswithr   rà  )rO   r³  ÚmrowsÚbar1ÚmcolsrP   rP   rQ   rà  è  sX   


ÿÿþüÿÿÿþzLaTeXTranslator.visit_entryc                 C   s0   | j  | j ¡ ¡ | j  | j ¡ ¡ |  ¡  d S rJ   )r)  r9   r  rÕ  r7  r²  rP   rP   rQ   Údepart_entry!  s   zLaTeXTranslator.depart_entryc                 C   s   | j  ¡  d S rJ   )r(  rÐ  r²  rP   rP   rQ   rÐ  '  rŸ  zLaTeXTranslator.visit_rowc                 C   ó   | j  | j ¡ ¡ d S rJ   )r)  r  r(  rÚ  r²  rP   rP   rQ   rÚ  *  ó   zLaTeXTranslator.depart_rowc           
      C   s†  dddddddœ}g d¢}d}| j r8| jr.| jr.| js.d	 d
d„ | jd | j… D ƒ¡| j }| jr8|| jd 7 }|| dd¡7 }|| d¡ }| dd¡}t| jƒd }dt	 
|¡ ¡  }d||||f }	| j |	¡ |  |¡ |dkr�| j d¡ |||f||d  kr�| j d||	f ¡ nd| | j|< | j d¡ | j d|	 ¡ | j d| ¡ d|v rÁ| j d||d d f ¡ d S d S )Nr-   r†   ÚalphÚAlphÚromanÚRoman)r-   r†   Ú
loweralphaÚ
upperalphaÚ
lowerromanÚ
upperroman))r-   r†   r1   )ú(rE  ú))r-   rG  r1   )r-   rF  r1   r1   c                 S   s   g | ]}t |ƒ‘qS rP   )rj  )rø   ÚnrP   rP   rQ   rû   ?  r  z9LaTeXTranslator.visit_enumerated_list.<locals>.<listcomp>r  ÚprefixÚenumtypeÚsuffixry  Úenumz%s\%s{%s}%sé   z\begin{enumerate}z
\renewcommand{\label%s}{%s}z\newcounter{%s}z\begin{list}z{%s}z{\usecounter{%s}}rÁ  z
\setcounter{%s}{%d})r6   r7   Úsection_levelr$  ra   r#  r  r  r{  rG  ÚtoRomanr÷   r9   r�  r)  r@   )
rO   r³  ÚtypesrY  rP  rQ  rR  Úenumeration_levelÚcounter_namer€  rP   rP   rQ   Úvisit_enumerated_list-  s\   ûÿ
ÿþ

ÿÿ€
ÿÿz%LaTeXTranslator.visit_enumerated_listc                 C   s@   t | jƒdkr| j d¡ n| j d¡ |  |¡ | j ¡  d S )NrT  z\end{enumerate}
rÑ  )r{  r$  r)  r9   r’  rÕ  r²  rP   rP   rQ   Údepart_enumerated_list`  s
   
z&LaTeXTranslator.depart_enumerated_listc                 C   r£  rJ   rP   r²  rP   rP   rQ   Úvisit_fieldh  rÅ  zLaTeXTranslator.visit_fieldc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_fieldl  r¥  zLaTeXTranslator.depart_fieldc                 C   s*   t |jjtjƒs| j |  |¡¡ d S d S rJ   )rw  rx  r   rF   r)  r9   r�  r²  rP   rP   rQ   Úvisit_field_bodyo  s   ÿz LaTeXTranslator.visit_field_bodyc                 C   s    | j | ju r| j  d¡ d S d S )Nrb  ©r)  rF   r9   r²  rP   rP   rQ   Údepart_field_bodys  s   ÿz!LaTeXTranslator.depart_field_bodyc                 C   s<   |   |¡ | j| jur| jstj| jd< | j d¡ d S d S )NÚ	fieldlistz\begin{DUfieldlist})r�  r)  rF   r.  r!  ra  r@   r9   r²  rP   rP   rQ   Úvisit_field_listw  s   
ýz LaTeXTranslator.visit_field_listc                 C   s&   | j | jur| j  d¡ |  |¡ d S )Nz\end{DUfieldlist}
)r)  rF   r9   r’  r²  rP   rP   rQ   Údepart_field_list~  s   z!LaTeXTranslator.depart_field_listc                 C   ó,   | j | ju r| j  d¡ d S | j  d¡ d S )Nr;  z
\item[{r_  r²  rP   rP   rQ   Úvisit_field_nameƒ  s   z LaTeXTranslator.visit_field_namec                 C   rd  )Nz}: &z:}]r_  r²  rP   rP   rQ   Údepart_field_name‹  s   z!LaTeXTranslator.depart_field_namec                 C   sv   t j| jd< |  |¡ |j dd¡}|dkr| j d| ¡ n| j d¡ | d¡r9|  j|  |¡dg 7  _d S d S )Nr,  r¦  r¤  z\begin{figure} %% align = "%s"
z\begin{figure}
r~  r   )	r!  r,  r>   r�  r±  r  r)  r9   rƒ  )rO   r³  Ú	alignmentrP   rP   rQ   Úvisit_figure‘  s   

ÿzLaTeXTranslator.visit_figurec                 C   rË  )Nrè  rÌ  r²  rP   rP   rQ   Údepart_figure¡  rÎ  zLaTeXTranslator.depart_figurec                 C   ó   |   g ¡ | j d¡ d S )Nz\newcommand{\DUfooter}{©r”  r)  r9   r²  rP   rP   rQ   Úvisit_footer¥  rÊ  zLaTeXTranslator.visit_footerc                 C   ó*   | j  d¡ d | j ¡| jd< |  ¡  d S )Nr2  r-   z~footer©r)  r9   ra   r>   r•  r²  rP   rP   rQ   Údepart_footer©  ó   zLaTeXTranslator.depart_footerc                 C   sè   z|d d }W n t y   |d d }Y nw | jrn| js$tj| jd< |d  ¡ }| jjdkr4d| }| j	 
d|d d ||  |¡f ¡ |d |d krX|  j	|  |¡7  _	|d	d … rpt|d	 tjƒrr| j	 
d
¡ d S d S d S d S )NÚbackrefsr   r~  Ú	footnotesr   ú[%s]z%%
\DUfootnotetext{%s}{%s}{%s}{Únamesry  r6  )r”  r  r.  r!  rr  r@   r   r\   Úfootnote_referencesr)  r9   rs  rƒ  rw  r   rl  )rO   r³  ÚbackrefÚnumrP   rP   rQ   Úvisit_footnote®  s(   ÿÿôzLaTeXTranslator.visit_footnotec                 C   rß  râ  rà  r²  rP   rP   rQ   Údepart_footnoteÂ  r–  zLaTeXTranslator.depart_footnotec                 C   s¦   d}d|v r|d }nd|v r| j j|d  }| jj}|dkr4|  |¡ | j d| ¡ | j d¡ d S | js=t	j
| jd< | j d|d	 d
 |f ¡ | j d¡ d S )Nr-   rë  rì  r   rí  rô  rr  z\DUfootnotemark{%s}{%s}{r~  r   r2  )rW   rî  r\   ru  r  r)  r9   r  r.  r!  rr  r@   )rO   r³  rï  ÚformatrP   rP   rQ   Úvisit_footnote_referenceÅ  s    

ÿz(LaTeXTranslator.visit_footnote_referencec                 C   rC  rJ   ©r)  r9   r  rÕ  r²  rP   rP   rQ   Údepart_footnote_referenceá  rD  z)LaTeXTranslator.depart_footnote_referencec                 C   s@   t |jtjƒr
tj‚t |jtjƒsJ ‚| js| j |¡ d S d S rJ   )	rw  rx  r   r™  rÿ  rš  r  r)  r9   )rO   r³  Úbracketr   rP   rP   rQ   Úlabel_delimå  s   ÿzLaTeXTranslator.label_delimc                 C   s   |   |dd¡ dS )z9footnote or citation label: in brackets or as superscriptr>  rÔ  N©r  r²  rP   rP   rQ   Úvisit_labelí  s   zLaTeXTranslator.visit_labelc                 C   s   |   |dd¡ d S )Nr?  r2  r€  r²  rP   rP   rQ   Údepart_labelñ  rá  zLaTeXTranslator.depart_labelc                 C   r£  rJ   rP   r²  rP   rP   rQ   Úvisit_generatedõ  r¥  zLaTeXTranslator.visit_generatedc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_generatedø  r¥  z LaTeXTranslator.depart_generatedc                 C   rj  )Nz\newcommand{\DUheader}{rk  r²  rP   rP   rQ   Úvisit_headerû  rÊ  zLaTeXTranslator.visit_headerc                 C   rm  )Nr2  r-   z~headerrn  r²  rP   rP   rQ   Údepart_headerÿ  rp  zLaTeXTranslator.depart_headerc                 C   s¢   |dur
t j d¡ t d|¡}|s|S | ¡ dd… \}}|dv r(d| }|S |dkr6dt|ƒd	  }|S | jrO|d
krO| jsFt	j
| 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*)ra  )r-   rÝ   z%sbpr6  z%.3f\linewidthç      Y@Úpxr  z$
\DUprovidelength{\pdfpxdimen}{1bp}
z%s\pdfpxdimen)ÚsysÚstderrÚwriter  ÚmatchÚgroupsr,  r+  r.  r!  r  r@   )rO   Ú
length_strÚpxunitrŒ  r�  ÚunitrP   rP   rQ   Úto_latex_length	  s$   ö	ø
zLaTeXTranslator.to_latex_lengthc           
      C   sª  | j | jd< |j}t|d ƒ dd¡}d|vr't|jtjƒr"d|d< |  	|¡ g }g }g }ddd	d
dddœ}d|v rZz||d  }| 
|d ¡ | 
|d ¡ W n	 tyY   Y nw d|v rj| 
d|  |d ¡ ¡ d|v ry| 
d|d d  ¡ d|v r‰| 
d|  |d ¡ ¡ |  |¡s�t|jtjtjfƒs�| 
d¡ |  |¡s®t|jtjƒs®| 
d¡ | ¡  | j |¡ d}	|rÃdd |¡ }	| j 
d|	|f ¡ | j |¡ d S )Nr\  Úurir0  ú/r¦  r¤  ©r-   r-   )z\raisebox{-0.5\height}{r2  )z\raisebox{-\height}{r2  )z!\noindent\makebox[\linewidth][c]{r2  )z
\noindent{z\hfill})z\noindent{\hfillr2  )ÚbottomÚmiddleÚtopr¤  r£  r¥  r   ry  Úheightz	height=%sÚscalezscale=%fr‡  r©  zwidth=%sr   r-   rs  r  z\includegraphics%s{%s})r  r>   r±  r   r�  rw  rx  r   Úfigurer‡  r9   r  r‘  rz  rŒ  rÔ  r)  r  ra   )
rO   r³  ÚattrsÚ	imagepathÚpreÚpostÚinclude_graphics_optionsÚalign_codesÚ
align_codeÚoptionsrP   rP   rQ   Úvisit_image	  sh   
ø	ÿÿ
ÿÿ
ÿ

ÿ
zLaTeXTranslator.visit_imagec                 C   s,   |  d¡r|  j|  |¡dg 7  _d S d S )Nr~  r   )r  r)  rƒ  r²  rP   rP   rQ   Údepart_imageU	  s   
ÿzLaTeXTranslator.depart_imagec                 C   st   |d D ]3}|  d¡r&| j |dd … ¡}|r%d| jj|< | j d| ¡ q| js/tj| j	d< | j d| ¡ qd S )Nr–  r‰  rŠ  Tz\foreignlanguage{%s}{Úinlinez\DUrole{%s}{)
ri  r  rý   rÿ   r)  r9   r.  r!  r¥  r@   rŽ  rP   rP   rQ   r©  Y	  s   
€÷zLaTeXTranslator.visit_inlinec                 C   s   | j  dt|d ƒ ¡ d S )Nr2  r–  )r)  r9   r{  r²  rP   rP   rQ   r®  e	  s   zLaTeXTranslator.depart_inlinec                 C   ó"   | j s	tj| jd< | j d¡ d S )NÚlegendz\begin{DUlegend})r.  r!  r§  r@   r)  r9   r²  rP   rP   rQ   Úvisit_legendh	  s   zLaTeXTranslator.visit_legendc                 C   rß  )Nz\end{DUlegend}
rà  r²  rP   rP   rQ   Údepart_legendm	  r–  zLaTeXTranslator.depart_legendc                 C   rß  )Nz\item[] rà  r²  rP   rP   rQ   Ú
visit_linep	  r–  zLaTeXTranslator.visit_linec                 C   rß  r  rà  r²  rP   rP   rQ   Údepart_lines	  r–  zLaTeXTranslator.depart_linec                 C   sj   | j stj| jd< tj| jd< |  |¡ t|jtj	ƒr#| j
 d¡ d S |  |¡ | j
 d¡ |  |¡ d S )Nr  Ú	lineblockz0\item[]
\begin{DUlineblock}{\DUlineblockindent}
z\begin{DUlineblock}{0em}
)r.  r!  r  r@   r¬  r‡  rw  rx  r   Ú
line_blockr)  r9   r�  rˆ  r²  rP   rP   rQ   Úvisit_line_blockv	  s   

z LaTeXTranslator.visit_line_blockc                 C   rË  )Nz\end{DUlineblock}
rÌ  r²  rP   rP   rQ   Údepart_line_block„	  rÎ  z!LaTeXTranslator.depart_line_blockc                 C   rß  )Nz
\item rà  r²  rP   rP   rQ   Úvisit_list_itemˆ	  r–  zLaTeXTranslator.visit_list_itemc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_list_item‹	  r¥  z LaTeXTranslator.depart_list_itemc                 C   sb   d| _ d|d v r| jjdkrtj| jd< | jstj| jd< | j	 
d¡ |d r/|  |¡ d S d S )NTÚcoder–  r,   r+  z\texttt{)rf  r\   Úsyntax_highlightr!  r+  r>   r.  Úhighlight_rulesr@   r)  r9   r©  r²  rP   rP   rQ   Úvisit_literalŽ	  s   ÿzLaTeXTranslator.visit_literalc                 C   s(   d| _ |d r|  |¡ | j d¡ d S )NFr–  r2  )rf  r®  r)  r9   r²  rP   rP   rQ   Údepart_literal™	  s   
zLaTeXTranslator.depart_literalc                 C   s   t |ƒdkot|d tjƒS )z,Check whether a node can be typeset verbatimry  r   )r{  rw  r   rö  r²  rP   rP   rQ   Úis_plaintext®	  s   zLaTeXTranslator.is_plaintextc           	      C   s&  dddddœ}| j }|  |¡}| j ¡ }|o| jj}|o(t|jtjtj	tj
fƒ }|dko.|}| d¡rA|  jdg|  |¡ 7  _|  |¡ |scd|d	 v rc| jjd
krctj| jd< | jsctj| jd< |rŽ|rŽ|sŽd g d¢¡| jd< | j dtdd„ | ¡  d¡D ƒƒ ¡ | j d¡ n|sŸ|sŸ| j d¡ | j d¡ n| j d¡ |râ|râ|r­|râz	|| | jd< W n	 ty¿   Y nw d| _|rÍ|rÍ| j d¡ | j d|| jf ¡ | j d| ¡ dS |rü|süd| _ d| jd< | j d¡ | j d¡ dS d| _!d| _"d| _#| j d¡ | j d¡ dS ) zjRender a literal block.

        Corresponding rST elements: literal block, parsed-literal, code.
        z6\usepackage{listings}
\lstset{xleftmargin=\leftmargin}z\usepackage{moreverb}z\usepackage{fancyvrb})Ú
lstlistingÚlistingÚVerbatimÚverbatimtabr¸  r~  r   r²  r–  r,   r+  )r-   z$% character width in monospaced fontz\newlength{\ttemwidth}z$\settowidth{\ttemwidth}{\ttfamily M}Úttemz\begin{minipage}{%d\ttemwidth}
c                 s   s   � | ]}t |ƒV  qd S rJ   )r{  )rø   r'  rP   rP   rQ   Ú	<genexpr>Ý	  s   € z6LaTeXTranslator.visit_literal_block.<locals>.<genexpr>z
\end{minipage}
z\begin{quote}
z
\end{quote}
Úliteral_blockTz\lstset{xleftmargin=0pt}
z\begin{%s}%s
z	
\end{%s}z\usepackage{alltt}rc  z\begin{alltt}
z
\end{alltt}z\ttfamily\raggedright
r-   N)$r	  r·  r(  r�  r…  rw  rx  r   r™  r»  Úsystem_messager  r)  rƒ  r�  r\   r³  r!  r+  r>   r.  r´  r@   ra   r9   Úmaxr   r  r  r  rä  r
  rc  rf  rk  rg  )	rO   r³  ÚpackagesÚliteral_envÚ
_plaintextÚ	_in_tableÚ_autowidth_tableÚ_use_envÚ_use_listingsrP   rP   rQ   r!  ²	  sr   ü


ÿ

ÿÿÿÿ
z#LaTeXTranslator.visit_literal_blockc                 C   sP   d| _ d| _d| _d| _d| _| j | j ¡ ¡ | j | j ¡ ¡ |  	|¡ d S rŒ  )
rg  rk  rf  rä  rc  r)  r9   r  rÕ  r’  r²  rP   rP   rQ   r#  
  s   z$LaTeXTranslator.depart_literal_blockc                 C   sx   |j  d¡}|j  d¡}|r|sd S |dv r"| j d||f ¡ d S |dkr0| j d| ¡ d S | j d||f ¡ d S )Nr   rF  )rÁ  ÚcreatorÚkeywordsÚsubjectrC   z  pdf%s={%s},Úproducerz  addtopdfproducer={%s},z  pdfinfo={%s={%s}},)r±  r  r"  r9   )rO   r³  r   rF  rP   rP   rQ   Ú
visit_meta
  s   zLaTeXTranslator.visit_metac                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_meta
  r¥  zLaTeXTranslator.depart_metar5  c                 C   s¨   |d r	|   |¡ d| jd< | ¡  tj¡}| d¡r&d |g|  |¡ ¡}|dkr3| j	r0d}nd}nd d	d
| dd| g¡}| j
 || ¡ |d rQ|  |¡ tj‚)z	math roler–  z\usepackage{amsmath}Úamsmathr~  r   r5  z\(%s\)z$%s$z%%r¨  z%sr­  )r©  r>   r   rn   r   Úuni2tex_tabler  ra   rƒ  rc  r)  r9   r®  r   rÿ  )rO   r³  Úmath_envÚ	math_codeÚwrapperrP   rP   rQ   Ú
visit_math
  s&   


ý
zLaTeXTranslator.visit_mathc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_math6
  r¥  zLaTeXTranslator.depart_mathc                 C   s   t | ¡ ƒ}| j||d� d S )N)rÐ  )r   r   rÓ  )rO   r³  rÐ  rP   rP   rQ   Úvisit_math_block9
  s   z LaTeXTranslator.visit_math_blockc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_math_block=
  r¥  z!LaTeXTranslator.depart_math_blockc                 C   s   | j d r| j d¡ d S d S )Nr  r+  )r  r)  r9   r²  rP   rP   rQ   Úvisit_option@
  s   
þzLaTeXTranslator.visit_optionc                 C   s   | j d  d7  < d S )Nr  ry  )r  r²  rP   rP   rQ   Údepart_optionE
  r   zLaTeXTranslator.depart_optionc                 C   s   | j  | dd¡¡ dS )zAAppend the delimiter betweeen an option and its argument to body.Ú	delimiterr_  N)r)  r9   r  r²  rP   rP   rQ   Úvisit_option_argumentI
  s   z%LaTeXTranslator.visit_option_argumentc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_option_argumentM
  r¥  z&LaTeXTranslator.depart_option_argumentc                 C   s   | j  d¡ | j d¡ d S )Nz
\item[r   )r)  r9   r  r²  rP   rP   rQ   Úvisit_option_groupP
  s   z"LaTeXTranslator.visit_option_groupc                 C   s   | j  ¡  | j d¡ d S )Nz] )r  rÕ  r)  r9   r²  rP   rP   rQ   Údepart_option_groupU
  rÊ  z#LaTeXTranslator.depart_option_groupc                 C   s8   | j stj| jd< tj| jd< |  |¡ | j d¡ d S )Nr  Ú
optionlistz\begin{DUoptionlist})r.  r!  r  r@   rÞ  r�  r)  r9   r²  rP   rP   rQ   Úvisit_option_listY
  s
   
z!LaTeXTranslator.visit_option_listc                 C   rË  )Nz\end{DUoptionlist}
rÌ  r²  rP   rP   rQ   Údepart_option_list`
  rÎ  z"LaTeXTranslator.depart_option_listc                 C   r£  rJ   rP   r²  rP   rP   rQ   Úvisit_option_list_itemd
  r¥  z&LaTeXTranslator.visit_option_list_itemc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_option_list_itemg
  r¥  z'LaTeXTranslator.depart_option_list_itemc                 C   r£  rJ   rP   r²  rP   rP   rQ   Úvisit_option_stringj
  rÅ  z#LaTeXTranslator.visit_option_stringc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_option_stringn
  rÅ  z$LaTeXTranslator.depart_option_stringc                 C   r³  )Nr  rµ  r²  rP   rP   rQ   Úvisit_organizationr
  r–  z"LaTeXTranslator.visit_organizationc                 C   r¬  rJ   r¸  r²  rP   rP   rQ   Údepart_organizationu
  rŸ  z#LaTeXTranslator.depart_organizationc                 C   sä   |j  |¡}|dkrt|j tjtjtjtjfƒrn:|dkr3t|j tjƒr3t|j |d  tjtjfƒs3n | j	j
rM|dkrB| jd|d� |dkrL| j d¡ n| j d¡ | d¡re|  j|  |¡dg 7  _|d rp|  |¡ d S d S )Nr   ry  z:LaTeX merges paragraphs in tables with auto-sized columns!©Ú	base_noder   r~  r–  )rx  Úindexrw  r   Ú	list_itemÚdescriptionrŒ  rœ  rl  r(  r…  rÿ  r)  r9   r  rƒ  r©  )rO   r³  ré  rP   rP   rQ   Úvisit_paragraphx
  s:   ÿÿÿ
ÿþÿ€
ÿzLaTeXTranslator.visit_paragraphc                 C   s.   |d r	|   |¡ | jjs| j d¡ d S d S )Nr–  r   )r®  r(  r…  r)  r9   r²  rP   rP   rQ   Údepart_paragraph”
  s
   
ÿz LaTeXTranslator.depart_paragraphc                 C   s:   t j| jd< | j d¡ |  |¡ | j d|d  ¡ d S )Nr+  r{  z"\hyperlink{%s}{\textbf{\color{red}rë  )r!  r+  r>   r)  r9   r  r²  rP   rP   rQ   Úvisit_problematicš
  s   
z!LaTeXTranslator.visit_problematicc                 C   rß  )Nz}}rà  r²  rP   rP   rQ   Údepart_problematic 
  r–  z"LaTeXTranslator.depart_problematicc                 C   sL   d|  dd¡ ¡ vrtj‚|  |¡s| j d¡ |d r!|  |¡ d| _d S )Nr   rz  r-   r   r–  T)	r  r  r   rÿ  rz  r)  r9   r©  rä  r²  rP   rP   rQ   Ú	visit_raw£
  s   


zLaTeXTranslator.visit_rawc                 C   s6   d| _ |d r|  |¡ |  |¡s| j d¡ d S d S )NFr–  r   )rä  r®  rz  r)  r9   r²  rP   rP   rQ   Ú
depart_raw­
  s   

ÿzLaTeXTranslator.depart_rawc                 C   sD   d}|D ]}|dkr|d7 }|dkr|d8 }|dk r dS q|dkS )z7Test whether there are unmatched '{' or '}' characters.r   r1  ry  r2  TrP   )rO   rc   r|  ro  rP   rP   rQ   Úhas_unbalanced_braces´
  s   ÿz%LaTeXTranslator.has_unbalanced_bracesc                 C   s  t dƒdt dƒdt dƒdi}d|v rKt|d ƒ |¡}| d¡d	ks'|  |¡r.|  d
| ¡ |d | ¡ krA| j d| ¡ t	j
‚| j d| ¡ d S d|v rT|d }nd|v ra| jj|d  }ntdƒ‚|  |¡sp| j d¡ | j d| ¡ | jr�| j d| j| dd¡f ¡ t	j
‚d S )Nr3  r4  r6  r7  r0  r(  Úrefuriz^^r  zYExternal link "%s" not supported by LaTeX.
 (Must not contain "^^" or unbalanced braces.)z\url{%s}z
\href{%s}{rë  rì  zUnknown reference.r   z\hyperref[%s]{z\%s{%s}}r-   )rb  Úunicodern   r,  rò  r   r   r)  r9   r   rÿ  rW   rî  ÚAssertionErrorrz  r  r�  )rO   r³  Úspecial_charsrï  rP   rP   rQ   Úvisit_referenceÀ
  s>   þÿÿ

ÿýzLaTeXTranslator.visit_referencec                 C   s*   | j  d¡ |  |¡s| j  d¡ d S d S )Nr2  r   )r)  r9   rz  r²  rP   rP   rQ   Údepart_referenceâ
  s   
ÿz LaTeXTranslator.depart_referencec                 C   r³  )NÚrevisionrµ  r²  rP   rP   rQ   Úvisit_revisionç
  r–  zLaTeXTranslator.visit_revisionc                 C   r¬  rJ   r¸  r²  rP   rP   rQ   Údepart_revisionê
  rŸ  zLaTeXTranslator.depart_revisionc                 C   r¦  )NÚrubricz
\DUrubric{)r.  r!  rü  r@   r)  r9   r²  rP   rP   rQ   Úvisit_rubricí
  s   zLaTeXTranslator.visit_rubricc                 C   rß  râ  rà  r²  rP   rP   rQ   Údepart_rubricô
  r–  zLaTeXTranslator.depart_rubricc                 C   s6   |  j d7  _ | j d¡ | j| j d   d7  < d S )Nry  r   )rU  r#  r9   r²  rP   rP   rQ   Úvisit_section÷
  s   zLaTeXTranslator.visit_sectionc                 C   s   | j  ¡  |  jd8  _d S rß  )r#  rÕ  rU  r²  rP   rP   rQ   Údepart_sectionþ
  s   
zLaTeXTranslator.depart_sectionc                 C   s8   |   |¡ tj| jd< | jstj| jd< | j d¡ d S )Nr+  Úsidebarz\DUsidebar{)	r�  r!  r+  r>   r.  r  r@   r)  r9   r²  rP   rP   rQ   Úvisit_sidebar  s
   
zLaTeXTranslator.visit_sidebarc                 C   rË  râ  rÌ  r²  rP   rP   rQ   Údepart_sidebar
  rÎ  zLaTeXTranslator.depart_sidebar)u   â€”r-   )rM  rN  r”  r(   c                 C   s:   | j | jj \}}| j d¡ | j |¡ | j |¡ d S )Nz\nopagebreak

\raggedleft )Úattribution_formatsr\   Úattributionr)  r9   r  )rO   r³  rP  rR  rP   rP   rQ   Úvisit_attribution  s   z!LaTeXTranslator.visit_attributionc                 C   s   | j  | j ¡ d ¡ d S r  r|  r²  rP   rP   rQ   Údepart_attribution  r¢  z"LaTeXTranslator.depart_attributionc                 C   r³  )NÚstatusrµ  r²  rP   rP   rQ   Úvisit_status  r–  zLaTeXTranslator.visit_statusc                 C   r¬  rJ   r¸  r²  rP   rP   rQ   Údepart_status  rŸ  zLaTeXTranslator.depart_statusc                 C   rÓ  )Nr;  r–  rÕ  r²  rP   rP   rQ   Úvisit_strong"  r×  zLaTeXTranslator.visit_strongc                 C   rØ  rÙ  rÚ  r²  rP   rP   rQ   Údepart_strong'  rÜ  zLaTeXTranslator.depart_strongc                 C   s   t j‚rJ   )r   rÿ  r²  rP   rP   rQ   Úvisit_substitution_definition,  rŽ  z-LaTeXTranslator.visit_substitution_definitionc                 C   r¬  rJ   )Úunimplemented_visitr²  rP   rP   rQ   Úvisit_substitution_reference/  rŸ  z,LaTeXTranslator.visit_substitution_referencec                 C   s¨   t |jtjƒr+|  | j¡ | jstj| j	d< | j
jdk}|  j| j|d|d�7  _d S t |jtjƒrC| j d| j | jd ¡ ¡ d S | jsLtj| j	d< | j d¡ d S )	NÚdocumentsubtitlero  Fr%  z\%s*{ry  rD   z
\DUsubtitle{)rw  rx  r   rW   r”  rD   r.  r!  r  r@   r\   r  r  rƒ  ri  r)  r9   r  rU  r&  rP   rP   rQ   Úvisit_subtitle2  s   ÿ
ÿzLaTeXTranslator.visit_subtitlec                 C   s*   t |jtjƒr|  ¡  d S | j d¡ d S râ  )rw  rx  r   rW   r•  r)  r9   r²  rP   rP   rQ   Údepart_subtitleC  s   zLaTeXTranslator.depart_subtitlec              	   C   s,  t j| jd< | jst j| jd< | jjrt j| jd< dg|d< |  	|¡ | jjr.| j
 d¡ n| j
 d¡ |  |¡ zd|d  }W n tyL   d	}Y nw | j
 d
|d |d |  |d ¡|f ¡ t|d ƒdkr~| j
 d|d d  ¡ | j d¡ d S dd„ t|d ƒD ƒ}| j dd |¡ ¡ d S )Nr+  rC   zsystem-messager–  z)
\DUtitle[system-message]{system-message
z
\DUtitle{system-message
z	, line~%sr'  r-   z'}

{\color{red}%s/%s} in \texttt{%s}%s
Útyper|  Úsourcerq  ry  z
\hyperlink{%s}{r   r2  c                 S   s    g | ]\}}d ||d f ‘qS )z\hyperlink{%s}{%d}ry  rP   )rø   rÓ  rï  rP   rP   rQ   rû   a  s    ÿz8LaTeXTranslator.visit_system_message.<locals>.<listcomp>z
backrefs: r_  )r!  r+  r>   r.  rC   r@   r\   r;   Útitle_legacyr¾  r)  r9   r  r  rs  r{  r  rl  ra   )rO   r³  r'  rq  rP   rP   rQ   Úvisit_system_messageI  s8   


ÿÿÿ
ÿz$LaTeXTranslator.visit_system_messagec                 C   s    | j  | j ¡ ¡ |  |¡ d S rJ   )r)  r9   r  rÕ  rÀ  r²  rP   rP   rQ   Údepart_system_messagee  s   z%LaTeXTranslator.depart_system_messagec                 C   sæ   |   |¡ tj| jd< | j ¡ r| j | j¡ t| dƒ| _| jj	dkrDt
|jtjƒrD|j |¡dkrD| j | j¡ d¡dkrD| j d¡ | j ¡  | j | jj|d ¡ d	|v ra| j d	|d	 ¡ | jjd
krld| jd
< |  g ¡ d S )Nr-  Útabularr˜  ry  rl  r  r—  r–  r¦  r   z\usepackage{booktabs})r�  r!  r-  r>   r(  r�  r'  r9   r}  r  rw  rx  r   ri  ré  r  rU  r,  r)  r   r—  r\   r•  rž  r“  r”  r²  rP   rP   rQ   Úvisit_tablei  s(   

ÿ
ÿ
zLaTeXTranslator.visit_tablec                 C   sæ   | j }|  ¡  z
|  |jd ¡}W n ty   d}Y nw t|jtjƒr*| j  	d¡ | j  	| j
 |¡¡ |  j |7  _ | j  	| j
 ¡ d ¡ | j
 ¡  t| jƒdkrX| j ¡ | _
| d¡rl|  j | j|dd�dg 7  _ |  |¡ d S )Nr©  r¢  r   r   r~  F©r�  )r)  r•  r‘  r±  r  rw  rx  r   rŒ  r9   r(  r¬  r¯  rf   r{  r'  rÕ  r  rƒ  r’  )rO   r³  rF  r©  rP   rP   rQ   Údepart_table‚  s$   ÿ

zLaTeXTranslator.depart_tablec                 C   sX   d|v sd|v sd|v rd S | j  d¡ t|jtjtjfƒ }|  j |  ||¡7  _ d S )Nró  rë  rì  r{  )r)  r9   rw  rx  r   rŠ  rC   rƒ  )rO   r³  r�  rP   rP   rQ   Úvisit_target˜  s   zLaTeXTranslator.visit_targetc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_target¥  r¥  zLaTeXTranslator.depart_targetc                 C   s(   | j  d¡s|  |¡ |  d ¡ d S d S )Núpreamble written)r(  r  rË  rÍ  r²  rP   rP   rQ   Úvisit_tbody¨  s   
þzLaTeXTranslator.visit_tbodyc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_tbody¯  r¥  zLaTeXTranslator.depart_tbodyc                 C   s   | j  d¡ dS )zdefinition list termz\item[{Nrà  r²  rP   rP   rQ   Ú
visit_term²  s   zLaTeXTranslator.visit_termc                 C   s@   | j  d¡ |jddd�}t|tjƒs| j  |  |¡¡ d S d S )Nz}] FTrñ  )r)  r9   rõ  rw  r   Ú
classifierr�  )rO   r³  rõ  rP   rP   rQ   Údepart_term¸  s
   ÿzLaTeXTranslator.depart_termc                 C   r£  rJ   rP   r²  rP   rP   rQ   Úvisit_tgroupÀ  r¥  zLaTeXTranslator.visit_tgroupc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_tgroupÃ  r¥  zLaTeXTranslator.depart_tgroupc                 C   r  rJ   )Ú_thead_depthrN   rP   rP   rQ   rÇ  Ç  rŽ  zLaTeXTranslator.thead_depthc                 C   sh   |  j d7  _ d|  ¡ kr | j d| j |¡ ¡ | j dd¡ | j | j ¡ ¡ | j | j 	¡ ¡ d S )Nry  z{%s}
r  )
r&  rÇ  r)  r9   r(  r»  rž  rÈ  r  rË  r²  rP   rP   rQ   rË  Ê  s   zLaTeXTranslator.visit_theadc                 C   s@   |d ur| j  | j ¡ ¡ | j ¡ r| | ¡ |  jd8  _d S rß  )r)  r  r(  rÍ  rÉ  rX   r&  r²  rP   rP   rQ   rÍ  Ò  s
   

zLaTeXTranslator.depart_theadc                 C   s`  t |jtjƒr"|  | j¡ | j d¡ | j d|  	| 
¡ ¡ ¡ dS t |jtjƒs7t |jtjƒs7t |jtjƒrn|jd p@|jjg}| jjrWtj| jd< | j dd |¡ ¡ n| js`tj| jd< | j d¡ | j d¡ dS t |jtjƒr„|  | jj¡ | j d¡ dS ttd	ƒr�tj| jd	< | j}| j |¡}| j d
¡ |t | jj!ƒkrÔ| jjrºtj| jd< |dt" #|¡ 7 }n| jsÉtj| jd< tj$| jd< | j dt" #|¡ ¡ d|jd v rótj%| jd< |  	| 
¡ ¡}| j d||f ¡ n| j d| ¡ dg}|| j&|jdd�7 }| j d |¡d ¡ |t | jj!ƒk�r,| jj�s.| jd  d7  < dS dS dS )z Append section and other titles.r-   z  pdftitle={%s},r–  rC   z
\DUtitle[%s]{r  z

\DUtitle{r¿  r1  z

z[section%s]r‹  z\begin{DUclass}{section%s}
zsystem-messagesr+  z\%s[%s]{\color{red}z\%s{Fr  r)  z%
}
r  r�  N)'rw  rx  r   rW   r”  rC   r  r9   r"  rs  r   Útopicr»  r  Útagnamer\   r;   r!  r  r@   r)  ra   r.  r-  r(  rŠ  r3  r1  r>   rU  r  ri  r{  rv  rG  rV  r�  r+  rƒ  )rO   r³  r–  r|  Úsection_nameÚsection_titleÚbookmarkrP   rP   rQ   Úvisit_titleÙ  sh   
ÿÿþ
ÿ
ÿÿþzLaTeXTranslator.visit_titlec                 C   s6   | j  | j ¡ ¡ t|jtjtjfƒr|  	¡  d S d S rJ   )
r)  r9   r  rÕ  rw  rx  r   r-  rW   r•  r²  rP   rP   rQ   Údepart_title  s   ÿzLaTeXTranslator.depart_titlec           	      C   s  | j  | j¡}dddœ}d| j jvrd|d< z|| }W n ty1   | jd| d |d	� Y d
S w tj| jd< d| | jd| < t	| j jƒ}d||f | jd| < ddddœ}d| j jv rbd|d< |rr| j
 d||||  f ¡ | j
 d||f ¡ | j
 d| ¡ d
S )z=Generate a local table of contents with LaTeX package minitocrl   Úmini)rl   rs  rs  Úsectri  z Skipping local ToC at %s level.
z3  Feature not supported with option "use-latex-toc"rç  Nr,  z\do%stoczminitoc-z\mtcsetdepth{%stoc}{%d}zminitoc-%s-depthry  r   )r/  r.  rl   r  z\setcounter{%stocdepth}{%d}z\mtcsettitle{%stoc}{%s}
z\%stoc
)r  ri  rU  rv  r  rÿ  r!  r,  r>   r{  r)  r9   )	rO   r³  rC   Údepthr)  Úminitoc_namesÚminitoc_nameÚmaxdepthÚoffsetrP   rP   rQ   r,  "  s<   

ÿþüÿ
ÿÿzLaTeXTranslator.minitocc              	   C   sø  d|d v r�| j  d¡ |  j |  |¡7  _ t| ¡ tjƒr=| jjdkr=| j  d| j	d | ¡  
¡ | ddg¡d f ¡ | jr‹d	}t| ¡ tjƒrT|  | d¡ 
¡ ¡}| d
d¡}d|d v ri|  |||¡ d S |rs| j  d| ¡ |dkr| j  d| ¡ | j  d¡ d| _tj‚d| _d S d|d v r·| jjr·|  | j¡ | j  d¡ t| ¡ tjƒrµ| d¡ d S d S d|d v r×| jsÆtj| jd< | jjrÐtj| jd< |  | j¡ nd|d v rí| jsætj| jd< |  | j¡ n|d  dd¡ |  |¡ d S )NÚcontentsr–  r   ro  z
\pdfbookmark[%d]{%s}{%s}ry  r~  r   r-   r0  Úlocalz\setcounter{tocdepth}{%d}
ÚContentsz!
\renewcommand{\contentsname}{%s}z
\tableofcontents
TrH   z\begin{abstract}rG   r'  )r)  r9   rƒ  rw  rõ  r   rC   r\   r  rU  r   r  r2   rs  rÕ  r,  r.  rÿ  rÏ  r4   r”  rH   r.  r!  r@   r;   Úabstract_legacyrG   rw  rÉ  )rO   r³  rC   r0  rP   rP   rQ   Úvisit_topicE  sb   
þÿÿ
ÿÿzLaTeXTranslator.visit_topicc                 C   sf   d| _ d|d v r| jjr| j d¡ nd|d vr|  |¡ d|d v s+d|d v r1|  ¡  d S d S )NFrH   r–  z\end{abstract}
r5  rG   )rÏ  r\   r4   r)  r9   rÍ  r•  r²  rP   rP   rQ   Údepart_topic}  s   ÿ
ÿzLaTeXTranslator.depart_topicc                 C   s.   | j s	tj| jd< | j d¡ | j d¡ d S )NÚ
transitionzN
%___________________________________________________________________________
z\DUtransition
)r.  r!  r;  r@   r)  r9   r²  rP   rP   rQ   Úvisit_transitionˆ  s   z LaTeXTranslator.visit_transitionc                 C   r£  rJ   rP   r²  rP   rP   rQ   Údepart_transitionŽ  r¥  z!LaTeXTranslator.depart_transitionc                 C   r³  )NÚversionrµ  r²  rP   rP   rQ   Úvisit_version‘  r–  zLaTeXTranslator.visit_versionc                 C   r¬  rJ   r¸  r²  rP   rP   rQ   Údepart_version”  rŸ  zLaTeXTranslator.depart_versionc                 C   s   t d|jj ƒ‚)Nz$visiting unimplemented node type: %s)r<  Ú	__class__rq   r²  rP   rP   rQ   r  —  s   ÿz#LaTeXTranslator.unimplemented_visit)TFrJ   )r5  )àrq   rr   rs   r  r+  r6   r7   r  r.  rÏ  rU  re  rä  rg  rk  rf  rc  r‚   rK   rø  r  r[  rs  r  Úcompilerv  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  r  r  r  r  r  r  r  r  r¶  r¹  r"  r$  r'  r3  r4  r5  r7  rà  rB  rÐ  rÚ  rZ  r[  r\  r]  r^  r`  rb  rc  re  rf  rh  ri  rl  ro  rx  ry  r{  r}  r  r�  r‚  rƒ  r„  r…  r†  r‘  r£  r¤  r©  r®  r¨  r©  rª  r«  r®  r¯  r°  r±  rµ  r¶  r·  r!  r#  rÌ  rÍ  rÓ  rÔ  rÕ  rÖ  r×  rØ  rÚ  rÛ  rÜ  rÝ  rß  rà  rá  râ  rã  rä  rå  ræ  rì  rí  rî  rï  rð  rñ  rò  r÷  rø  rú  rû  rý  rþ  rÿ  r   r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r#  r$  r%  r&  rÇ  rË  rÍ  r,  r-  r,  r9  r:  r<  r=  r?  r@  r  rP   rP   rP   rQ   rL     sÂ   
 g")X
ÿ		
A937Q

"ýD#8rL   )Br  Ú__docformat__r_   r  rc   r‰  Úversion_infor<  r   Úurllibr   Úurllib.requestrG  ÚImportErrorÚdocutils.utils.romanr
   rv   r   r   r   r	   Údocutils.utils.error_reportingr   Údocutils.transformsr   Údocutils.utils.mathr   r   rj  rô  r   Úobjectr‚   r  r  r!  r+  r,  r-  r,  r-  r.  r8  r¼  r½  r  r(  r`   ra   rw   rx   ry   Ú_du_styr%  r'  r#  r>  r$  Ú
block_nameÚdefinitionsrZ   r/  rh  r}  rþ  rL   rP   rP   rP   rQ   Ú<module>   s|   
ÿ
  1ÿ


ôÿ , ~