B
    ²ô`Õú ã               @   sú  d Z dZddlZddlZddlZddlZddlZddlZddl	Zddl
ZyddlZW n& ek
rz   ddlm  mZ Y nX ddlmZ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 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e!_,de!_-de!_.de!_/de!_0de!_1d e!_2d!e!_3d"e!_4d#e!_5d$e!_6d%e!_7d&e!_8d'e!_9d(e!_:d)e!_;d*e!_<d+e!_=d,e!_>G d-d.„ d.eƒZ?G d/d0„ d0eƒZ@G d1d2„ d2eƒZAG d3d4„ d4ejBƒZCdS )5zLaTeX2e document tree Writer.ZreStructuredTexté    N)ÚfrontendÚnodesÚ	languagesÚwritersÚutilsÚio)Ú
SafeString)Ú
writer_aux)Úpick_math_environmentÚunichar2texc            (   @   s  e Zd ZdZdZej ej e	¡¡Z
d ddddg¡ZdZd	d
ddgddifddgddifddgddejdœ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d(d)d*d+gd(dd,œfd-d.gd/d0d1ejd2œfd3d4gd0d5ejd6œfd7d8gd9d$d:œfd;d<gd dejdœfd=d>gd?ejd@gdAœfdBdCgdeifdDe dEgedFdGœfdHdIgdJdejdœfdKdLgdMd$ejd%œfdNdOgd dejdœfdPdQgdRd$ejd%œfdSdTgd dejdœfdUdVgdWd$ejd%œfdXdYgd dejdœfdZd[gdd\ifd]d^gdd/ifd_d`gd
dejdœfdadbgd$dcddœfdedfgd
dejdœfdgdhgd$diddœfdjdkgdldmdGœfdndogdd/ifdpdqgd dejdœfdrdsgdtgdduejedvœfdwdxgdd/ifdydzgdd{ifd|d}gdd
ifd~dgdd
iff#fZd€d iZdZd‚ZdƒZed„ Zd
Zd…d†„ Zd‡dˆ„ Zd‰dŠ„ Zd‹dŒ„ Zd
S )ÚWriter)ÚlatexZlatex2ezdefault.texÚ
z% PDF Standard Fontsz\usepackage{mathptmx} % Timesz\usepackage[scaled=.90]{helvet}z\usepackage{courier})ÚstandardÚbooktabsÚnolinesÚ
borderlesszcolwidths-autozcolwidths-givenzLaTeX-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--documentoptionsZa4paperz5Footnotes 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Úbracketsz<format>Ztrim_footnote_reference_space)Úchoicesr   ÚmetavarÚ	overridesz!Use \cite command for citations. z--use-latex-citationsr   zNUse figure floats for citations (might get mixed with real figures). (default)z--figure-citationsÚuse_latex_citationsÚstore_false)Údestr   r   z{Format for block quote attributions: one of "dash" (em-dash prefix), "parentheses"/"parens", or "none".  Default is "dash".z--attributionÚdashÚparenthesesÚparensÚnone)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-stylesheetzComma-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-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_abstractz<Use LaTeX abstract environment for the document's abstract. z--use-latex-abstractzOColor of any hyperlinks embedded in text (default: "blue", "false" to disable).z--hyperlink-colorZbluez;Additional options to the "hyperref" package (default: "").z--hyperref-optionsz^Enable compound enumerators for nested enumerated lists (e.g. "1.2.a.ii").  Default: disabled.z--compound-enumeratorszNDisable compound enumerators for nested enumerated lists. This is the default.z--no-compound-enumeratorsÚcompound_enumerators)r   r   zŒEnable section ("." subsection ...) prefixes for compound enumerators.  This has no effect without --compound-enumerators.Default: disabled.z --section-prefix-for-enumeratorszHDisable section prefixes for compound enumerators.  This is the default.z#--no-section-prefix-for-enumeratorsÚsection_prefix_for_enumeratorszgSet the separator between section number and enumerator for compound enumerated lists.  Default is "-".z--section-enumerator-separatorú-z<char>ztWhen possible, use the specified environment for literal-blocks. Default is quoting of whitespace and special chars.z--literal-block-envzgWhen 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 "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_depthzlatex2e writer)r   )Ú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© rD   úP/home/dcms/DCMS/lib/python3.7/site-packages/docutils/writers/latex2e/__init__.pyr@   ä   s    zWriter.__init__c             C   s   t j | ¡tjg S )N)r   r   Úget_transformsr	   ZAdmonitions)rC   rD   rD   rE   rF   é   s    
zWriter.get_transformsc             C   s¶   |   | j¡}| j |¡ x | jD ]}t| |t||ƒƒ q W yt| jjjdƒ}W n0 t	k
r~   tt
j | j| jjj¡dƒ}Y nX t t| ¡ dƒ¡}| ¡  |  ¡  | | j¡| _d S )NÚrbzutf-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)rC   ZvisitorÚpartZtemplate_filerO   rD   rD   rE   Ú	translateð   s    zWriter.translatec             C   sd   t j | ¡ xR| jD ]H}t| |ƒ}|| jkrL|r:| d¡ d |¡| j|< qd |¡| j|< qW dS )z9Assemble the `self.parts` dictionary of output fragments.r$   r   N)	r   r   rZ   rJ   rL   Ú
head_partsr0   rS   r\   )rC   r^   ÚlinesrD   rD   rE   rZ     s    


