o ×$•a$ã@sªdZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z dd lmZe e¡ZGd d „d ƒZGd d „d eƒZGdd„deƒZGdd„dƒZdS)zß sphinx.builders.latex.theming ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Theming support for LaTeX builder. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. éN)Úpath)ÚDict)ÚSphinx)ÚConfig)Ú ThemeError)Ú__)Úloggingc@sDeZdZdZddgZddgZdeddfdd„Zd eddfd d „Z dS) ÚThemezA set of LaTeX configurations.Ú papersizeÚ pointsizeÚnameÚreturnNcCs(||_||_||_d|_d|_d|_dS)NÚ letterpaperÚ10ptÚchapter)r ÚdocclassÚ wrapperclassr r Útoplevel_sectioning)Úselfr ©rú?/usr/lib/python3/dist-packages/sphinx/builders/latex/theming.pyÚ__init__s  zTheme.__init__ÚconfigcCs^|jD]}|j |¡r|j|}t|||ƒq|jD]}||jvr,|j|}t|||ƒqdS)z0Override theme settings by user's configuration.N)ÚLATEX_ELEMENTS_KEYSÚlatex_elementsÚgetÚsetattrÚUPDATABLE_KEYSÚlatex_theme_options)rrÚkeyÚvaluerrrÚupdate&s    €    €ýz Theme.update) Ú__name__Ú __module__Ú __qualname__Ú__doc__rrÚstrrrr!rrrrr s r cs.eZdZdZdededdf‡fdd„ Z‡ZS)Ú BuiltInThemezA built-in LaTeX theme.r rr Ncsxtƒ |¡|dkr|j dd¡|_n|j dd¡|_|dvr%d||_n||_|dkr7|j d¡s7d|_dSd |_dS) NÚhowtoÚarticleÚmanualÚreport)r*r(ÚsphinxÚjÚsectionr)ÚsuperrÚlatex_docclassrrrÚ startswithr)rr r©Ú __class__rrr6s    zBuiltInTheme.__init__)r"r#r$r%r&rrÚ __classcell__rrr2rr'3s"r'cs>eZdZdZddgZgd¢Zdededdf‡fd d „ Z‡ZS) Ú UserThemezA user defined LaTeX theme.rr)r r rr Úfilenamer Nc sôtƒ |¡t ¡|_|j t |¡¡|jD]A}z|j  d|¡}t |||ƒWqtj y>}z t t dƒ|ƒ|‚d}~wtjyX}zt t dƒ||jdfƒ|‚d}~ww|jD]}z|j  d|¡}t |||ƒWq\tjywYq\wdS)NÚthemez%r doesn't have "theme" settingz%r doesn't have "%s" settingr)r/rÚ configparserÚRawConfigParserrÚreadrÚjoinÚREQUIRED_CONFIG_KEYSrrÚNoSectionErrorrrÚ NoOptionErrorÚargsÚOPTIONAL_CONFIG_KEYS)rr r6rr Úexcr2rrrQs<   ÿÿ€ ÿÿ€ÿ ÿüzUserTheme.__init__) r"r#r$r%r<r@r&rr4rrr2rr5Ks "r5c@sXeZdZdZdeddfdd„Zdeddfdd „Zd ede fd d „Z d ede fd d„Z dS)Ú ThemeFactoryz!A factory class for LaTeX Themes.Úappr Ncs6i|_‡fdd„ˆjjDƒ|_ˆj|_| ˆj¡dS)Ncsg|] }t ˆj|¡‘qSr)rr;Úsrcdir)Ú.0Úp©rCrrÚ nsz)ThemeFactory.__init__..)ÚthemesrÚlatex_theme_pathÚ theme_pathsÚload_builtin_themes)rrCrrGrrlszThemeFactory.__init__rcCs$td|ƒ|jd<td|ƒ|jd<dS)zLoad built-in themes.r*r(N)r'rI)rrrrrrLrsz ThemeFactory.load_builtin_themesr cCs<||jvr |j|}n | |¡}|st|ƒ}| |j¡|S)zGet a theme for given *name*.)rIÚfind_user_themer r!r)rr r7rrrrws    zThemeFactory.getc Csh|jD].}t ||d¡}t |¡r1zt||ƒWSty0}z t |¡WYd}~qd}~wwqdS)z3Find a theme named as *name* from latex_theme_path.z theme.confN)rKrr;Úisfiler5rÚloggerÚwarning)rr Ú theme_pathÚ config_pathrArrrrMƒs  €ÿýzThemeFactory.find_user_theme) r"r#r$r%rrrrLr&r rrMrrrrrBis  rB)r%r8ÚosrÚtypingrÚsphinx.applicationrÚ sphinx.configrÚ sphinx.errorsrÚ sphinx.localerÚ sphinx.utilrÚ getLoggerr"rOr r'r5rBrrrrÚs