mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2026-09-03 20:52:55 -05:00
refactor multilingual (load user settings on top)
This commit is contained in:
+16
-22
@@ -109,6 +109,7 @@ ADDITIONAL_SETTINGS = {
|
||||
'xelatex': {
|
||||
'latex_engine': 'xelatex',
|
||||
'polyglossia': '\\usepackage{polyglossia}',
|
||||
'babel': '',
|
||||
'fontenc': '\\usepackage{fontspec}',
|
||||
'fontpkg': '',
|
||||
'utf8extra': ('\\catcode`^^^^00a0\\active\\protected\\def^^^^00a0'
|
||||
@@ -372,6 +373,11 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
# sort out some elements
|
||||
self.elements = DEFAULT_SETTINGS.copy()
|
||||
self.elements.update(ADDITIONAL_SETTINGS.get(builder.config.latex_engine, {}))
|
||||
# allow the user to override them all
|
||||
self.check_latex_elements()
|
||||
self.elements.update(builder.config.latex_elements)
|
||||
|
||||
# but some have other interface in config file
|
||||
self.elements.update({
|
||||
'wrapperclass': self.format_docclass(document.settings.docclass),
|
||||
# if empty, the title is set to the first section title
|
||||
@@ -398,7 +404,8 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
self.elements['logo'] = '\\sphinxincludegraphics{%s}\\par' % \
|
||||
path.basename(builder.config.latex_logo)
|
||||
|
||||
if builder.config.language:
|
||||
if builder.config.language \
|
||||
and 'fncychap' not in builder.config.latex_elements:
|
||||
# use Sonny style if any language specified
|
||||
self.elements['fncychap'] = '\\usepackage[Sonny]{fncychap}'
|
||||
|
||||
@@ -414,17 +421,16 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
self.elements['classoptions'] += ',' + self.babel.get_language()
|
||||
|
||||
# set up multilingual module...
|
||||
if self.elements['polyglossia']:
|
||||
self.elements['babel'] = '' # disable babel
|
||||
self.elements['multilingual'] = '%s\n\\setmainlanguage{%s}' % \
|
||||
(self.elements['polyglossia'], self.babel.get_language())
|
||||
elif self.elements['babel']:
|
||||
# 'babel' key is public and user setting must be obeyed
|
||||
if self.elements['babel']:
|
||||
# this branch is not taken for xelatex with writer default settings
|
||||
self.elements['multilingual'] = self.elements['babel']
|
||||
if builder.config.language:
|
||||
self.elements['shorthandoff'] = self.babel.get_shorthandoff()
|
||||
|
||||
# Times fonts don't work with Cyrillic languages
|
||||
if self.babel.uses_cyrillic():
|
||||
if self.babel.uses_cyrillic() \
|
||||
and 'fontpkg' not in builder.config.latex_elements:
|
||||
self.elements['fontpkg'] = ''
|
||||
|
||||
# pTeX (Japanese TeX) for support
|
||||
@@ -436,12 +442,9 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
self.elements['multilingual'] = ''
|
||||
# disable fncychap in Japanese documents
|
||||
self.elements['fncychap'] = ''
|
||||
|
||||
# set 'babel' to improbable value to detect if user has used it
|
||||
if self.elements['babel']:
|
||||
self.elements['babel'] = '3.1415'
|
||||
else:
|
||||
self.elements['babel'] = '2.7182'
|
||||
elif self.elements['polyglossia']:
|
||||
self.elements['multilingual'] = '%s\n\\setmainlanguage{%s}' % \
|
||||
(self.elements['polyglossia'], self.babel.get_language())
|
||||
|
||||
if getattr(builder, 'usepackages', None):
|
||||
def declare_package(packagename, options=None):
|
||||
@@ -468,15 +471,6 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
if tocdepth >= SECNUMDEPTH:
|
||||
# Increase secnumdepth if tocdepth is depther than default SECNUMDEPTH
|
||||
self.elements['secnumdepth'] = '\\setcounter{secnumdepth}{%d}' % tocdepth
|
||||
# allow the user to override them all
|
||||
self.check_latex_elements()
|
||||
self.elements.update(builder.config.latex_elements)
|
||||
|
||||
if self.elements['babel'] != '3.1415':
|
||||
if self.elements['babel'] != '2.7182':
|
||||
self.elements['multilingual'] = self.elements['babel']
|
||||
else:
|
||||
self.elements['babel'] = ''
|
||||
|
||||
if getattr(document.settings, 'contentsname', None):
|
||||
self.elements['contentsname'] = \
|
||||
|
||||
Reference in New Issue
Block a user