o
    Ni"c                  
   @  s  d Z ddlmZ ddlZddlZddlmZ ddlmZmZ ddl	m
Z
 ddlZddlmZmZmZ ddlmZ dd	lmZmZmZ dd
lmZmZ ddlmZ ddlmZmZ ddlmZ ddl m!Z!m"Z" ddl#m$Z$m%Z% ddl&m'Z'm(Z( ddl)m*Z* ddl+m,Z,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z>m?Z? ddl@mAZA erddlBmCZCmDZD ddlEmFZF ddlGmHZH ddlImJZJ i dd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@i dAd@dBdCdDdCdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdVdXdYdZd[d\d]d^d_d`dadbdbdbdcdddedfZKg dgZLe'MeNZOG dhdi dieZPddpdqZQddrdsZRddtduZSddwdxZTddzd{ZUdd}d~ZVdddZWdddZXdS )zLaTeX builder.    )annotationsN)path)TYPE_CHECKINGAny)OptionParser)addnodeshighlightingpackage_dir)Builder)ADDITIONAL_SETTINGSDEFAULT_SETTINGSSHORTHANDOFF)ThemeThemeFactory)ExtBabel)ENUMConfig)ImageAdapter)NoUriSphinxError)___)logging	texescape)	darkgreen)progress_messagestatus_iterator)SphinxFileOutputnew_document)copy_asset_file)format_date)inline_all_toctrees)SEPcopyfilemake_filename_from_project)LaTeXRenderer)LaTeXTranslatorLaTeXWriter)nodes)IterableSet)Node)Sphinx)ExtensionMetadatasqz-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 enz-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 dsnbz-L norwegian -C utf8 noplz-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 hsviz-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 )mnrusrzsh-cyrlshukelz
el-polyton)rM   rN   rO   rP   rQ   rR   rS   rT   c                   @  s4  e Zd ZdZdZdZedZejdkreed7 Zg dZ	dZ
eZdKd
dZdLddZdMdNddZdMdOddZdKddZdKddZdKddZdKd d!ZdKd"d#ZdKd$d%ZdPd(d)ZdKd*d+ZdQd-d.ZdRd0d1ZdSd6d7ZdTd=d>ZdKd?d@ZeedAdKdBdCZeedDdKdEdFZ dKdGdHZ!dKdIdJZ"dS )U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).)zapplication/pdfz	image/pngz
image/jpegFreturnNonec                 C  sF   |  i | _ i | _g | _t| j| _t  |   | 	  | 
  d S N)contextdocnamesdocument_datar   appthemesr   initinit_context
init_babelinit_multilingualself rg   R/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/builders/latex/__init__.pyra      s   zLaTeXBuilder.initstr | list[str]c                 C  s   dS )Nzall documentsrg   re   rg   rg   rh   get_outdated_docs   s   zLaTeXBuilder.get_outdated_docsNdocnamestrtyp
str | Nonec                 C  s   || j vr
t||d| S )N%)r]   r   )rf   rk   rm   rg   rg   rh   get_target_uri   s   