zWriter.assemble_parts)Ú__name__Ú
__module__Ú__qualname__Ú	supportedZdefault_templaterQ   rR   ÚdirnameÚabspathÚ__file__rT   rS   Zdefault_preambleZtable_style_valuesr   Zvalidate_booleanZvalidate_comma_separated_listZsettings_specZsettings_defaultsZconfig_sectionZconfig_section_dependenciesr`   rJ   r]   r@   rF   r_   rZ   rD   rD   rD   rE   r      s*  























r   c            D   @   sæ   e Zd ZdZ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#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d0d3d4d5d6d7d8d9d:d;d<d=d9d:d>d?d@dAdBœCZedCdD„ ee ¡ ƒD ƒƒZdEZdFdFdGœZ	dQdIdJ„Z
dKdL„ ZdMdN„ ZdOdP„ ZdHS )RÚBabelzLanguage specifics for LaTeX.Z	afrikaansÚarabicÚ	bulgarianZbretonÚcatalanÚczechZwelshÚdanishZngermanÚgermanZ	naustrianZaustrianZlowersorbianÚgreekZpolutonikogreekÚenglishZ
australianZcanadianZbritishZ
newzealandÚamericanZ	esperantoÚspanishÚestonianÚbasqueÚfinnishÚfrenchZcanadienZirishZibycusÚgalicianÚhebrewÚcroatianZuppersorbianZmagyarZinterlinguaZbahasaiÚ	icelandicÚitalianÚjapaneseZkazakhÚlatinÚ
lithuanianZlatvianZ	mongolianZbahasamZnorskÚdutchÚnynorskÚpolishZportugesZbrazilÚromanianÚrussianZsaminZserbiancZserbianÚslovakÚsloveneZalbanianÚswedishÚturkishZ	ukrainianZvietnam)CÚafÚarÚbgÚbrÚcaÚcsÚcyÚdaÚdezde-1901zde-ATz
de-AT-1901ZdsbÚelz
el-polytonÚenzen-AUzen-CAzen-GBzen-NZzen-USÚeoÚesÚetÚeuÚfiÚfrzfr-CAÚgaz
grc-ibycusÚglÚheÚhrZhsbÚhuÚiaÚidÚisÚitÚjaÚkkZlaÚltÚlvÚmnÚmsÚnbÚnlÚnnÚnoÚplÚptzpt-BRÚroÚruÚsezsh-Cyrlzsh-LatnÚskÚslÚsqÚsrzsr-LatnÚsvÚtrÚukÚvic             C   s   g | ]\}}|  ¡ |f‘qS rD   )Úlower)Ú.0ÚkÚvrD   rD   rE   ú
<listcomp>k  s    zBabel.<listcomp>z,Language "%s" not supported by LaTeX (babel)z.<>)rx   rs   Nc             C   s   || _ |  |¡| _i | _d S )N)ÚreporterÚlanguage_nameÚlanguageÚotherlanguages)rC   Úlanguage_coder¿   rD   rD   rE   r@   ‡  s    zBabel.__init__c                s  t ˆ j ¡ ƒ}| ˆ jpd¡ dd |¡ gˆ _g }x2d ‡ fdd„|D ƒ¡D ]}||krN| |¡ qNW |r‚ˆ j dd |¡ ¡ d|kr–ˆ j d	¡ d
|kr°ˆ j dddg¡ d|krÊˆ j dddg¡ |d dkrdtˆ j ¡ ƒkrˆ  jdddˆ j g7  _d ˆ j¡S )z7Return the babel call with correct options and settingsrq   z\usepackage[%s]{babel}ú,r$   c                s   g | ]}ˆ j  |d ¡‘qS )r$   )Úactive_charsÚget)r»   Úl)rC   rD   rE   r¾   “  s    z"Babel.__call__.<locals>.<listcomp>z#\AtBeginDocument{\shorthandoff{%s}}rx   z)\deactivatetilden % restore ~ in Galicianrt   z\makeatletterz+  \addto\extrasestonian{\bbl@deactivate{~}}z\makeatotherru   z)  \addto\extrasbasque{\bbl@deactivate{~}}éÿÿÿÿrw   zE% Prevent side-effects if French hyphenation patterns are not loaded:z\frenchbsetup{StandardLayout}z4\AtBeginDocument{\selectlanguage{%s}\noextrasfrench}r   )	ÚsortedrÂ   Úkeysr0   rÁ   rS   ÚsetupÚextendÚlist)rC   r   Z
shorthandsÚcrD   )rC   rE   Ú__call__Œ  s6    zBabel.__call__c          	   C   sT   x2t  |¡D ]$}y
| j| S  tk
r.   Y qX qW | jdk	rP| j | j| ¡ dS )z,Return TeX language name for `language_code`Nr$   )r   Znormalize_language_tagÚlanguage_codesÚKeyErrorr¿   ÚwarningÚwarn_msg)rC   rÃ   ÚtagrD   rD   rE   rÀ   ­  s    


zBabel.language_namec             C   s   | j S )N)rÁ   )rC   rD   rD   rE   Úget_language¸  s    zBabel.get_language)N)rb   rc   rd   Ú__doc__rÐ   ÚdictrÍ   ÚitemsrÓ   rÅ   r@   rÏ   rÀ   rÕ   rD   rD   rD   rE   ri     s˜   
!ri   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Ê   Úsort)rC   rÊ   rD   rD   rE   Ú
sortedkeysÆ  s    zSortableDict.sortedkeysc                s   ‡ fdd„ˆ   ¡ D ƒS )z$Return list of values sorted by keysc                s   g | ]}ˆ | ‘qS rD   rD   )r»   Úkey)rC   rD   rE   r¾   Î  s    z-SortableDict.sortedvalues.<locals>.<listcomp>)rÛ   )rC   rD   )rC   rE   ÚsortedvaluesÌ  s    zSortableDict.sortedvaluesN)rb   rc   rd   rÖ   rÛ   rÝ   rD   rD   rD   rE   rÙ   À  s   rÙ   c               @   s   e Zd ZdZdS )ÚPreambleCmdsz'Building blocks for the latex preamble.N)rb   rc   rd   rÖ   rD   rD   rD   rE   rÞ   Ú  s   rÞ   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}}ab  
% inline markup (custom roles)
% \DUrole{#1}{#2} tries \DUrole#1{#2}
\providecommand*{\DUrole}[2]{%
  \ifcsname DUrole#1\endcsname%
    \csname DUrole#1\endcsname{#2}%
  \else
    % backwards compatibility: try \docutilsrole#1{#2}
    \ifcsname docutilsrole#1\endcsname%
      \csname docutilsrole#1\endcsname{#2}%
    \else%
      #2%
    \fi%
  \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
}c            J   @   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ddddd d!d d"d#d$d%d&d'd(d)d*d+d,œZdd-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAœZdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[dQd\d]d^dQd\d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtd@dudvdwdxdydzd{d|d}d~dd€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)rb   rc   rd   rÖ   ÚordÚallttÚspecialÚunsupported_unicodeÚutf8_supported_unicodeÚtextcompÚpifontrD   rD   rD   rE   rß   »  s  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   sL   || _ || _dddddg| _| j dkr4| j dd¡ | jrH| j dd	¡ d S )
NÚsectionZ
subsectionZsubsubsectionÚ	paragraphZsubparagraph)ZbookZmemoirÚreportZscrbookZscrreprtr   Úchapterr^   )Údocument_classZ
_with_partÚsectionsÚinsert)rC   r  Z	with_partrD   rD   rE   r@   i  s    

zDocumentClass.__init__c             C   s.   |t | jƒkr| j|d  S dt |¡ 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.
        r)   zDUtitle[section%s]N)Úlenr  ÚromanÚtoRoman)rC   ÚlevelrD   rD   rE   r  t  s    zDocumentClass.sectionN)F)rb   rc   rd   rÖ   r@   r  rD   rD   rD   rE   r  f  s   
r  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)rC   Z
translatorZ
latex_typerD   rD   rE   r@     s    zTable.__init__c             C   s"   d| _ g | _g | _i | _d| _d S )NTF)r$  Ú
_col_specsÚcaptionr%  Z_in_head)rC   rD   rD   rE   rM   ›  s
    z
Table.openc             C   s(   d| _ d | _g | _i | _g | _d| _d S )NF)r$  r+  r,  r%  r(  r)  )rC   rD   rD   rE   rY   ¡  s    zTable.closec             C   s   | j S )N)r$  )rC   rD   rD   rE   Úis_open©  s    zTable.is_openc             C   sb   dd„ || D ƒ}y|d | _ W n tk
r:   d| _ Y nX d|krLd|kpZd|koZd|k| _d S )Nc             S   s    g | ]}|d kr|  dd¡‘qS ))r   r   r   r   r   r   )Úreplace)r»   ÚclsrD   rD   rE   r¾   ­  s   z)Table.set_table_style.<locals>.<listcomp>rÈ   r   zcolwidths-autozcolwidths-given)ÚbordersÚ
IndexErrorr)  )rC   Útable_styleÚclassesr0  rD   rD   rE   Úset_table_style¬  s    zTable.set_table_stylec             C   s   | j dkr| jsdS | j S )NÚ	longtablez
longtable*)r#  r,  )rC   rD   rD   rE   Úget_latex_type¹  s    zTable.get_latex_typec             C   s   || j |< d S )N)r%  )rC   ÚattrÚvaluerD   rD   rE   Úset¿  s    z	Table.setc             C   s   || j kr| j | S d S )N)r%  )rC   r7  rD   rD   rE   rÆ   Á  s    

z	Table.getc             C   s   | j dkrdS dS )Nr   ú|r$   )r0  )rC   rD   rD   rE   Úget_vertical_barÆ  s    
zTable.get_vertical_barú
\linewidthc             C   sR   ddddœ}|  |   d¡pd¡}d|  ¡ |f g}| jsH| dd	| ¡ d
 |¡S )NrÇ   rÎ   Úr)ÚleftÚcenterÚrightÚalignr?  z\begin{%s}[%s]r   z\setlength{\DUtablewidth}{%s}r   )rÆ   r6  r)  r  rS   )rC   ÚwidthZ	align_maprA  ZopeningrD   rD   rE   Úget_openingÌ  s    zTable.get_openingc             C   s4   g }| j dkr| d¡ | d|  ¡  ¡ d |¡S )Nr   z\bottomrulez\end{%s}r   )r0  r0   r6  rS   )rC   ÚclosingrD   rD   rE   Úget_closingÖ  s
    

zTable.get_closingc             C   s$   | j  |¡ | j |j d¡¡ d S )NZstub)r+  r0   r(  Ú
attributesrÆ   )rC   ÚnoderD   rD   rE   Úvisit_colspecß  s    zTable.visit_colspecc             C   sà   |   ¡ }dgt| jƒ | _g | _| jr@|d t| jƒ }|| S d}d}x*| jD ] }t|d d ƒ| }||7 }qPW d}|dkrˆ|| }d	}xJ| jD ]@}|t|d d ƒ | }| j |d
 ¡ |d||d
 f 7 }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).
        r   rÇ   éP   g        Úcolwidthr)   gÃõ(\Âí?g      ð?r$   g{®Gázt?z%sp{%.3f\DUtablewidth})r;  r  r+  r'  r&  r)  Úfloatr0   )rC   rG  ÚbarZlatex_table_specrB  Ztotal_widthrJ  ZfactorrD   rD   rE   Úget_colspecsä  s(    zTable.get_colspecsc             C   s*   yd| j | j  S  tk
r$   dS X dS )z4Return columnwidth for current cell (not multicell).z%.2f\DUtablewidthÚ*N)r&  Ú_cell_in_rowr1  )rC   rD   rD   rE   Úget_column_width  s    zTable.get_column_widthc                sH   y.t dd„ ‡ ‡fdd„t|ƒD ƒD ƒƒ}d| S  tk
rB   dS X dS )z)Return sum of columnwidths for multicell.c             S   s   g | ]}|‘qS rD   rD   )r»   rB  rD   rD   rE   r¾     s   z/Table.get_multicolumn_width.<locals>.<listcomp>c                s   g | ]}ˆ j ˆ|  ‘qS rD   )r&  )r»   Úco)rC   ÚstartrD   rE   r¾     s   zp{%.2f\DUtablewidth}rÇ   N)ÚsumÚranger1  )rC   rR  Zlen_Zmc_widthrD   )rC   rR  rE   Ú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$   r)   z\caption{%s}\\
z!\caption[]{%s (... continued)}\\
)r,  rS   r"  Úthead_depth)rC   r,  rD   rD   rE   Úget_caption  s    zTable.get_captionc             C   s   | j dkrd| j ¡ kS dS )Nr5  r)   r   )r#  r"  rV  )rC   rD   rD   rE   Ú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 )Nr)   r   z\hline
r   z	\toprule
)r*  r0  )rC   rD   rD   rE   Úvisit_thead%  s    

zTable.visit_theadc             C   sz   g }| j dkr| d¡ | jdkrhd| j ¡ kr<| d¡ n,| d¡ | dt| jƒ d ¡ | d	¡ |  jd8  _|S )
Nr   z	\midrule
r5  r)   z\endfirsthead
z	\endhead
z\multicolumn{%d}{c}z&{\hfill ... continued on next page} \\z
\endfoot
\endlastfoot
)r0  r0   r#  r"  rV  r  r+  r*  )rC   ÚarD   rD   rE   Údepart_thead-  s    




zTable.depart_theadc             C   s
   d| _ d S )Nr   )rO  )rC   rD   rD   rE   Ú	visit_row?  s    zTable.visit_rowc                sÔ   dg}d ˆ _ x6ttˆ jƒƒD ]$}ˆ j| dkrˆ j|  d8  < qW ˆ jdkrÐ‡ fdd„ttˆ jƒƒD ƒ}t|ƒtˆ jƒkrˆ| d¡ nHd}| ¡  x0y| ¡ }W n   P Y nX |d	||f 7 }q–W | |¡ |S )
Nz \\
r   r)   r   c                s"   g | ]}ˆ j | d kr|d ‘qS )r   r)   )r'  )r»   Úi)rC   rD   rE   r¾   J  s    z$Table.depart_row.<locals>.<listcomp>z\hline
r$   z\cline{%d-%d}
)rO  rT  r  r'  r0  r0   ÚreverseÚpop)rC   Úresr]  ZrowspansZclineZc_startrD   )rC   rE   Ú
depart_rowB  s&    

zTable.depart_rowc             C   s    y|| j |< W n   Y nX d S )N)r'  )rC   Úcellr8  rD   rD   rE   Úset_rowspan[  s    zTable.set_rowspanc             C   s   y
| j | S    dS d S )Nr   )r'  )rC   rb  rD   rD   rE   Úget_rowspana  s    
zTable.get_rowspanc             C   s   | j S )N)rO  )rC   rD   rD   rE   Úget_entry_numberg  s    zTable.get_entry_numberc             C   s   |  j d7  _ d S )Nr)   )rO  )rC   rD   rD   rE   Úvisit_entryj  s    zTable.visit_entryc             C   s    t | jƒ| jkr| j| j S dS )NF)r  r(  rO  )rC   rD   rD   rE   Úis_stub_columnm  s    zTable.is_stub_columnN)r<  )rb   rc   rd   rÖ   r@   rM   rY   r-  r4  r6  r9  rÆ   r;  rC  rE  rH  rM  rP  rU  rW  rX  rY  r[  r\  ra  rc  rd  re  rf  rg  rD   rD   rD   rE   r!    s6   

	#
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+dd8d9„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„ 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ß„ Zdàdá„ Z€dâdã„ Zdä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û„ Zdü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/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dRdSdTœZ¸dUdV„ Z¹dWdX„ ZºdYdZ„ Z»d[d\„ Z¼d]d^„ Z½d_d`„ Z¾dadb„ Z¿dcdd„ ZÀdedf„ ZÁdgdh„ ZÂdidj„ ZÃdkdl„ ZÄdmdn„ ZÅdodp„ ZÆdqdr„ ZÇdsdt„ ZÈdudv„ ZÉdwdx„ ZÊdydz„ ZËd{d|„ ZÌd}d~„ ZÍdd€„ ZÎd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 (   rA   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.
    Fr/   r   c                sT  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rÄt d|j¡\}ˆ _ˆ _}n|jrÐdˆ _ˆ jjrìˆ jj dd¡ˆ _nd ˆ _t  !|j"|j¡ˆ _#||j"|jƒˆ _$ˆ j#j%d	 ˆ _&ˆ jj'g}ˆ j$j(d
