o $a_ @sbdZddlZddlZddlmZddlmZmZmZmZm Z m Z ddl m Z ddl mZddlZddlmZmZmZddlmZdd lmZdd lmZmZmZdd lmZmZdd lm Z dd l!m"Z"m#Z#ddl$m%Z%ddl&m'Z'ddl(m)Z)m*Z*ddl+m,Z,m-Z-ddl.m/Z/m0Z0m1Z1m2Z2ddl3m4Z4m5Z5ddl6m7Z7m8Z8ddl9m:Z:ddl;mZ>ddl?m@Z@mAZAddlBmCZCddlDmEZEmFZFddlGmHZHiddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd=d?d@dAd@dBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdSdUdVdWdXdYdZd[d\d]d^d_d_d_d`dadbdcZIgddZJe/KeLZMGdedfdfeZNdgedhe#didfdjdkZOdgedhe#didfdldmZPdgedidfdndoZQdhe#dieRfdpdqZSdhe#dieeReRffdrdsZTdhe#dieUfdtduZVdhe#diee eReReReReRffdvdwZWdgedieeReffdxdyZXdS)zz sphinx.builders.latex ~~~~~~~~~~~~~~~~~~~~~ LaTeX builder. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. N)path)AnyDictIterableListTupleUnion) OptionParser)Node)addnodes highlighting package_dir)Sphinx)Builder)ADDITIONAL_SETTINGSDEFAULT_SETTINGS SHORTHANDOFF)Theme ThemeFactory)ExtBabel)ENUMConfig)RemovedInSphinx50Warning) ImageAdapter)NoUri SphinxError)___)loggingprogress_messagestatus_iterator texescape)bold darkgreen)SphinxFileOutput new_document)copy_asset_file) format_date)inline_all_toctrees)SEPmake_filename_from_project) LaTeXRenderer)LaTeXTranslator LaTeXWriter)nodessqz-L albanian -C utf8 hrz-L croatian -C utf8 csz-L czech -C utf8 daz-L danish -C utf8 nlz-L dutch-ij-as-ij -C utf8 en-L english -C utf8 eoz-L esperanto -C utf8 etz-L estonian -C utf8 fiz-L finnish -C utf8 frz-L french -C utf8 dez-L german-din5007 -C utf8 isz-L icelandic -C utf8 itz-L italian -C utf8 laz-L latin -C utf8 lvz-L latvian -C utf8 ltz-L lithuanian -C utf8 dsbz-L lower-sorbian -C utf8 dsnbz-L norwegian -C utf8 noplz-L polish -C utf8 ptz-L portuguese -C utf8 roz-L romanian -C utf8 skz-L slovak-small -C utf8 slz-L slovenian -C utf8 esz-L spanish-modern -C utf8 svz-L swedish -C utf8 trz-L turkish -C utf8 hsbz-L upper-sorbian -C utf8 hsviz-L vietnamese -C utf8 bez-L belarusian -C utf8 bgz-L bulgarian -C utf8 mkz-L macedonian -C utf8 z-L mongolian-cyrillic -C utf8 z-L russian -C utf8 z-L serbian -C utf8 z-L ukrainian -C utf8 z-L greek -C utf8 z-L greek-polytonic -C utf8 )mnrusrzsh-cyrlshukelz el-polyton)rOrPrQrRrSrTrUrVc @seZdZdZdZdZedZejdkreed7ZgdZ dZ e Z dAd d Z deeeeffd d ZdBdededefddZdBdedededefddZdAddZdAddZdAddZdAddZdAddZdAd d!Zd"edd fd#d$Zd%edefd&d'Zd(ed)ed*edd fd+d,Zd%ed-ed.eede j!fd/d0Z"dAd1d2Z#e$ed3dAd4d5Z%e$ed6dAd7d8Z&dAd9d:Z'dAd;d<Z(e)dee*eeffd=d>Z+e)dee*eeffd?d@Z,d S)C LaTeXBuilderz, Builds LaTeX output to create PDF. latexz"The LaTeX files are in %(outdir)s.posixzr Run 'make' in that directory to run these through (pdf)latex (use `make latexpdf' here to do that automatically).)zapplication/pdfz image/pngz image/jpegFreturnNcCsHd|_i|_i|_g|_t|j|_t| | | dSN) babelcontextdocnames document_datarappthemesr!init init_context init_babelinit_multilingualselfri@/usr/lib/python3/dist-packages/sphinx/builders/latex/__init__.pyrc|s  zLaTeXBuilder.initcCsdS)Nz all documentsrirgririrjget_outdated_docsszLaTeXBuilder.get_outdated_docsdocnametypcCs||jvr t||d|S)N%)r_r)rhrlrmririrjget_target_uris  zLaTeXBuilder.get_target_urifrom_tocCs |||Sr\)ro)rhrprqrmririrjget_relative_uris zLaTeXBuilder.get_relative_uricCsdd|jjD}|sttddSg|_|D]2}|d}||jjvr.ttd|q|j || t drA|dd}|j ||dfqdS) NcSsg|]}t|qSri)list).0xririrj sz3LaTeXBuilder.init_document_data..zEno "latex_documents" config value found; no documents will be writtenrz="latex_documents" config value references unknown document %sindex) configlatex_documentsloggerwarningrtitlesenvall_docsr`appendendswithr))rhpreliminary_document_dataentryrlririrjinit_document_datas"    zLaTeXBuilder.init_document_datacCst|_|jt|jji|jjr+|jj|jjddf}|jt|i|j|jj |jj |jd<|jj |jd<|jj rM|jj |jd<nt |jjpUtd|jjd|jd<|jjrlt|jj|jd<td|jd <|jj r|jd td dSdS) Nryrelease use_xindydatez %b %d, %Y)language logofilenameIndex indexname releasenameRelease)rcopyr^updatergetrz latex_enginerlatex_elementsrlatex_use_xindytodayr' today_fmtr latex_logorbasename setdefault)rhkeyririrjrds&  zLaTeXBuilder.init_contextcCs$|jj}|j|jd<|j|jd<dS)zzrzresolving references... refdocname refsectnamez (in ))setr_r|infor#rrr%r.sectionrrr rr(rrresolve_references pending_xrefemphasisr~ startswithTextr replace_self)rhrrrrnew_treenew_sectnode largetreerlappendix pendingnodesectnamenewnodessubdirrririrjrHsN        zLaTeXBuilder.assemble_doctreecCs0||||jjr|dSdSr\)copy_image_fileswrite_message_catalogcopy_support_filesrzlatex_additional_filescopy_latex_additional_filesrgririrjfinishss  zLaTeXBuilder.finishzcopying TeX support filescCs|jjrt|jjddd}|jjddtv}nd}d}|jj|jj||d}tt t dt t d}t|D]}|d sQtt |||j|d q>tjd krkt t d }tt |d |j|d dSdS)z© TeX support files from texinputs.Nryz-L general -C utf8 r5F)r xindy_usexindy_lang_optionxindy_cyrilliczcopying TeX support files... texinputs.)r^nt texinputs_win Makefile_t)rzrXINDY_LANG_OPTIONSrXINDY_CYRILLIC_SCRIPTSrrr|rr"rrrr oslistdirrr&rr)rhrrr^ staticdirnamefilenameririrjr{s6       zLaTeXBuilder.copy_support_fileszcopying additional filescCs:|jjD]}tjd|ddtt|j||jqdS)NrTr) rzrr|rr&rrconfdirr)rhrririrjrs z(LaTeXBuilder.copy_latex_additional_filesc Cs|jrUt|jjj}t|jtddt|j|jj|dD]8}|j|}zt t |j |t |j |WqtyT}zttdt |j ||WYd}~qd}~ww|jjr~t t |j|jjsottd|jjt t |j|jj|j dSdS)Nzcopying images... brown)stringify_funczcannot copy image file %r: %szlogo file %r does not exist)imagesrrarget_original_image_urir rr verbosityr&rrsrcdirr Exceptionr|r}rzrisfiler r)rhr"srcdesterrririrjr s,   zLaTeXBuilder.copy_image_filescCs|jj}d|dddd|dddd|ddddd}|jd s-|jd r6d |j|d <tt d dd}t ||j |t ddS)Nz\@idenfigurerz%stablez code-block) addtocaptions figurename tablenameliteralblocknamer]rz\addto\captions%sr/ templatesrYzsphinxmessages.sty_t)r^renderer) rz numfig_formatrsplitr^r]rrrr r&rr+)rhformatsr^rririrjr sz"LaTeXBuilder.write_message_catalogcCtjdtdd|jjjS)Nz'LaTeXBuilder.usepackages is deprecated.ry stacklevel)warningswarnrrarrrgririrj usepackages zLaTeXBuilder.usepackagescCr8)Nz6LaTeXBuilder.usepackages_after_hyperref is deprecated.ryr9)r;r<rrarrrgririrjusepackages_after_hyperrefr>z'LaTeXBuilder.usepackages_after_hyperref)r[Nr\)-__name__ __module__ __qualname____doc__rformatrepilogrsupported_image_typessupported_remote_imagesr,default_translator_classrcrstrrrkrorrrrdrrerfrrrrrrboolr.documentrrrrrr r propertyrr=r?riririrjrXlsF          ' /  +      rXrarzr[cCs@t|jD]}|tvrtd}t||f|j|qdS)Nz3Unknown configure key: latex_elements[%r], ignored.)rsrrrr|r}poprarzrmsgririrjvalidate_config_valuess rPcCsBt|jD]}|tjvrtd}t||f|j|qdS)Nz7Unknown theme option: latex_theme_options[%r], ignored.)rslatex_theme_optionsrUPDATABLE_KEYSrr|r}rMrNririrjvalidate_latex_theme_optionss  rScCs2|jjdkr|jjdvr|jddddSdSdS)zInstall packages for Japanese.ja)platexuplatex pxjahyperT)after_hyperrefN)rzrradd_latex_packageraririrjinstall_packages_for_jasr[cCs4|jdkrdS|jp ddrdS|jdkrdSdS)z> Better default latex_engine settings for specific languages. rTrVrzhxelatexrWr)rrrzririrjdefault_latex_engines  r_cCs,|jdkr|jdkrdddSdddSiS)z@ Better default latex_docclass settings for specific languages. rTrVujbookujreport)manualrjsbookjreport)rrr^ririrjdefault_latex_docclasss  recCs |jdvS)z? Better default latex_use_xindy settings for specific engines. >r]lualatex)rr^ririrjdefault_latex_use_xindys rgcCsJt|j|j}t|j|j}|jt|jdt|t||jfgS)z* Better default latex_documents settings. z.tex) r!escapeprojectrrroot_docr* escape_abbr latex_theme)rzrirririrjdefault_latex_documentss rmc CsZ|d|t|jdtdd|jdtdd|dt|dtdt ddd d d |d t d|d ddt g|dgd|ddd|dt dt g|dddt dddd|dddtg|ddd|ddd|did|dgd|dddt g|did|d gdtg|d!tdd"ddd#S)$Nz sphinx.builders.latex.transformsz config-initedi )priorityzbuilder-initedrrr]rfrUrVr{rrlatex_use_latex_multicolumnFrlatex_toplevel_sectioningpartchapterrlatex_domain_indicesTlatex_show_urlsrClatex_show_pagerefsrrrlrbrQlatex_theme_pathlatex_docclassbuiltin)versionparallel_read_safeparallel_write_safe)setup_extension add_builderrXconnectrPrSr[add_config_valuer_rrmrIrgrJrsrerZririrjsetups:      r)YrCrr;rtypingrrrrrrdocutils.frontendr docutils.nodesr sphinx.builders.latex.nodessphinxr r r sphinx.applicationrsphinx.buildersrsphinx.builders.latex.constantsrrrsphinx.builders.latex.themingrrsphinx.builders.latex.utilr sphinx.configrrsphinx.deprecationr!sphinx.environment.adapters.assetr sphinx.errorsrr sphinx.localerr sphinx.utilrrr r!sphinx.util.consoler"r#sphinx.util.docutilsr$r%sphinx.util.fileutilr&sphinx.util.i18nr'sphinx.util.nodesr(sphinx.util.osutilr)r*sphinx.util.templater+sphinx.writers.latexr,r-docutilsr.rr getLoggerr@r|rXrPrSr[rIr_rerJrgrmrriririrjs                     !"#$%&)*+,9 g  $