zLaTeXBuilder.get_target_urifrom_toc                 C  s   |  ||S r[   )rp   )rf   rq   rr   rm   rg   rg   rh   get_relative_uri   s   zLaTeXBuilder.get_relative_uric                 C  s   dd | j jD }|sttd d S g | _|D ],}|d }|| jjvr.ttd| q| j	| |
td }| j	||d f qd S )Nc                 S  s   g | ]}t |qS rg   )list).0xrg   rg   rh   
<listcomp>   s    z3LaTeXBuilder.init_document_data.<locals>.<listcomp>zEno "latex_documents" config value found; no documents will be writtenr   z="latex_documents" config value references unknown document %sindex   )configlatex_documentsloggerwarningr   titlesenvall_docsr^   appendremovesuffixr"   )rf   preliminary_document_dataentryrk   rg   rg   rh   init_document_data   s.   zLaTeXBuilder.init_document_datac                 C  s:  t  | _| jt| jji  | jj| jjd d f}| jt|i  | j| jj	 | jj
| jd< | jj| jd< d| jjv | jd< d| jjv | jd< d| jjv | jd< | jjrd| jj| jd< n| jjpktd}t|| jjd	| jd< | jjrt| jj| jd
< td| jd< | jj
r| jdtd d S d S )Nry   release	use_xindybooktabs
borderless	colorrowsdatez	%b %d, %Y)languagelogofilenameIndex	indexnamereleasenameRelease)r   copyr\   updater   getrz   latex_enginer   latex_elementsr   latex_use_xindylatex_table_styletoday	today_fmtr   r    
latex_logor   basename
setdefault)rf   keyr   rg   rg   rh   rb      s(   
zLaTeXBuilder.init_contextc                 C  s$   | j j}|j| jd< |j| jd< dS )z<Update template variables for .tex file just before writing.packagespackages_after_hyperrefN)r_   registrylatex_packagesr\   latex_packages_after_hyperref)rf   r   rg   rg   rh   update_context   s   zLaTeXBuilder.update_contextc                 C  s>   t | jj| jd  | _| j sttd| jj d S d S )Nbabelz%no Babel option known for language %r)	r   rz   r   r\   r   is_supported_languager|   r}   r   re   rg   rg   rh   rc      s   
zLaTeXBuilder.init_babelc                 C  s  | j d dkrM| j s/d| j d v rd| j d< d| j d< nd	| j d v r/d| j d< d
| j d< d| j d v r<d| j d< nd| j d< | j d dkrMd| j d< | j d r| j d  d| j  7  < | j d | j d< t| j d< | j rd| jjvrd| j d< d S d S d S | j d r| j d  d| j  7  < | j }|rd| d| j  d}nd| j  }| j d  d| | j d< d S d S )Nr   pdflatexX2fontencz(\usepackage{sphinxpackagesubstitutefont}substitutefontz(\usepackage[Xtwo]{sphinxpackagecyrillic}textcyrillicT2Az)\usepackage[TtwoA]{sphinxpackagecyrillic}LGR 	textgreekfontsubstitutionr   classoptions,multilingualshorthandofffontpkgpolyglossiaz\setmainlanguage[z]{}z\setmainlanguage{%s}
)r\   r   uses_cyrillicget_languager   rz   r   get_mainlanguage_options)rf   optionsr   rg   rg   rh   rd      sJ   








zLaTeXBuilder.init_multilingualc                 C  s~   t d| jj}t| jd}t|ddd}|d |d |d ||	  W d    d S 1 s8w   Y  d S )	NrW   zsphinxhighlight.stywutf-8)encodingz%\NeedsTeXFormat{LaTeX2e}[1995/12/01]
zX\ProvidesPackage{sphinxhighlight}[2022/06/30 stylesheet for highlighting with pygments]
zA% Its contents depend on pygments_style configuration variable.

)
r   PygmentsBridgerz   pygments_styler   joinoutdiropenwriteget_stylesheet)rf   highlighter
stylesheetfrg   rg   rh   write_stylesheet  s   
"zLaTeXBuilder.write_stylesheetr]   Set[str]c                 C     |    |   d S r[   )r   r   )rf   r]   rg   rg   rh   prepare_writing&     zLaTeXBuilder.prepare_writingc                 C  s    |    | jjr|   d S d S r[   )copy_support_filesrz   latex_additional_filescopy_latex_additional_filesre   rg   rg   rh   copy_assets*  s   zLaTeXBuilder.copy_assets	_docnamesc              	   C  s  t | }t  tjdtd t| jj|fdd }W d    n1 s&w   Y  | j	D ]}|d d \}}}}}	| j
|	}
d}t|dkrM|d }tt| j|ddd}ttd	| dd
Y | j|}t|tjd }|r|ddkr|d}nd }| j|||
jdkr| jjng d}|
j|d< | ||d< ||d< | | | |||
 |    W d    n1 sw   Y  ttd& ||_!||_"|d |_#||_$|
j|_%||_|
|_&|'|| W d    n1 sw   Y  q.d S )Nignore)categoryT)defaults
componentsread_config_files   Fr   )destination_pathr   overwrite_if_changedzprocessing %snonlmaxdepthr   howto)
appendicesdocclasscontentsnametocdepthwriting)(r'   warningscatch_warningsfilterwarningsDeprecationWarningr   r   settingsget_default_valuesr^   r`   r   lenr   r   r   r   r   r   get_doctreenextfindallr   toctreeassemble_doctreenamerz   latex_appendicesr   get_contentsnamepost_process_imagesupdate_doc_contextr   _author_title_contentsname_docname	_docclassthemer   )rf   r   	docwriterdocsettingsr   rk   
targetnametitleauthor	themenamer   toctree_onlydestinationdoctreer   r   rg   rg   rh   write_documents0  sh   






zLaTeXBuilder.write_documents	indexfilec                 C  s<   | j |}d}|tjD ]}d|v r|d } |S q|S )Nr   caption)r   r   r   r   r   )rf   r  treer   r   rg   rg   rh   r   h  s   zLaTeXBuilder.get_contentsnamer   r   r   r   c                 C  sH   || j d< || j d< |j| j d< |j| j d< |j| j d< |j| j d< d S )Nr   r   r   	papersize	pointsizewrapperclass)r\   r   r	  r
  r  )rf   r   r   r   rg   rg   rh   r   r  s   