krH| )ˆ j$j(¡ d *dd„ |D ƒ¡ˆ _'t+|j,|j-ƒˆ _.ˆ jj/dkr„dˆ _0n*ˆ jj/ 1¡ dkr t2j3ˆ _0ndˆ jj/ ˆ _0|j4ˆ _4dˆ j'ˆ jj,f gˆ _5t6ƒ ˆ _7dˆ j7d< |j8gˆ _8t6ƒ ˆ _9g ˆ _:g ˆ _;g ˆ _<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dkr¦dˆ j ˆ j7d< ˆ jSsˆ jrÆdˆ j ˆ j7d< xHˆ j d¡D ]8}| T¡ }|dkrödˆ j7d< n|dkrÔdˆ j7d< qÔW |j, Ud¡d krPˆ j' Ud!¡d ksFˆ j' Ud"¡d krPd#ˆ j7d$< ‡ fd%d„tV W|¡D ƒˆ _Xˆ jd&kr~dˆ _Ynd'ˆ jˆ jf ˆ _Y|jYr¬ˆ  jYd|jY 7  _Y|jZr¼d(t2_[n”|j\}|d k	rt]|t^ˆ j.j_ƒƒ}d)ˆ j.j_krô|d8 }ˆ j.j_d	 d*kr|d8 }d+| t2_[t`|d,ƒrP|jadkrPd-ˆ j.j_d	 |jad f ˆ j7d,< d S ).NÚfont_encodingr$   rè   z\_z	(\w+)(.*)ÚverbatimrÄ   r)   r   )rq   r$   c             S   s   g | ]}|r|‘qS rD   rD   )r»   Ú_frD   rD   rE   r¾   Ó  s    z,LaTeXTranslator.__init__.<locals>.<listcomp>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)r1   ZT2AZT2BZT2CZT4ZT5z,\DeclareTextSymbolDefault{\textquotedbl}{T1}Z_textquotedblZscrrÈ   ZDIVZBCORz\usepackage{typearea}Ztypeareac                s   g | ]}ˆ   |¡‘qS rD   )Ústylesheet_call)r»   rR   )rC   rD   rE   r¾   C  s   )Ú0ÚfalseÚFalser$   z(colorlinks=true,linkcolor=%s,urlcolor=%sz\setcounter{secnumdepth}{0}r  r^   z\setcounter{secnumdepth}{%d}Úsectnum_startz\setcounter{%s}{%d})br   ÚNodeVisitorr@   rH   r¿   rÒ   ÚwarnÚerrorrN   Úto_latex_encodingÚoutput_encodingÚlatex_encodingr*   r+   r   Ú_use_latex_citationsZreference_labelÚ_reference_labelZhyperlink_colorr-   rL   rh  r.   Úsection_enumerator_separatorr.  Úliteral_block_envÚliteral_block_optionsÚreÚsplitZuse_verbatim_when_possibleZ
use_bibtexÚbibtexr   rÕ   rÃ   Úlanguage_moduleÚbabelZauthor_separatorsÚauthor_separatorZdocumentoptionsrÁ   r0   rS   r  ZdocumentclassZuse_part_sectionÚd_classZgraphicx_optionÚgraphicx_packagerº   rÞ   Úgraphicx_autoÚdocutils_footnotesr3   rÙ   r4   r5   r6   r7   r9   r:   r8   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Úfindr   Zget_stylesheet_listr&   Úhyperref_optionsZsectnum_xformÚsecnumdepthr2   Úminr  r  Úhasattrrs  )rC   rH   Zbabel_classrN   r#   Z	d_optionsÚencr›  rD   )rC   rE   r@   ¤  sÚ    













zLaTeXTranslator.__init__c       	   
   C   sò   t j |¡\}}|dk}| jjrÀ|r,|d }y$tj|dd ¡ }| jj 	|¡ W nN t
k
rž } z0d|t|jƒf }| jj |¡ d| dd¡ S d	}~X Y nX |r´d d
|dg¡}d||f S |rÎ|}d}nd}| jjrêt | jj|¡}|| S )z8Return code to reference or embed stylesheet file `path`)z.styr$   z.styzutf-8)Úsource_pathÚencodingz#Cannot embed stylesheet '%s':
  %s.z% r   z
% Nz\makeatletterz\makeatotherz%% embedded stylesheet: %s
%sz\usepackage{%s}z
\input{%s})rQ   rR   ÚsplitextrN   r'   r   Z	FileInputrX   Zrecord_dependenciesÚaddrP   r   ÚstrerrorrH   r¿   rv  r.  rS   r%   r   Úrelative_pathZ_destination)	rC   rR   ÚbaseÚextÚ
is_packageÚcontentÚerrÚmsgÚcmdrD   rD   rE   ro  ~  s4    zLaTeXTranslator.stylesheet_callc             C   s\   ddddddddd	d
dddddœ}|  ¡ }||k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Úlatin9ZmaccyrÚcp1251zkoi8-rzkoi8-uÚcp1250Úcp1252rl  )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-1251zkoi8-rzkoi8-uzwindows-1250zwindows-1252zus-asciirè   r$   r/   ú:r   )rº   r.  r€  )rC   Zdocutils_encodingr·   r   rD   rD   rE   rw     s&    z!LaTeXTranslator.to_latex_encodingc             C   s   | j j| S )N)r‚  Úlabels)rC   Zdocutil_labelrD   rD   rE   Úlanguage_labelÉ  s    zLaTeXTranslator.language_labelc       
      C   sP  | j r
|S tj ¡ }| js&| tj¡ | jr<| js<|tdƒ= | jdkrœ| j	sœ| j
rxd|tdƒ< | j| jd< d|tdƒ< n$d|tdƒ< d	|td
ƒ< d|tdƒ< | jrÂd|tdƒ< d| jj |tdƒ< | j	sˆ| j d¡sú| tj¡ | tj¡ | tj¡ | tj¡ x€|D ]x}t|ƒ}|tjkr2tj| jd< nP|tjkrJd| jd< n8| jdkr|tjkrd|tj| f | jdt|ƒ < qW | |¡}| j	sÚd}| j
r®|d7 }x*|d D ]}| || |d | ¡}q¸W | jr0| d¡}x8t|dd… ƒD ]$\}}	|	 ¡ sþ||  d7  < qþW d |¡}| j
rL| jsL| 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è   )rn  r$   z\underline{~}Úgraphicxz\reflectbox{/}rà   z
\textbar{}r:  z\textless{}ú<z\textgreater{}ú>rç   ú ú	Úutf8r  z\usepackage{pifont}r  z"\DeclareUnicodeCharacter{%04X}{%s}rm  r/   z,`'"<>é   z{}r   NrÈ   z\\
z  z ~)ri  rß   r  ÚcopyÚupdater  Úinside_citation_reference_labelr  rh  r—  Úliteralr†  r4   Úinsert_non_breaking_blanksrN   Z	tab_widthry  Ú
startswithr  r  r  r  rÞ   rW   r_   r.  Úinsert_newliner€  Ú	enumerateÚlstriprS   )
rC   ÚtextÚtableÚchÚcpZseparate_charsÚcharra   r]  ÚlinerD   rD   rE   ÚencodeÌ  sd    


$



zLaTeXTranslator.encodez[
	]c             C   s   |   | d|¡¡S )z1Cleanse, encode, and return attribute value text.r½  )rÐ  Úsub)rC   rÊ  Ú
whitespacerD   rD   rE   Ú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   ZTextElement)rC   rG  rD   rD   rE   Ú	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`z%
c             S   s   g | ]}d | ‘qS )z"\raisebox{1em}{\hypertarget{%s}{}}rD   )r»   r    rD   rD   rE   r¾   7  s   z7LaTeXTranslator.append_hypertargets.<locals>.<listcomp>ÚidsN)r•  r0   rS   )rC   rG  rD   rD   rE   Úappend_hypertargets3  s    z#LaTeXTranslator.append_hypertargetsTc             C   s.   dd„ |  dg ¡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.
        c             S   s   g | ]}d | ‘qS )z
\label{%s}rD   )r»   r    rD   rD   rE   r¾   ?  s    z1LaTeXTranslator.ids_to_labels.<locals>.<listcomp>r×  r   z\phantomsection)rÆ   r  )rC   rG  Ú
set_anchorr¸  rD   rD   rE   Úids_to_labels:  s    zLaTeXTranslator.ids_to_labelsc             C   sD   dd„ |d D ƒ}|r@|d   dd¡|d< dd„ |d D ƒ|d< d	S )
z8Convert ``align-*`` class arguments into alignment args.c             S   s   g | ]}|  d ¡r|‘qS )zalign-)rÆ  )r»   r/  rD   rD   rE   r¾   G  s    z:LaTeXTranslator.set_align_from_classes.<locals>.<listcomp>r3  rÈ   zalign-r$   rA  c             S   s   g | ]}|  d ¡s|‘qS )zalign-)rÆ  )r»   r/  rD   rD   rE   r¾   J  s    N)r.  )rC   rG  rA  rD   rD   rE   Úset_align_from_classesD  s    z&LaTeXTranslator.set_align_from_classesNc             C   sP   |  d|¡}|dkr"| j d¡ n*|dkr8| j d¡ n|dkrL| j d¡ d S )NrA  r>  z\raggedright
r?  z\centering
r@  z\raggedleft
)rÆ   r•  r0   )rC   rG  r   rA  rD   rD   rE   Úinsert_align_declarationM  s    z(LaTeXTranslator.insert_align_declarationc             C   sŒ   t |jtjƒs| j d¡ xl|d D ]`}| d¡rh| j |dd… ¡}|r„d| jj	|< | j d| ¡ q$t
j| jd< | j d	| ¡ q$W dS )
z6Open a group and insert declarations for class values.r   r3  z	language-é	   NTz\begin{selectlanguage}{%s}
ÚDUclassz\begin{DUclass}{%s}
)rÔ  rÕ  r   Úcompoundr•  r0   rÆ  rƒ  rÀ   rÂ   rÞ   Úduclassr6   )rC   rG  r/  rÁ   rD   rD   rE   Úduclass_openV  s    
zLaTeXTranslator.duclass_openc             C   sn   xht |d ƒD ]X}| d¡rN| j |dd… ¡}|rfd| jj|< | j d¡ qtj| j	d< | j d¡ qW dS )	z$Close a group of class declarations.r3  z	language-rÝ  NTz\end{selectlanguage}
rÞ  z\end{DUclass}
)
ÚreversedrÆ  rƒ  rÀ   rÂ   r•  r0   rÞ   rà  r6   )rC   rG  r/  rÁ   rD   rD   rE   Úduclass_closed  s    
zLaTeXTranslator.duclass_closec             C   s   | j  | j¡ || _d S )N)r–  r0   r•  )rC   Znew_outrD   rD   rE   Úpush_output_collectorp  s    z%LaTeXTranslator.push_output_collectorc             C   s   | j  ¡ | _d S )N)r–  r_  r•  )rC   rD   rD   rE   Úpop_output_collectort  s    z$LaTeXTranslator.pop_output_collectorc             C   s   | j  |  | ¡ ¡¡ d S )N)r•  r0   rÐ  Úastext)rC   rG  rD   rD   rE   Ú
visit_Textz  s    zLaTeXTranslator.visit_Textc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_Text}  s    zLaTeXTranslator.depart_Textc             C   s   |d   dd¡ |  |¡ d S )Nr3  r   Zabbreviation)r  Úvisit_inline)rC   rG  rD   rD   rE   Úvisit_abbreviation€  s    z"LaTeXTranslator.visit_abbreviationc             C   s   |   |¡ d S )N)Údepart_inline)rC   rG  rD   rD   rE   Údepart_abbreviation„  s    z#LaTeXTranslator.depart_abbreviationc             C   s   |d   dd¡ |  |¡ d S )Nr3  r   Zacronym)r  ré  )rC   rG  rD   rD   rE   Úvisit_acronym‡  s    zLaTeXTranslator.visit_acronymc             C   s   |   |¡ d S )N)rë  )rC   rG  rD   rD   rE   Údepart_acronym‹  s    zLaTeXTranslator.depart_acronymc             C   s   |   |d¡ d S )NÚaddress)Úvisit_docinfo_item)rC   rG  rD   rD   rE   Úvisit_addressŽ  s    zLaTeXTranslator.visit_addressc             C   s   |   |¡ d S )N)Údepart_docinfo_item)rC   rG  rD   rD   rE   Údepart_address‘  s    zLaTeXTranslator.depart_addressc             C   sX   t j| jd< d|d kr$t j| jd< dd„ |d D ƒ|d< | j dd |d ¡ ¡ d S )NÚ
admonitionrv  r3  c             S   s   g | ]}|d kr|‘qS )rô  rD   )r»   r/  rD   rD   rE   r¾   ™  s    z4LaTeXTranslator.visit_admonition.<locals>.<listcomp>z
\DUadmonition[%s]{rÄ   )rÞ   rô  r6   rv  r•  r0   rS   )rC   rG  rD   rD   rE   Úvisit_admonition”  s
    z LaTeXTranslator.visit_admonitionc             C   s   | j  d¡ d S )Nz}
)r•  r0   )rC   rG  rD   rD   rE   Údepart_admonition  s    z!LaTeXTranslator.depart_admonitionc             C   s&   | j  |  | ¡ ¡¡ |  |d¡ d S )NÚauthor)r  r0   rÓ  ræ  rð  )rC   rG  rD   rD   rE   Úvisit_author   s    zLaTeXTranslator.visit_authorc             C   s   |   |¡ d S )N)rò  )rC   rG  rD   rD   rE   Údepart_author¤  s    zLaTeXTranslator.depart_authorc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Úvisit_authors§  s    zLaTeXTranslator.visit_authorsc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_authors«  s    zLaTeXTranslator.depart_authorsc             C   s   |   |¡ | j d¡ d S )Nz\begin{quote})rá  r•  r0   )rC   rG  rD   rD   rE   Úvisit_block_quote®  s    
z!LaTeXTranslator.visit_block_quotec             C   s   | j  d¡ |  |¡ d S )Nz\end{quote}
)r•  r0   rã  )rC   rG  rD   rD   rE   Údepart_block_quote²  s    z"LaTeXTranslator.depart_block_quotec             C   s.   |   |¡ | jr| j d¡ n| j d¡ d S )Nz\begin{list}{}{}z\begin{itemize})rá  Úis_toc_listr•  r0   )rC   rG  rD   rD   rE   Úvisit_bullet_list¶  s    
z!LaTeXTranslator.visit_bullet_listc             C   s.   | j r| j d¡ n| j d¡ |  |¡ d S )Nz\end{list}
z\end{itemize}
)rþ  r•  r0   rã  )rC   rG  rD   rD   rE   Údepart_bullet_list½  s    z"LaTeXTranslator.depart_bullet_listc             C   s"   | j  d¡ |d r|  |¡ d S )Nz\textsuperscript{r3  )r•  r0   ré  )rC   rG  rD   rD   rE   Úvisit_superscriptÄ  s    z!LaTeXTranslator.visit_superscriptc             C   s"   |d r|   |¡ | j d¡ d S )Nr3  râ   )rë  r•  r0   )rC   rG  rD   rD   rE   Údepart_superscriptÉ  s    
z"LaTeXTranslator.depart_superscriptc             C   s.   t j| jd< | j d¡ |d r*|  |¡ d S )NÚtextsubscriptz\textsubscript{r3  )rÞ   r  r6   r•  r0   ré  )rC   rG  rD   rD   rE   Úvisit_subscriptÎ  s    zLaTeXTranslator.visit_subscriptc             C   s"   |d r|   |¡ | j d¡ d S )Nr3  râ   )rë  r•  r0   )rC   rG  rD   rD   rE   Údepart_subscriptÔ  s    
z LaTeXTranslator.depart_subscriptc             C   s   | j  d¡ d S )Nz

