
    Ki)                        d Z ddlmZ dZddlmZ ddlmZ ddlm	Z	  G d dej                        Z
 G d	 d
ej                        Z G d dej                        Zy)z
XeLaTeX document tree Writer.

A variant of Docutils' standard 'latex2e' writer producing LaTeX output
suited for processing with the Unicode-aware TeX engines
LuaTeX and XeTeX.
    )annotationsreStructuredText)frontend)latex2e)PreambleCmdsc            
          e Zd ZdZdZ	 dZdZdZdZ e	j                  ej                  j                  ddez  d	ged
dfddgdedf      ZddZy)Writerz9A writer for Unicode-aware LaTeX variants (XeTeX, LuaTeX))latextexxetexxelatexluatexlualatexzxelatex.texz% Linux Libertine (free, wide coverage, not only for Linux)
\setmainfont{Linux Libertine O}
\setsansfont{Linux Biolinum O}
\setmonofont[HyphenChar=None,Scale=MatchLowercase]{DejaVu Sans Mono}zxetex writer)writerszlatex writersfont_encodingzTemplate file. Default: "%s".z
--templatez<file>)defaultmetavarzUCustomization by LaTeX code in the preamble. Default: select "Linux Libertine" fonts.z--latex-preamblez
<preamble>)r   r   )templatelatex_preamblec                    t         j                  j                  |        | j                  j	                  ddi       t
        | _        y )Nfontencoding )r   r	   __init__settings_defaultsupdateXeLaTeXTranslatortranslator_class)selfs    k/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/docutils/writers/xetex/__init__.pyr   zWriter.__init__@   s5    %%%~r&:; 1    NreturnNone)__name__
__module____qualname____doc__	supporteddefault_templatedefault_preambleconfig_sectionconfig_section_dependenciesr   filter_settings_specr   r	   settings_specr    r    r   r	   r	       s    CJI'$I $N"> 2H11$$14DD..8DFC+,$0$467
M2r    r	   c                     e Zd ZdZej
                  j                  j                         Zej                  i dddddddd	d
ddddddddddddddddddddddd        ej                         D  ci c]  \  }}|j                         | c}}} Zd!D ]  Zeej                         =  d"Zd&d#Zd$ Zy%c c}}} w )'Babelz`Language specifics for XeTeX.

    Use `polyglossia` instead of `babel` and adapt settings.
    copcopticdegermanzde-1901ogermandvdivehidsblsorbianz
el-polyton	polygreekfafarsigrcancientgreekkokoreanhsbusorbianzsh-Cyrlserbianzsh-Latncroatiansqalbaniansrththaivi
vietnamese)
afzde-ATz
de-AT-1901zen-CAzen-GBzen-NZzen-USzfr-CAz
grc-ibycuszsr-Latnz2Language "%s" not supported by LaTeX (polyglossia)c                    || _         || _        | j                  |      | _        i | _        d| _        d| _        d| _        d| _        y )Nz+Language "%s" not supported by Polyglossia.r   )"rO   rO   )	language_codereporterlanguage_namelanguageotherlanguageswarn_msgquote_indexquotesliteral_double_quote)r   rP   rQ   s      r   r   zBabel.__init__u   sK    * **=9 E  %(!r    c           	         dd| j                   z  g}| j                  rD|j                  ddj                  t	        | j                  j                                     z         dj                  |      S )Nz\usepackage{polyglossia}z\setdefaultlanguage{%s}z\setotherlanguages{%s},
)rS   rT   appendjoinsortedkeys)r   setups     r   __call__zBabel.__call__   sf    ,+dmm;=LL2&)<)<)A)A)C"DEF Gyyr    Nr!   )r$   r%   r&   r'   r   r1   language_codescopyr   itemslowerkeyrU   r   ra   ).0kvs   000r   r1   r1   F   sW    ]]11668N 
h
 	h
 	i	

 	h
 	j
 	k
 	g
 	n
 	h
 	j
 	i
 	j
 	j
 	i
  	f!
" 	l#
 * 0>/C/C/EFFtq!aggilFN ( 399;'( DH
( ? Gs    Cr1   c                  .     e Zd ZdZddZdd fdZ xZS )r   z
    Generate code for LaTeX using Unicode fonts (XeLaTex or LuaLaTeX).

    See the docstring of docutils.writers._html_base.HTMLTranslator for
    notes on and examples of safe subclassing.
    c                    d| _         t        j                  j                  | |t               | j
                  dk(  r| j                  j                  dd        y d| j
                  z  | j                  d<   y )NTutf8	_inputencz\XeTeXinputencoding %s )is_xetexr   LaTeXTranslatorr   r1   latex_encodingrequirementspop)r   documents     r   r   zXeLaTeXTranslator.__init__   sd    ((x?&(!!+t4.H040C0C/DDk*r    c                    t         |   ||      }|j                  d      rJ| j                  st        j
                  | j                  d<   d| j                  d<   |j                  dd      S |S )a  Convert "measure" `length_str` to LaTeX length specification.

        XeTeX does not know the length unit px.
        Use ``\pdfpxdimen``, the macro holding the value of 1 px in pdfTeX.
        This way, configuring works the same for pdftex and xetex.
        px_providelengthz#
\DUprovidelength{\pdfpxdimen}{1bp}z\pdfpxdimen)superto_latex_lengthendswithfallback_stylesheetr   providelength	fallbacksreplace)r   
length_strnode	__class__s      r   rx   z!XeLaTeXTranslator.to_latex_length   si     W,Z>
t$++3?3M3M/0#KDNN4 %%dN;;r    r!   )N)r~   strr"   r   )r$   r%   r&   r'   r   rx   __classcell__)r   s   @r   r   r      s    E r    r   N)r'   
__future__r   __docformat__docutilsr   docutils.writersr   docutils.writers.latex2er   r	   r1   ro   r   r/   r    r   <module>r      sS    #"  $ 1#2W^^ #2LA GMM A H// r    