zLaTeXBuilder.update_doc_contextr  boolr   	list[str]nodes.documentc              	   C  sl  |h|| _ tt| | j|}||d< |r<td}t }|t	dd7 }||7 }|
tjD ]}||7 }q3|}t| | j ||t|g}||d< |D ]}	| j|	}
|	|
d< ||
 qMtd ttd | j|||  |
tjD ]:}|d }	|d }t||g}| jD ]\}}|	|r|ttdt||td	f  nq	 || qy|S )
Nrk   z<latex output>z<Set title in conf.py>r   zresolving references...
refdocnamerefsectnamez (in ))r]   r|   infor   r   r   r   r(   sectionr   r   r   r   r!   r   r   resolve_referencespending_xrefemphasisr~   
startswithextendTextr   replace_self)rf   r  r  r   r  new_treenew_sectnode	largetreerk   appendixpendingnodesectnamenewnodessubdirr   rg   rg   rh   r   z  sN   



zLaTeXBuilder.assemble_doctreec                 C  r   r[   )copy_image_fileswrite_message_catalogre   rg   rg   rh   finish  r   zLaTeXBuilder.finishzcopying TeX support filesc                 C  s   t | jjdd d}| jjdd tv }| jj| jj||d}tt	d}t
|D ]}|ds@tt||| j|dd q,t
jd	kr[tt	d
}tt|d| j|dd dS dS )z&Copy TeX support files from texinputs.Nry   z-L general -C utf8 )r   	xindy_usexindy_lang_optionxindy_cyrillic	texinputs.T)r\   forcenttexinputs_winzMakefile.jinja)XINDY_LANG_OPTIONSr   rz   r   XINDY_CYRILLIC_SCRIPTSr   r   r   r   r	   oslistdirr  r   r   r   )rf   r(  r)  r\   staticdirnamefilenamerg   rg   rh   r     s8   




zLaTeXBuilder.copy_support_fileszcopying additional filesc                 C  sD   | j jD ]}tjd| dd | j| }t|| j|j dd qd S )N Tr   r,  )rz   r   r|   r  confdirr#   r   r   )rf   r4  sourcerg   rg   rh   r     s   

z(LaTeXBuilder.copy_latex_additional_filesc                 C  s  | j rSt| jjj}t| j tddt| j | jj|dD ]6}| j | }zt	| j
| | j| dd W q tyR } zttdt| j
|| W Y d }~qd }~ww | jjrtt| j| jjsmttd| jj | j| jj }t	|| j|j dd d S d S )Nzcopying images... brown)stringify_funcTr6  zcannot copy image file %r: %szlogo file %r does not exist)imagesr   r_   r   get_original_image_urir   r   r   	verbosityr#   srcdirr   	Exceptionr|   r}   r   r   rz   r   isfiler7  r   r   )rf   r:  srcdesterrr8  rg   rg   rh   r$    sJ   




zLaTeXBuilder.copy_image_filesc                 C  s   | j j}d|dddd|dddd|ddddd}| jd	 s-| jd
 r6d| j  |d< tt	ddd}t
|| j|t dd d S )Nz\@idenfigurer   z%s   tablez
code-block)addtocaptions
figurename	tablenameliteralblocknamer   r   z\addto\captions%srG  	templatesrW   zsphinxmessages.sty.jinjaT)r\   rendererr,  )rz   numfig_formatr   splitr\   r   r   r   r   r	   r   r   r%   )rf   formatsr\   r4  rg   rg   rh   r%    s$   
z"LaTeXBuilder.write_message_catalog)rY   rZ   )rY   ri   r[   )rk   rl   rm   rn   rY   rl   )rq   rl   rr   rl   rm   rn   rY   rl   )r]   r   rY   rZ   )r   r   rY   rZ   )r  rl   rY   rl   )r   rl   r   rl   r   r   rY   rZ   )r  rl   r  r  r   r  rY   r  )#__name__
__module____qualname____doc__r   formatr   epilogr1  supported_image_typessupported_remote_imagesr&   default_translator_classra   rj   rp   rs   r   rb   r   rc   rd   r   r   r   r  r   r   r   r&  r   r   r   r$  r%  rg   rg   rg   rh   rV   n   sF    