\caption{)r•  r0   )rC   rG  rD   rD   rE   Úvisit_captionÙ  s    zLaTeXTranslator.visit_captionc             C   s   | j  d¡ d S )Nz}
)r•  r0   )rC   rG  rD   rD   rE   Údepart_captionÜ  s    zLaTeXTranslator.depart_captionc             C   s.   t j| jd< | j d¡ |d r*|  |¡ d S )NÚtitlereferencez\DUroletitlereference{r3  )rÞ   r  r6   r•  r0   ré  )rC   rG  rD   rD   rE   Úvisit_title_referenceß  s    z%LaTeXTranslator.visit_title_referencec             C   s"   |d r|   |¡ | j d¡ d S )Nr3  râ   )rë  r•  r0   )rC   rG  rD   rD   rE   Údepart_title_referenceå  s    
z&LaTeXTranslator.depart_title_referencec             C   s,   | j r|  g ¡ n| j d¡ |  |¡ d S )Nz\begin{figure}[b])rz  rä  r•  r0   rØ  )rC   rG  rD   rD   rE   Úvisit_citationê  s    zLaTeXTranslator.visit_citationc             C   sN   | j r>| jd }d | jdd … ¡}| j ||g¡ |  ¡  n| j d¡ d S )Nr   r$   r)   z\end{figure}
)rz  r•  rS   r’  r0   rå  )rC   rG  ÚlabelrÊ  rD   rD   rE   Údepart_citationô  s    

zLaTeXTranslator.depart_citationc             C   s‚   | j r@| js | j d¡ d| _q~| jd dks6tdƒ‚| jd= n>d}d|krV|d }nd|krn| jj|d  }| j d	| ¡ d S )
Nz\cite{r)   rÈ   )r½  r   z2unexpected non-whitespace while in reference labelr$   ÚrefidÚrefnamez\hyperlink{%s}{[)rz  rÃ  r•  r0   r?   ÚAssertionErrorrH   Únameids)rC   rG  ÚhrefrD   rD   rE   Úvisit_citation_referenceý  s    

