o
    i)                     @  sr   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 dej
Z
G d	d
 d
ejZG dd dejZdS )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                	   @  sf   e Zd ZdZdZ	 dZdZdZdZe	j
ejjdde d	ged
dfddgdedfdZdddZdS )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_preamblereturnNonec                 C  s&   t j|  | jddi t| _d S )Nfontencoding )r   r   __init__settings_defaultsupdateXeLaTeXTranslatortranslator_class)self r   e/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/docutils/writers/xetex/__init__.pyr   @   s   
zWriter.__init__Nr   r   )__name__
__module____qualname____doc__	supporteddefault_templatedefault_preambleconfig_sectionconfig_section_dependenciesr   filter_settings_specr   r   settings_specr   r   r   r   r   r       s.    r   c                   @  s   e Zd ZdZejj Zei dddddddd	d
ddddddddddddddddddddddd  d!d" e	 D Zd#D ]Z
ee
 = qLd$Zd,d'd(Zd)d* Zd+S )-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
vietnamesec                 C  s   i | ]	\}}|  |qS r   )lower).0kvr   r   r   
<dictcomp>b   s    zBabel.<dictcomp>)
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)r   r   c                 C  s:   || _ || _| || _i | _d| _d| _d| _d| _d S )Nz+Language "%s" not supported by Polyglossia.r   )"rN   rN   )	language_codereporterlanguage_namelanguageotherlanguageswarn_msgquote_indexquotesliteral_double_quote)r   rO   rP   r   r   r   r   u   s   
zBabel.__init__c                 C  s<   dd| j  g}| jr|ddt| j   d|S )Nz\usepackage{polyglossia}z\setdefaultlanguage{%s}z\setotherlanguages{%s},
)rR   rS   appendjoinsortedkeys)r   setupr   r   r   __call__   s   
zBabel.__call__Nr    )r!   r"   r#   r$   r   r,   language_codescopyr   itemskeyrH   rT   r   r_   r   r   r   r   r,   F   sT    	

r,   c                      s.   e Zd ZdZdddZdd fd	d
Z  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.
    r   r   c                 C  sF   d| _ tj| |t | jdkr| jdd  d S d| j | jd< d S )NTutf8	_inputencz\XeTeXinputencoding %s )is_xetexr   LaTeXTranslatorr   r,   latex_encodingrequirementspop)r   documentr   r   r   r      s   
zXeLaTeXTranslator.__init__N
length_strstrc                   sD   t  ||}|dr | jstj| jd< d| jd< |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   rl   node	__class__r   r   rq      s   

z!XeLaTeXTranslator.to_latex_lengthr    )N)rl   rm   r   rm   )r!   r"   r#   r$   r   rq   __classcell__r   r   rx   r   r      s    
	r   N)r$   
__future__r   __docformat__docutilsr   docutils.writersr   docutils.writers.latex2er   r   r,   rg   r   r   r   r   r   <module>   s   &D