!

	
3



8



2

$

$rV   r_   r,   rz   r   rY   rZ   c                 C  s<   t |jD ]}|tvrtd}t|| |j| qd S )Nz3Unknown configure key: latex_elements[%r], ignored.)rt   r   r   r   r|   r}   popr_   rz   r   msgrg   rg   rh   validate_config_values  s   r\  c                 C  s>   t |jD ]}|tjvrtd}t|| |j| qd S )Nz7Unknown theme option: latex_theme_options[%r], ignored.)rt   latex_theme_optionsr   UPDATABLE_KEYSr   r|   r}   rY  rZ  rg   rg   rh   validate_latex_theme_options$  s   
r_  c                 C  s2   | j jdkr| j jdv r| jddd dS dS dS )zInstall packages for Japanese.ja)platexuplatex	pxjahyperT)after_hyperrefN)rz   r   r   add_latex_packager_   rg   rg   rh   install_packages_for_ja,  s   rg  rl   c                 C  s0   | j dkrdS | j drdS | j dkrdS dS )z<Better default latex_engine settings for specific languages.r`  rb  zhxelatexrU   r   )r   r  rz   rg   rg   rh   default_latex_engine2  s   

rk  dict[str, str]c                 C  s,   | j dkr| jdkrdddS dddS i S )z>Better default latex_docclass settings for specific languages.r`  rb  ujbookujreport)manualr   jsbookjreport)r   r   rj  rg   rg   rh   default_latex_docclass=  s
   



rr  r  c                 C  s
   | j dv S )z=Better default latex_use_xindy settings for specific engines.>   ri  lualatex)r   rj  rg   rg   rh   default_latex_use_xindyH  s   
rt  $list[tuple[str, str, str, str, str]]c                 C  sJ   t | j| j}t | j| j}| jt| jd t |t || jfgS )z(Better default latex_documents settings.z.tex)	r   escapeprojectr   r   root_docr$   escape_abbrlatex_theme)rz   rw  r   rg   rg   rh   default_latex_documentsM  s   r{  r-   c                 C  sj  |  d | t | jdtdd | jdtdd | dt | dtdt	dd	d
dd | dt
d | dd dt | dg d | ddd | dtdt | dd dt	d ddd | jdddtthd | ddd | ddd | di d | dg d | dd d!gdt | d"d#dt | d$i d | d%g dt | d&td d'ddd(S ))Nz sphinx.builders.latex.transformszconfig-initedi   )priorityzbuilder-initedr   r   r   ri  rs  ra  rb  r{   r   r   latex_use_latex_multicolumnFr   latex_toplevel_sectioningpartchapterr  latex_domain_indicesT)typeslatex_show_urlsrA   latex_show_pagerefsr   r   r   r   r   rz  ro  r]  latex_theme_pathlatex_docclassbuiltin)versionparallel_read_safeparallel_write_safe)setup_extensionadd_builderrV   connectr\  r_  rg  add_config_valuerk  r   r{  rl   rt  r  setrt   rr  rf  rg   rg   rh   setup\  sB   

r  )r_   r,   rz   r   rY   rZ   )r_   r,   rY   rZ   )rz   r   rY   rl   )rz   r   rY   rl  )rz   r   rY   r  )rz   r   rY   ru  )r_   r,   rY   r-   )YrS  
__future__r   r1  r   r   typingr   r   docutils.frontendr   sphinx.builders.latex.nodessphinxr   r   r	   sphinx.buildersr
   sphinx.builders.latex.constantsr   r   r   sphinx.builders.latex.themingr   r   sphinx.builders.latex.utilr   sphinx.configr   r   !sphinx.environment.adapters.assetr   sphinx.errorsr   r   sphinx.localer   r   sphinx.utilr   r   sphinx.util.consoler   sphinx.util.displayr   r   sphinx.util.docutilsr   r   sphinx.util.fileutilr   sphinx.util.i18nr    sphinx.util.nodesr!   sphinx.util.osutilr"   r#   r$   sphinx.util.templater%   sphinx.writers.latexr&   r'   docutilsr(   collections.abcr)   r*   docutils.nodesr+   sphinx.applicationr,   sphinx.util.typingr-   r/  r0  	getLoggerrP  r|   rV   r\  r_  rg  rk  rr  rt  r{  r  rg   rg   rg   rh   <module>   s    	
 !"#$%&)*+,9
   
1