z(LaTeXTranslator.visit_citation_referencec             C   s   | j r€d}|jdddd}t|ƒdkrZ|d }t|tjƒrZ| ¡ dkrZ|d j|jkrZd}|rl| j 	d¡ qŒ| j 	d¡ d| _
n| j 	d	¡ d S )
NFT)ZdescendZsiblingsZinclude_selfr)   r   )r½  r   rÄ   râ   z]})rz  Ztraverser  rÔ  r   ÚTextræ  Ú	__class__r•  r0   rÃ  )rC   rG  Zfollowup_citationZnext_siblingsÚnextrD   rD   rE   Údepart_citation_reference  s    z)LaTeXTranslator.depart_citation_referencec             C   s   | j  d¡ d S )Nz	(\textbf{)r•  r0   )rC   rG  rD   rD   rE   Úvisit_classifier"  s    z LaTeXTranslator.visit_classifierc             C   s   | j  d¡ d S )Nz}))r•  r0   )rC   rG  rD   rD   rE   Údepart_classifier%  s    z!LaTeXTranslator.depart_classifierc             C   s   | j  |¡ d S )N)r”  rH  )rC   rG  rD   rD   rE   rH  (  s    zLaTeXTranslator.visit_colspecc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_colspec+  s    zLaTeXTranslator.depart_colspecc             C   s@   t |jtjƒs| j d¡ | j d| ¡  dd¡ ¡ tj‚d S )Nr   z%% %s
z
% )	rÔ  rÕ  r   rß  r•  r0   ræ  r.  ÚSkipNode)rC   rG  rD   rD   rE   Úvisit_comment.  s    zLaTeXTranslator.visit_commentc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_comment5  s    zLaTeXTranslator.depart_commentc             C   s8   t |jtjƒr| j d¡ |d  dd¡ |  |¡ d S )Nr   r3  r   rß  )rÔ  rÕ  r   rß  r•  r0   r  rá  )rC   rG  rD   rD   rE   Úvisit_compound8  s    zLaTeXTranslator.visit_compoundc             C   s   |   |¡ d S )N)rã  )rC   rG  rD   rD   rE   Údepart_compound>  s    zLaTeXTranslator.depart_compoundc             C   s   |   |d¡ d S )NÚcontact)rð  )rC   rG  rD   rD   rE   Úvisit_contactA  s    zLaTeXTranslator.visit_contactc             C   s   |   |¡ d S )N)rò  )rC   rG  rD   rD   rE   Údepart_contactD  s    zLaTeXTranslator.depart_contactc             C   s   |   |¡ d S )N)rá  )rC   rG  rD   rD   rE   Úvisit_containerG  s    zLaTeXTranslator.visit_containerc             C   s   |   |¡ d S )N)rã  )rC   rG  rD   rD   rE   Údepart_containerJ  s    z LaTeXTranslator.depart_containerc             C   s   |   |d¡ d S )NÚ	copyright)rð  )rC   rG  rD   rD   rE   Úvisit_copyrightM  s    zLaTeXTranslator.visit_copyrightc             C   s   |   |¡ d S )N)rò  )rC   rG  rD   rD   rE   Údepart_copyrightP  s    z LaTeXTranslator.depart_copyrightc             C   s   |   |d¡ d S )Nr  )rð  )rC   rG  rD   rD   rE   Ú
visit_dateS  s    zLaTeXTranslator.visit_datec             C   s   |   |¡ d S )N)rò  )rC   rG  rD   rD   rE   Údepart_dateV  s    zLaTeXTranslator.depart_datec             C   s   d S )NrD   )rC   rG  rD   rD   rE   Úvisit_decorationY  s    z LaTeXTranslator.visit_decorationc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_decoration]  s    z!LaTeXTranslator.depart_decorationc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Úvisit_definition`  s    z LaTeXTranslator.visit_definitionc             C   s   | j  d¡ d S )Nr   )r•  r0   )rC   rG  rD   rD   rE   Údepart_definitionc  s    z!LaTeXTranslator.depart_definitionc             C   s   |   |¡ | j d¡ d S )Nz\begin{description}
)rá  r•  r0   )rC   rG  rD   rD   rE   Úvisit_definition_listf  s    
z%LaTeXTranslator.visit_definition_listc             C   s   | j  d¡ |  |¡ d S )Nz\end{description}
)r•  r0   rã  )rC   rG  rD   rD   rE   Údepart_definition_listj  s    z&LaTeXTranslator.depart_definition_listc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Úvisit_definition_list_itemn  s    z*LaTeXTranslator.visit_definition_list_itemc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_definition_list_itemq  s    z+LaTeXTranslator.depart_definition_list_itemc             C   s   | j  d¡ d S )Nr½  )r•  r0   )rC   rG  rD   rD   rE   Úvisit_descriptiont  s    z!LaTeXTranslator.visit_descriptionc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_descriptionw  s    z"LaTeXTranslator.depart_descriptionc             C   s   |   | j¡ d S )N)rä  r<   )rC   rG  rD   rD   rE   Úvisit_docinfoz  s    zLaTeXTranslator.visit_docinfoc             C   sN   |   ¡  | jrJd| jd< tj| jd< tj| jd< | j dd¡ | j d¡ d S )Nz\usepackage{tabularx}ZtabularxÚ_providelengthr<   r   z@
% Docinfo
\begin{center}
\begin{tabularx}{\DUdocinfowidth}{lX}
z\end{tabularx}
\end{center}
)rå  r<   r4   rÞ   Úprovidelengthr6   r  r0   )rC   rG  rD   rD   rE   Údepart_docinfo}  s    
zLaTeXTranslator.depart_docinfoc             C   sä   | j r–|dkrr|dks| js(| j g ¡ |dkrLd| _|  | ¡ ¡}d| _n|  | ¡ ¡}| jd  |¡ tj‚n$|dkr–| j	 |  | ¡ ¡¡ tj‚| j
 d|  |¡ ¡ |dkrÔd| _| j
 d	¡ | j d
¡ n| j d¡ d S )N)r÷  Úorganizationr   rï  r÷  rï  TFrÈ   r  z\textbf{%s}: &
	z{\raggedright
z } \\
z \\
)r+   rŒ  r0   rÇ  rÐ  ræ  rÓ  r   r  r  r•  r¹  r‰  )rC   rG  ÚnamerÊ  rD   rD   rE   rð  Œ  s(    z"LaTeXTranslator.visit_docinfo_itemc             C   s   | j  | j ¡ ¡ d| _d S )NF)r•  r0   r‰  r_  rÇ  )rC   rG  rD   rD   rE   rò  §  s    z#LaTeXTranslator.depart_docinfo_itemc             C   s   |   |¡ d S )N)Úvisit_literal_block)rC   rG  rD   rD   rE   Úvisit_doctest_block¬  s    z#LaTeXTranslator.visit_doctest_blockc             C   s   |   |¡ d S )N)Údepart_literal_block)rC   rG  rD   rD   rE   Údepart_doctest_block¯  s    z$LaTeXTranslator.depart_doctest_blockc             C   s:   | j st|ƒr6t|d tjƒr6|  j| j|dd7  _d S )Nr   F)rÙ  )r+   r  rÔ  r   r9   rŠ  rÚ  )rC   rG  rD   rD   rE   Úvisit_document²  s    zLaTeXTranslator.visit_documentc             C   sT  | j js| j jdkr"|   ¡ | jd< | j ¡ | _| j ¡ | _| j tj	| j
 ¡ | jrr| j | j¡}| j d| ¡ | jr”|  jdg| j dg 7  _| js°| jrR| js°| jrRd | j¡g}| jrÎ|| j7 }| jrò|ddd | j¡ g| j 7 }| j d	d
 |¡ ¡ dd„ | jD ƒ}| j dd |¡ ¡ | j dd | j¡ ¡ | j d¡ | jr0t| jƒdkr0| jsd}x.| jD ]$}t|ƒt|d ƒk r~|d }q~W | j d| ¡ x>| jD ]4}|d  dd¡}| j d|d ||d f ¡ q¾W | j d¡ n,| j d| jd  ¡ | j d| jd  ¡ d| jkrP| jsP| j d¡ d S )N)r$   rq   rƒ  z  pdfauthor={%s}z\hypersetup{râ   r$   z\\ % subtitlez\DUdocumentsubtitle{%s}z
\title{%s}z%
  c             S   s   g | ]}d   |¡‘qS )z\\
)rS   )r»   Zauthor_entryrD   rD   rE   r¾   Ø  s   z3LaTeXTranslator.depart_document.<locals>.<listcomp>z\author{%s}z \and
z	\date{%s}z, z\maketitle
r   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Á   r4   rÝ   r6   r7   r0   rÞ   Úlinkingrš  r  r„  rS   rŽ  r9   r+   rŒ  r  rŠ  r:   r‹  r8   r;   rz  r  r’  r  r•  r.  Úhas_latex_toc)rC   rG  Zauthorsr9   Zwidest_labelZbiZcite_keyrD   rD   rE   Údepart_document¸  sZ    


zLaTeXTranslator.depart_documentc             C   s"   | j  d¡ |d r|  |¡ d S )Nz\emph{r3  )r•  r0   ré  )rC   rG  rD   rD   rE   Úvisit_emphasisù  s    zLaTeXTranslator.visit_emphasisc             C   s"   |d r|   |¡ | j d¡ d S )Nr3  râ   )rë  r•  r0   )rC   rG  rD   rD   rE   Údepart_emphasisþ  s    
zLaTeXTranslator.depart_emphasisc             C   s2   x,| j  | j  ¡ ¡r,| j d¡ | j  ¡  qW d S )Nz & )r”  rd  re  r•  r0   rf  )rC   rD   rD   rE   Ú(insert_additional_table_colum_delimiters  s    z8LaTeXTranslator.insert_additional_table_colum_delimitersc          	   C   s   | j  ¡ dkr|  ¡  n| j d¡ d|kr<d|kr<tdƒ‚d|kr–d| jd< |d d }| j  | j  ¡ |¡ | j d	|| j  ¡ f ¡ | j	 d
¡ n|d|kr| j  ¡ dkrº| j  
¡ }nd}|d d }| j d||| j  | j  ¡ |¡| j  
¡ f ¡ | j	 d
¡ n| j	 d¡ t|ƒrTt|jjtjƒs:| j  ¡ rT| j d¡ | j	 d
¡ n| j	 d¡ | j js’| jd  d¡r’| ¡ r’| j d¡ | j  ¡  d S )Nr   z & ZmorerowsZmorecolszKCells that span multiple rows *and* columns currently not supported, sorry.z\usepackage{multirow}Zmultirowr)   z\multirow{%d}{%s}{râ   r$   z\multicolumn{%d}{%s%s%s}{z\textbf{rÈ   rá   rå   )r”  re  rE  r•  r0   ÚNotImplementedErrorr4   rc  rP  r‰  r;  rU  r  rÔ  rÕ  r   Útheadrg  r)  Úendswithræ  rf  )rC   rG  ZmrowsZbar1ZmcolsrD   rD   rE   rf    sH    




zLaTeXTranslator.visit_entryc             C   s0   | j  | j ¡ ¡ | j  | j ¡ ¡ |  ¡  d S )N)r•  r0   r‰  r_  rE  )rC   rG  rD   rD   rE   Údepart_entryD  s    zLaTeXTranslator.depart_entryc             C   s   | j  ¡  d S )N)r”  r\  )rC   rG  rD   rD   rE   r\  J  s    zLaTeXTranslator.visit_rowc             C   s   | j  | j ¡ ¡ d S )N)r•  rÌ   r”  ra  )rC   rG  rD   rD   rE   ra  M  s    zLaTeXTranslator.depart_rowc       
      C   sŒ  dddddddœ}dd	d
dg}d}| j rt| jr`| jr`| js`d dd„ | jd | j… D ƒ¡| j }| jrt|| 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rb| j d||	f ¡ n:d| | j|< | j d¡ | j d|	 ¡ | j d| ¡ d|krˆ| j d||d d f ¡ d S )Nr$   rj   ÚalphÚAlphr  ZRoman)r$   rj   Z
loweralphaZ
upperalphaZ
lowerromanZ
upperroman)r$   rj   r(   )ú(rJ  ú))r$   r  r(   )r$   rK  r(   r(   c             S   s   g | ]}t |ƒ‘qS rD   )rW   )r»   ÚnrD   rD   rE   r¾   b  s    z9LaTeXTranslator.visit_enumerated_list.<locals>.<listcomp>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}}rR  z
\setcounter{%s}{%d})r-   r.   Úsection_levelr‘  rS   r  r|  rÆ   r  r  r  rº   r0   rá  r•  r6   )
rC   rG  Útypesr¸  rO  rP  rQ  Zenumeration_levelZcounter_namer  rD   rD   rE   Úvisit_enumerated_listP  sP    



z%LaTeXTranslator.visit_enumerated_listc             C   s@   t | jƒdkr| j d¡ n| j d¡ |  |¡ | j ¡  d S )NrS  z\end{enumerate}
z\end{list}
)r  r‘  r•  r0   rã  r_  )rC   rG  rD   rD   rE   Údepart_enumerated_listƒ  s
    
z&LaTeXTranslator.depart_enumerated_listc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Úvisit_field‹  s    zLaTeXTranslator.visit_fieldc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_field  s    zLaTeXTranslator.depart_fieldc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Úvisit_field_body“  s    z LaTeXTranslator.visit_field_bodyc             C   s   | j | jkr| j  d¡ d S )Nz\\
)r•  r<   r0   )rC   rG  rD   rD   rE   Údepart_field_body–  s    z!LaTeXTranslator.depart_field_bodyc             C   s2   |   |¡ | j| jk	r.tj| jd< | j d¡ d S )NÚ	fieldlistz\begin{DUfieldlist})rá  r•  r<   rÞ   r\  r6   r0   )rC   rG  rD   rD   rE   Úvisit_field_listš  s    
z LaTeXTranslator.visit_field_listc             C   s&   | j | jk	r| j  d¡ |  |¡ d S )Nz\end{DUfieldlist}
)r•  r<   r0   rã  )rC   rG  rD   rD   rE   Údepart_field_list   s    z!LaTeXTranslator.depart_field_listc             C   s*   | j | jkr| j  d¡ n| j  d¡ d S )Nz\textbf{z
\item[{)r•  r<   r0   )rC   rG  rD   rD   rE   Úvisit_field_name¥  s    z LaTeXTranslator.visit_field_namec             C   s*   | j | jkr| j  d¡ n| j  d¡ d S )Nz}: &z:}])r•  r<   r0   )rC   rG  rD   rD   rE   Údepart_field_name­  s    z!LaTeXTranslator.depart_field_namec             C   sr   t j| jd< |  |¡ |j dd¡}|dkr>| j d| ¡ n| j d¡ | d¡rn|  j|  |¡dg 7  _d S )NÚfloat_settingsrA  r?  z\begin{figure} %% align = "%s"
z\begin{figure}
r×  r   )	rÞ   ra  r4   rá  rF  rÆ   r•  r0   rÚ  )rC   rG  Ú	alignmentrD   rD   rE   Úvisit_figure³  s    

zLaTeXTranslator.visit_figurec             C   s   | j  d¡ |  |¡ d S )Nz\end{figure}
)r•  r0   rã  )rC   rG  rD   rD   rE   Údepart_figureÃ  s    zLaTeXTranslator.depart_figurec             C   s   |   g ¡ | j d¡ d S )Nz\newcommand{\DUfooter}{)rä  r•  r0   )rC   rG  rD   rD   rE   Úvisit_footerÇ  s    
zLaTeXTranslator.visit_footerc             C   s*   | j  d¡ d | j ¡| jd< |  ¡  d S )Nrâ   r$   z~footer)r•  r0   rS   r4   rå  )rC   rG  rD   rD   rE   Údepart_footerË  s    zLaTeXTranslator.depart_footerc             C   sØ   y|d d }W n  t k
r0   |d d }Y nX | jrÔtj| jd< |d  ¡ }| jjdkrdd| }| j 	d|d d ||  
|¡f ¡ |d |d kr¬|  j|  |¡7  _|d	d … rÔt|d	 tjƒrÔ| j 	d
¡ d S )NÚbackrefsr   r×  Ú	footnotesr   z[%s]z%%
\DUfootnotetext{%s}{%s}{%s}{Únamesr)   rå   )r1  rˆ  rÞ   rh  r6   ræ  rN   Úfootnote_referencesr•  r0   rÐ  rÚ  rÔ  r   r  )rC   rG  ZbackrefÚnumrD   rD   rE   Úvisit_footnoteÐ  s    zLaTeXTranslator.visit_footnotec             C   s   | j  d¡ d S )Nz}
)r•  r0   )rC   rG  rD   rD   rE   Údepart_footnoteã  s    zLaTeXTranslator.depart_footnotec             C   sž   d}d|kr|d }nd|kr.| j j|d  }| jj}|dkrf|  |¡ | j d| ¡ | j d¡ n4tj	| j
d< | j d|d	 d
 |f ¡ | j d¡ d S )Nr$   r  r  r   z\hyperlink{%s}{[z]}rh  z\DUfootnotemark{%s}{%s}{r×  r   râ   )rH   r  rN   rj  rØ  r•  r0   r‰  rÞ   rh  r6   )rC   rG  r  ÚformatrD   rD   rE   Úvisit_footnote_referenceæ  s    

z(LaTeXTranslator.visit_footnote_referencec             C   s   | j  | j ¡ ¡ d S )N)r•  r0   r‰  r_  )rC   rG  rD   rD   rE   Údepart_footnote_reference	  s    z)LaTeXTranslator.depart_footnote_referencec             C   s>   t |jtjƒrtj‚n$t |jtjƒs(t‚| js:| j 	|¡ d S )N)
rÔ  rÕ  r   Zfootnoter  Zcitationr  rz  r•  r0   )rC   rG  Zbracketr   rD   rD   rE   Úlabel_delim	  s
    zLaTeXTranslator.label_delimc             C   s   |   |dd¡ dS )z9footnote or citation label: in brackets or as superscriptrë   z\textsuperscript{N)rq  )rC   rG  rD   rD   rE   Úvisit_label	  s    zLaTeXTranslator.visit_labelc             C   s   |   |dd¡ d S )Nrì   râ   )rq  )rC   rG  rD   rD   rE   Údepart_label	  s    zLaTeXTranslator.depart_labelc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Úvisit_generated	  s    zLaTeXTranslator.visit_generatedc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_generated	  s    z LaTeXTranslator.depart_generatedc             C   s   |   g ¡ | j d¡ d S )Nz\newcommand{\DUheader}{)rä  r•  r0   )rC   rG  rD   rD   rE   Úvisit_header	  s    
zLaTeXTranslator.visit_headerc             C   s*   | j  d¡ d | j ¡| jd< |  ¡  d S )Nrâ   r$   z~header)r•  r0   rS   r4   rå  )rC   rG  rD   rD   rE   Údepart_header	  s    zLaTeXTranslator.depart_headerc             C   s˜   |dk	rt j d¡ t d|¡}|s(|S | ¡ dd… \}}|dkrNd| }nF|dkrhdt|ƒd	  }n,| jr”|d
kr”t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*)rÀ  )r$   r®   z%sbprå   z%.3f\linewidthg      Y@Zpxr5  z$
\DUprovidelength{\pdfpxdimen}{1bp}
z%s\pdfpxdimen)ÚsysÚstderrÚwriter  ÚmatchÚgroupsrK  r—  rÞ   r6  r6   )rC   Z
length_strZpxunitr{  r8  ÚunitrD   rD   rE   Úto_latex_length$	  s    

zLaTeXTranslator.to_latex_lengthc       
      C   s¼  | j | jd< |j}tj |d ¡ dd¡}d|krRt|jt	j
ƒrHd|d< |  |¡ g }g }g }ddd	d
dddœ}d|krºy,||d  }| |d ¡ | |d ¡ W n tk
r¸   Y nX d|krÚ| d|  |d ¡ ¡ d|krø| d|d d  ¡ d|kr| d|  |d ¡ ¡ |  |¡sFt|jt	j
t	jfƒsF| d¡ |  |¡slt|jt	j
ƒsl| d¡ | ¡  | j |¡ d}	|r˜dd |¡ }	| j d|	|f ¡ | j |¡ d S )Nrº  Úurirà   ú/rA  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â   )ZbottomZmiddleÚtopr?  r>  r@  r   r)   Úheightz	height=%sZscalezscale=%fg      Y@rB  zwidth=%sr   r$   z[%s]rÄ   z\includegraphics%s{%s})r†  r4   rF  ÚurllibÚrequestÚurl2pathnamer.  rÔ  rÕ  r   ÚfigurerÛ  r0   rÑ   r~  rÖ  rß  r^  r•  rÌ   rS   )
rC   rG  ÚattrsZ	imagepathÚpreÚpostZinclude_graphics_optionsZalign_codesZ
align_codeÚoptionsrD   rD   rE   Úvisit_image=	  sZ    



zLaTeXTranslator.visit_imagec             C   s(   |  d¡r$|  j|  |¡dg 7  _d S )Nr×  r   )rÆ   r•  rÚ  )rC   rG  rD   rD   rE   Údepart_imaget	  s    
zLaTeXTranslator.depart_imagec             C   sr   xl|d D ]`}|  d¡rN| j |dd … ¡}|rjd| jj|< | j d| ¡ q
tj| jd< | j d| ¡ q
W d S )Nr3  z	language-rÝ  Tz\foreignlanguage{%s}{Úinlinez\DUrole{%s}{)	rÆ  rƒ  rÀ   rÂ   r•  r0   rÞ   r  r6   )rC   rG  r/  rÁ   rD   rD   rE   ré  x	  s    
zLaTeXTranslator.visit_inlinec             C   s   | j  dt|d ƒ ¡ d S )Nrâ   r3  )r•  r0   r  )rC   rG  rD   rD   rE   rë  ƒ	  s    zLaTeXTranslator.depart_inlinec             C   s   t j| jd< | j d¡ d S )NÚlegendz\begin{DUlegend})rÞ   rŽ  r6   r•  r0   )rC   rG  rD   rD   rE   Úvisit_legend†	  s    zLaTeXTranslator.visit_legendc             C   s   | j  d¡ d S )Nz\end{DUlegend}
)r•  r0   )rC   rG  rD   rD   rE   Údepart_legendŠ	  s    zLaTeXTranslator.depart_legendc             C   s   | j  d¡ d S )Nz\item[] )r•  r0   )rC   rG  rD   rD   rE   Ú
visit_line	  s    zLaTeXTranslator.visit_linec             C   s   | j  d¡ d S )Nr   )r•  r0   )rC   rG  rD   rD   rE   Údepart_line	  s    zLaTeXTranslator.depart_linec             C   sb   t j| jd< t j| jd< |  |¡ t|jtjƒr>| j	 
d¡ n |  |¡ | j	 
d¡ |  |¡ d S )Nr5  Ú	lineblockz0\item[]
\begin{DUlineblock}{\DUlineblockindent}
z\begin{DUlineblock}{0em}
)rÞ   r6  r6   r“  rÛ  rÔ  rÕ  r   Z
line_blockr•  r0   rá  rÜ  )rC   rG  rD   rD   rE   Úvisit_line_block“	  s    

z LaTeXTranslator.visit_line_blockc             C   s   | j  d¡ |  |¡ d S )Nz\end{DUlineblock}
)r•  r0   rã  )rC   rG  rD   rD   rE   Údepart_line_block 	  s    z!LaTeXTranslator.depart_line_blockc             C   s   | j  d¡ d S )Nz
\item )r•  r0   )rC   rG  rD   rD   rE   Úvisit_list_item¤	  s    zLaTeXTranslator.visit_list_itemc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_list_item§	  s    z LaTeXTranslator.depart_list_itemc             C   sX   d| _ d|d kr6| jjdkr6tj| jd< tj| jd< | j 	d¡ |d rT|  
|¡ d S )NTÚcoder3  r#   Úcolorz\texttt{)rÄ  rN   Úsyntax_highlightrÞ   r™  r4   Úhighlight_rulesr6   r•  r0   ré  )rC   rG  rD   rD   rE   Úvisit_literalª	  s    zLaTeXTranslator.visit_literalc             C   s(   d| _ |d r|  |¡ | j d¡ d S )NFr3  râ   )rÄ  rë  r•  r0   )rC   rG  rD   rD   rE   Ú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 verbatimr)   r   )r  rÔ  r   r  )rC   rG  rD   rD   rE   Úis_plaintextÉ	  s    zLaTeXTranslator.is_plaintextc             C   s  dddddœ}| j }| j ¡ }|o(| jj}|  |¡}|dko>|}| d¡rd|  jdg|  |¡ 7  _|  |¡ |s¢d|d	 kr¢| j	j
d
kr¢tj| jd< tj| jd< |rü|rü|süd ddddg¡| jd< | j dtdd„ | ¡  d¡D ƒƒ ¡ | j d¡ n2|s"|s"| j d¡ | j d¡ n| j d¡ |r¶|r¶|rF|r¶y|| | jd< W n tk
rn   Y nX d| _|rŽ|rŽ| j d¡ | j d|| jf ¡ | j d| ¡ n`|rì|sìd| _d| jd< | j d¡ | j d¡ n*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ÚlistingZVerbatimZverbatimtabrŸ  r×  r   r˜  r3  r#   r™  r$   z$% character width in monospaced fontz\newlength{\ttemwidth}z$\settowidth{\ttemwidth}{\ttfamily M}Zttemz\begin{minipage}{%d\ttemwidth}
c             s   s   | ]}t |ƒV  qd S )N)r  )r»   rÏ  rD   rD   rE   ú	<genexpr>ò	  s    z6LaTeXTranslator.visit_literal_block.<locals>.<genexpr>z
\end{minipage}
z\begin{quote}
z
\end{quote}
Zliteral_blockTz\lstset{xleftmargin=0pt}
z\begin{%s}%s
z	
\end{%s}z\usepackage{alltt}r  z\begin{alltt}
z
\end{alltt}z\ttfamily\raggedright
N)r}  r”  r-  r)  rž  rÆ   r•  rÚ  rá  rN   rš  rÞ   r™  r4   r›  r6   rS   r0   Úmaxræ  r€  r‰  rÑ   ri  r~  r  rÄ  rÇ  rÅ  )rC   rG  ÚpackagesÚenvironmentZ	_in_tableZ_autowidth_tableZ
_plaintextZ	_listingsrD   rD   rE   r:  Í	  sb    



 
z#LaTeXTranslator.visit_literal_blockc             C   sP   d| _ d| _d| _d| _d| _| j | j ¡ ¡ | j | j ¡ ¡ |  	|¡ d S )NF)
rÅ  rÇ  rÄ  ri  r  r•  r0   r‰  r_  rã  )rC   rG  rD   rD   rE   r<  
  s    z$LaTeXTranslator.depart_literal_blockrä   c             C   s¬   |d r|   |¡ d| jd< | ¡  tj¡}| d¡rLd |g|  |¡ ¡}|dkrf| j	r`d}q€d}nd d	d
| dd| g¡}| j
 || ¡ |d r¢|  |¡ tj‚dS )z	math roler3  z\usepackage{amsmath}Zamsmathr×  r   rä   z\(%s\)z$%s$z%%z
\begin{%s}z%sz\end{%s}N)ré  r4   ræ  r_   r   Zuni2tex_tablerÆ   rS   rÚ  r  r•  r0   rë  r   r  )rC   rG  Úmath_envZ	math_codeÚwrapperrD   rD   rE   Ú
visit_math0
  s$    



zLaTeXTranslator.visit_mathc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_mathI
  s    zLaTeXTranslator.depart_mathc             C   s   t | ¡ ƒ}| j||d d S )N)r¥  )r
   ræ  r§  )rC   rG  r¥  rD   rD   rE   Úvisit_math_blockL
  s    z LaTeXTranslator.visit_math_blockc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_math_blockP
  s    z!LaTeXTranslator.depart_math_blockc             C   s   | j d r| j d¡ d S )NrÈ   z, )r‰  r•  r0   )rC   rG  rD   rD   rE   Úvisit_optionS
  s    
zLaTeXTranslator.visit_optionc             C   s   | j d  d7  < d S )NrÈ   r)   )r‰  )rC   rG  rD   rD   rE   Údepart_optionX
  s    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•  r0   rÆ   )rC   rG  rD   rD   rE   Úvisit_option_argument\
  s    z%LaTeXTranslator.visit_option_argumentc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_option_argument`
  s    z&LaTeXTranslator.depart_option_argumentc             C   s   | j  d¡ | j d¡ d S )Nz
\item[r   )r•  r0   r‰  )rC   rG  rD   rD   rE   Úvisit_option_groupc
  s    z"LaTeXTranslator.visit_option_groupc             C   s   | j  ¡  | j d¡ d S )Nz] )r‰  r_  r•  r0   )rC   rG  rD   rD   rE   Údepart_option_grouph
  s    
z#LaTeXTranslator.depart_option_groupc             C   s2   t j| jd< t j| jd< |  |¡ | j d¡ d S )Nr5  Ú
optionlistz\begin{DUoptionlist})rÞ   r6  r6   r²  rá  r•  r0   )rC   rG  rD   rD   rE   Úvisit_option_listl
  s    
z!LaTeXTranslator.visit_option_listc             C   s   | j  d¡ |  |¡ d S )Nz\end{DUoptionlist}
)r•  r0   rã  )rC   rG  rD   rD   rE   Údepart_option_listr
  s    z"LaTeXTranslator.depart_option_listc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Úvisit_option_list_itemv
  s    z&LaTeXTranslator.visit_option_list_itemc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_option_list_itemy
  s    z'LaTeXTranslator.depart_option_list_itemc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Úvisit_option_string|
  s    z#LaTeXTranslator.visit_option_stringc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_option_string€
  s    z$LaTeXTranslator.depart_option_stringc             C   s   |   |d¡ d S )Nr8  )rð  )rC   rG  rD   rD   rE   Úvisit_organization„
  s    z"LaTeXTranslator.visit_organizationc             C   s   |   |¡ d S )N)rò  )rC   rG  rD   rD   rE   Údepart_organization‡
  s    z#LaTeXTranslator.depart_organizationc             C   sì   |j  |¡}|dkr.t|j tjtjtjfƒr.n„|dkrrt|j tjƒrrt|j |d  tjƒsrt|j |d  tjƒsrn@| jj	r¦|dkr| j
d|d |dkr²| j d¡ n| j d¡ | d¡rÖ|  j|  |¡dg 7  _|d rè|  |¡ d S )Nr   r)   z:LaTeX merges paragraphs in tables with auto-sized columns!)Ú	base_noder   r×  r3  )rÕ  ÚindexrÔ  r   Z	list_itemÚdescriptionrß  r  r”  r)  ru  r•  r0   rÆ   rÚ  ré  )rC   rG  r¼  rD   rD   rE   Úvisit_paragraphŠ
  s&    
zLaTeXTranslator.visit_paragraphc             C   s*   |d r|   |¡ | jjs&| j d¡ d S )Nr3  r   )rë  r”  r)  r•  r0   )rC   rG  rD   rD   rE   Údepart_paragraph¤
  s    
z LaTeXTranslator.depart_paragraphc             C   s:   t j| jd< | j d¡ |  |¡ | j d|d  ¡ d S )Nr™  z%
z"\hyperlink{%s}{\textbf{\color{red}r  )rÞ   r™  r4   r•  r0   rØ  )rC   rG  rD   rD   rE   Úvisit_problematicª
  s    
z!LaTeXTranslator.visit_problematicc             C   s   | j  d¡ d S )Nz}})r•  r0   )rC   rG  rD   rD   rE   Údepart_problematic°
  s    z"LaTeXTranslator.depart_problematicc             C   sL   d|  dd¡ ¡ krtj‚|  |¡s0| j d¡ |d rB|  |¡ d| _d S )Nr   rn  r$   r   r3  T)	rÆ   r€  r   r  rÖ  r•  r0   ré  ri  )rC   rG  rD   rD   rE   Ú	visit_raw³
  s    

zLaTeXTranslator.visit_rawc             C   s2   d| _ |d r|  |¡ |  |¡s.| j d¡ d S )NFr3  r   )ri  rë  rÖ  r•  r0   )rC   rG  rD   rD   rE   Ú
depart_raw½
  s
    

zLaTeXTranslator.depart_rawc             C   sF   d}x8|D ]0}|dkr|d7 }|dkr.|d8 }|dk r
dS q
W |dkS )z7Test whether there are unmatched '{' or '}' characters.r   rá   r)   râ   TrD   )rC   rU   r   rÌ  rD   rD   rE   Úhas_unbalanced_bracesÄ
  s    
z%LaTeXTranslator.has_unbalanced_bracesc             C   s   t dƒdt dƒdt dƒdi}d|kr–t|d ƒ |¡}| d¡d	ksN|  |¡r\|  d
| ¡ |d | ¡ kr‚| j d| ¡ t	j
‚| j d| ¡ d S d|kr¨|d }n"d|krÂ| jj|d  }ntdƒ‚|  |¡sà| j d¡ | j d| ¡ | jr| j d| j| dd¡f ¡ t	j
‚d S )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  zUnknown reference.r   z\hyperref[%s]{z\%s{%s}}r$   )r  rW   r_   r™  rÄ  rv  ræ  r•  r0   r   r  rH   r  r  rÖ  r{  r.  )rC   rG  Zspecial_charsr  rD   rD   rE   Úvisit_referenceÐ
  s4    

zLaTeXTranslator.visit_referencec             C   s&   | j  d¡ |  |¡s"| j  d¡ d S )Nrâ   r   )r•  r0   rÖ  )rC   rG  rD   rD   rE   Údepart_referenceò
  s    
z LaTeXTranslator.depart_referencec             C   s   |   |d¡ d S )NÚrevision)rð  )rC   rG  rD   rD   rE   Úvisit_revision÷
  s    zLaTeXTranslator.visit_revisionc             C   s   |   |¡ d S )N)rò  )rC   rG  rD   rD   rE   Údepart_revisionú
  s    zLaTeXTranslator.depart_revisionc             C   s&   t j| jd< |  |¡ | j d¡ d S )NÚrubricz
\DUrubric{)rÞ   rË  r6   rá  r•  r0   )rC   rG  rD   rD   rE   Úvisit_rubricý
  s    
zLaTeXTranslator.visit_rubricc             C   s   | j  d¡ |  |¡ d S )Nz}
)r•  r0   rã  )rC   rG  rD   rD   rE   Údepart_rubric  s    zLaTeXTranslator.depart_rubricc             C   s6   |  j d7  _ | j d¡ | j| j d   d7  < d S )Nr)   r   )rT  r  r0   )rC   rG  rD   rD   rE   Úvisit_section  s    zLaTeXTranslator.visit_sectionc             C   s   | j  ¡  |  jd8  _d S )Nr)   )r  r_  rT  )rC   rG  rD   rD   rE   Údepart_section  s    
zLaTeXTranslator.depart_sectionc             C   s2   |   |¡ tj| jd< tj| jd< | j d¡ d S )Nr™  Úsidebarz\DUsidebar{)rá  rÞ   r™  r4   rÐ  r6   r•  r0   )rC   rG  rD   rD   rE   Úvisit_sidebar  s    
zLaTeXTranslator.visit_sidebarc             C   s   | j  d¡ |  |¡ d S )Nz}
)r•  r0   rã  )rC   rG  rD   rD   rE   Údepart_sidebar  s    zLaTeXTranslator.depart_sidebar)u   â€”r$   )rL  rM  )r$   r$   )r    r!   r"   r#   c             C   s:   | j | jj \}}| j d¡ | j |¡ | j |¡ d S )Nz\nopagebreak

\raggedleft )Úattribution_formatsrN   Zattributionr•  r0   r‰  )rC   rG  rO  rQ  rD   rD   rE   Úvisit_attribution!  s    z!LaTeXTranslator.visit_attributionc             C   s   | j  | j ¡ d ¡ d S )Nr   )r•  r0   r‰  r_  )rC   rG  rD   rD   rE   Údepart_attribution'  s    z"LaTeXTranslator.depart_attributionc             C   s   |   |d¡ d S )NÚstatus)rð  )rC   rG  rD   rD   rE   Úvisit_status*  s    zLaTeXTranslator.visit_statusc             C   s   |   |¡ d S )N)rò  )rC   rG  rD   rD   rE   Údepart_status-  s    zLaTeXTranslator.depart_statusc             C   s"   | j  d¡ |d r|  |¡ d S )Nz\textbf{r3  )r•  r0   ré  )rC   rG  rD   rD   rE   Úvisit_strong0  s    zLaTeXTranslator.visit_strongc             C   s"   |d r|   |¡ | j d¡ d S )Nr3  râ   )rë  r•  r0   )rC   rG  rD   rD   rE   Údepart_strong5  s    
zLaTeXTranslator.depart_strongc             C   s
   t j‚d S )N)r   r  )rC   rG  rD   rD   rE   Úvisit_substitution_definition:  s    z-LaTeXTranslator.visit_substitution_definitionc             C   s   |   |¡ d S )N)Úunimplemented_visit)rC   rG  rD   rD   rE   Úvisit_substitution_reference=  s    z,LaTeXTranslator.visit_substitution_referencec             C   s’   t |jtjƒr@|  | j¡ tj| jd< |  j	| j
|dd7  _	nNt |jtjƒrn| j d| j | jd ¡ ¡ n tj| jd< | j d|jj ¡ d S )NÚdocumentsubtitleF)rÙ  z\%s*{r)   r:   z
\DUsubtitle[%s]{)rÔ  rÕ  r   rH   rä  r:   rÞ   rÞ  r6   r‹  rÚ  r  r•  r0   r…  rT  Útagname)rC   rG  rD   rD   rE   Úvisit_subtitle@  s    zLaTeXTranslator.visit_subtitlec             C   s(   t |jtjƒr|  ¡  n| j d¡ d S )Nz}
)rÔ  rÕ  r   rH   rå  r•  r0   )rC   rG  rD   rD   rE   Údepart_subtitleM  s    
zLaTeXTranslator.depart_subtitlec          	   C   sü   t j| jd< t j| jd< dg|d< |  |¡ | j d¡ |  |¡ yd|d  }W n t	k
rj   d}Y nX | j d	|d
 |d |  
|d ¡|f ¡ t|d ƒdkrÌ| j d|d d  ¡ | j d¡ n,dd„ t|d ƒD ƒ}| j dd |¡ ¡ d S )Nr™  r9   zsystem-messager3  z*
\DUtitle[system-message]{system-message}
z	, line~%srÏ  r$   z&

{\color{red}%s/%s} in \texttt{%s}%s
Útyper   Úsourcerg  r)   z
\hyperlink{%s}{r   râ   c             S   s    g | ]\}}d ||d f ‘qS )z\hyperlink{%s}{%d}r)   rD   )r»   r]  r  rD   rD   rE   r¾   e  s   z8LaTeXTranslator.visit_system_message.<locals>.<listcomp>z
backrefs: r½  )rÞ   r™  r4   r9   r6   rõ  r•  r0   rØ  rÑ   rÐ  r  r‰  rÈ  rS   )rC   rG  rÏ  rg  rD   rD   rE   Úvisit_system_messageS  s&    



z$LaTeXTranslator.visit_system_messagec             C   s   | j  | j ¡ ¡ |  ¡  d S )N)r•  r0   r‰  r_  rö  )rC   rG  rD   rD   rE   Údepart_system_messagei  s    z%LaTeXTranslator.depart_system_messagec             C   sÜ   t j| jd< | j ¡ r0| j | j¡ t| dƒ| _| jjdkr~t	|j
tjƒr~|j
 |¡dkr~| j | j¡ d¡dkr~| j d¡ | j ¡  | j | jj|d ¡ d	|kr¸| j d	|d	 ¡ | jjd
krÎd| jd
< |  g ¡ d S )NrË  Ztabularr5  r)   r  rÈ   z\leavevmoder3  rA  r   z\usepackage{booktabs})rÞ   rË  r4   r”  r-  r“  r0   r!  r#  rÔ  rÕ  r   r  r¼  r…  rT  r™  r•  rM   r4  rN   r2  r9  r0  rä  )rC   rG  rD   rD   rE   Úvisit_tablem  s"    



zLaTeXTranslator.visit_tablec             C   sÈ   | j }|  ¡  y|  |jd ¡}W n tk
r:   d}Y nX | j  d| j |¡ ¡ |  j |7  _ | j  | j ¡ d ¡ | j 	¡  t
| jƒdkrœ| j ¡ | _| d¡rÄ|  j | j|dddg 7  _ d S )NrB  z
\linewidthr   r   r×  F)rÙ  )r•  rå  r~  rF  rÑ   r0   r”  rC  rE  rY   r  r“  r_  rÆ   rÚ  )rC   rG  r¨  rB  rD   rD   rE   Údepart_tableƒ  s    


zLaTeXTranslator.depart_tablec             C   s`   d|ksd|ksd|krd S | j  d¡ t|jtjƒpBt|jtjƒ }|  j |  ||¡7  _ d S )NrÅ  r  r  z%
)r•  r0   rÔ  rÕ  r   r,  r9   rÚ  )rC   rG  rÙ  rD   rD   rE   Úvisit_target–  s    zLaTeXTranslator.visit_targetc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_target¤  s    zLaTeXTranslator.depart_targetc             C   s$   | j  d¡s |  |¡ |  d ¡ d S )Nzpreamble written)r”  rÆ   rY  r[  )rC   rG  rD   rD   rE   Úvisit_tbody§  s    
zLaTeXTranslator.visit_tbodyc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_tbody®  s    zLaTeXTranslator.depart_tbodyc             C   s   | j  d¡ dS )zdefinition list termz\item[{N)r•  r0   )rC   rG  rD   rD   rE   Ú
visit_term±  s    zLaTeXTranslator.visit_termc             C   s   | j  d¡ d S )Nz}] \leavevmode )r•  r0   )rC   rG  rD   rD   rE   Údepart_term·  s    zLaTeXTranslator.depart_termc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Úvisit_tgroup¼  s    zLaTeXTranslator.visit_tgroupc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_tgroupÁ  s    zLaTeXTranslator.depart_tgroupc             C   s   | j S )N)Ú_thead_depth)rC   rD   rD   rE   rV  Å  s    zLaTeXTranslator.thead_depthc             C   sh   |  j d7  _ d|  ¡ kr@| j d| j |¡ ¡ | j dd¡ | j | j ¡ ¡ | j | j 	¡ ¡ d S )Nr)   z{%s}
zpreamble written)
rð  rV  r•  r0   r”  rM  r9  rW  rÌ   rY  )rC   rG  rD   rD   rE   rY  È  s    zLaTeXTranslator.visit_theadc             C   s@   |d k	r.| j  | j ¡ ¡ | j ¡ r.| | ¡ |  jd8  _d S )Nr)   )r•  rÌ   r”  r[  rX  rI   rð  )rC   rG  rD   rD   rE   r[  Ð  s
    

zLaTeXTranslator.depart_theadc             C   s®  |j jdkrB|  | j¡ | j d¡ | j d|  | ¡ ¡ ¡ nht	|j t
jƒslt	|j t
jƒslt	|j t
jƒr°tj| jd< d |j d ¡}|s’|j}| j d| ¡ | j d¡ nút	|j t
jƒrÚ|  | jj¡ | j d¡ nÐttd	ƒrðtj| jd	< | j | j¡}| j d
¡ d|j d krJtj| jd< |  | ¡ ¡}| j d||f ¡ n| j d| ¡ | jt| jjƒkrztj| jd< dg}|| j|j dd7 }| j d |¡d ¡ dS )z Append section and other titles.rH   r$   z  pdftitle={%s},r9   rÄ   r3  z
\DUtitle[%s]{z}
r›  z

zsystem-messagesr™  z\%s[%s]{\color{red}z\%s{F)rÙ  z%
  z%
}
N)rÕ  rß  rä  r9   r‰  r0   rŽ  rÐ  ræ  rÔ  r   Útopicrô  rÐ  rÞ   r6   rS   r•  rË  r”  r,  r  r›  r4   r…  r  rT  r™  r  r  rÚ  )rC   rG  r3  Úsection_nameZsection_titleÚbookmarkrD   rD   rE   Úvisit_title×  s@    
zLaTeXTranslator.visit_titlec             C   s8   | j  | j ¡ ¡ t|jtjƒs,|jjdkr4|  	¡  d S )NrH   )
r•  r0   r‰  r_  rÔ  rÕ  r   rË  rß  rå  )rC   rG  rD   rD   rE   Údepart_title  s    zLaTeXTranslator.depart_titlec       	      C   s  | j  | j¡}dddœ}d| j jkr,d|d< y|| }W n* tk
rb   | jd| d |d	 d
S X tj| jd< d| | jd| < t	| j jƒ}d||f | jd| < ddddœ}d| j jkrÄ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^   r  r  Úsectr  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-depthr)   r   )r÷  rö  r^   rÈ   z\setcounter{%stocdepth}{%d}z\mtcsettitle{%stoc}{%s}
z\%stoc
)r…  r  rT  r  rÑ   ru  rÞ   r?  r4   r  r•  r0   )	rC   rG  r9   Údepthrò  Zminitoc_namesZminitoc_nameZmaxdepthÚoffsetrD   rD   rE   r?    s0    

zLaTeXTranslator.minitocc          	   C   sÎ  d|d kr| j  d¡ |  j |  |¡7  _ t| ¡ tjƒrp| j  d| jd | ¡  ¡ | 	ddg¡d f ¡ | j
r
d}t| ¡ tjƒr |  | d¡ ¡ ¡}| 	d	d¡}d
|d krÊ|  |||¡ d S |rÞ| j  d| ¡ |dkrö| j  d| ¡ | j  d¡ d| _nd| _n¸d|d kr`| jjr`|  | j¡ | j  d¡ t| ¡ tjƒrÊ| d¡ njd|d krˆtj| jd< |  | j¡ n8d|d kr°tj| jd< |  | j¡ n|d  dd¡ |  |¡ d S )NÚcontentsr3  r   z
\pdfbookmark[%d]{%s}{%s}r)   r×  r   r$   rø  Úlocalz\setcounter{tocdepth}{%d}
ZContentsz!
\renewcommand{\contentsname}{%s}z
\tableofcontents
Tr>   z\begin{abstract}r=   rñ  )r•  r0   rÚ  rÔ  Z	next_noder   r9   rT  ræ  rÆ   r*   rÐ  r_  r?  rA  rþ  rN   r,   rä  r>   rÞ   r6   r=   r  rü  )rC   rG  r9   rø  rD   rD   rE   Úvisit_topic5  sL    

zLaTeXTranslator.visit_topicc             C   sb   d| _ d|d kr(| jjr(| j d¡ nd|d kr>|  |¡ d|d ksVd|d kr^|  ¡  d S )NFr>   r3  z\end{abstract}
rú  r=   )rþ  rN   r,   r•  r0   rý  rå  )rC   rG  rD   rD   rE   Údepart_topicf  s    
zLaTeXTranslator.depart_topicc             C   s(   t j| jd< | j d¡ | j d¡ d S )NÚ
transitionzN
%___________________________________________________________________________
z\DUtransition
)rÞ   rþ  r6   r•  r0   )rC   rG  rD   rD   rE   Úvisit_transitionq  s    z LaTeXTranslator.visit_transitionc             C   s   d S )NrD   )rC   rG  rD   rD   rE   Údepart_transitionv  s    z!LaTeXTranslator.depart_transitionc             C   s   |   |d¡ d S )NÚversion)rð  )rC   rG  rD   rD   rE   Úvisit_versiony  s    zLaTeXTranslator.visit_versionc             C   s   |   |¡ d S )N)rò  )rC   rG  rD   rD   rE   Údepart_version|  s    zLaTeXTranslator.depart_versionc             C   s   t d|jj ƒ‚d S )Nz$visiting unimplemented node type: %s)rF  r  rb   )rC   rG  rD   rD   rE   rÜ    s    z#LaTeXTranslator.unimplemented_visit)T)N)N)N)rä   )Ýrb   rc   rd   rÖ   r—  r-   r.   r|  rA  rþ  rT  rÃ  ri  rÅ  rÇ  rÄ  r  ri   r@   ro  rw  r¹  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  r  r  r  r	  r
  r  r  r  r  r  r  rH  r  r  r  r  r  r!  r"  r#  r$  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r7  rð  rò  r;  r=  r>  rB  rC  rD  rE  rf  rI  r\  ra  rV  rW  rX  rY  rZ  r[  r]  r^  r_  r`  rc  rd  re  rf  rl  rm  ro  rp  rq  rr  rs  rt  ru  rv  rw  r~  r‹  rŒ  ré  rë  r  r  r‘  r’  r”  r•  r–  r—  rœ  r  rž  r:  r<  r§  r¨  r©  rª  r«  r¬  r®  r¯  r°  r±  r³  r´  rµ  r¶  r·  r¸  r¹  rº  r¾  r¿  rÀ  rÁ  rÂ  rÃ  rÄ  rÆ  rÇ  rÉ  rÊ  rÌ  rÍ  rÎ  rÏ  rÑ  rÒ  rÓ  rÔ  rÕ  r×  rØ  rÙ  rÚ  rÛ  rÝ  rà  rá  rä  rå  ræ  rç  rè  ré  rê  rë  rì  rí  rî  rï  rð  rV  rY  r[  rô  rõ  r?  rü  rý  rÿ  r   r  r  rÜ  rD   rD   rD   rE   rA   s  s¶  
 [")X
			
	A937
I
"5#1rA   )DrÖ   Z__docformat__rx  rQ   Útimer  rU   Úurllib.requestrƒ  Úurllib.parseÚurllib.errorr  ÚImportErrorZdocutils.utils.romanr   Zdocutilsr   r   r   r   r   Zdocutils.utils.error_reportingr   Zdocutils.transformsr	   Zdocutils.utils.mathr
   r   r   Úobjectri   r×   rÙ   rÞ   r>   rô  r™  r<   r=   rà  rv  r\  ra  rh  r‡  r›  r  rŽ  r“  r@  r?  r²  r6  rË  rÐ  r:   rÞ  rË  r  r  r  r9   rþ  rß   r  r!  rt  rA   rD   rD   rD   rE   Ú<module>   sp     r 1 , u