Merge pull request #3083 from jfbu/add_to_new_default_latex_settings

Add to new default latex settings
This commit is contained in:
Jean-François B 2016-11-04 21:59:30 +01:00 committed by GitHub
commit 7325f8fe8c

View File

@ -60,7 +60,7 @@ DEFAULT_SETTINGS = {
'{geometry}', '{geometry}',
'inputenc': '', 'inputenc': '',
'utf8extra': ('\\ifdefined\\DeclareUnicodeCharacter\n' 'utf8extra': ('\\ifdefined\\DeclareUnicodeCharacter\n'
' \\DeclareUnicodeCharacter{00A0}{\\nobreakspace}\n' ' \\DeclareUnicodeCharacter{00A0}{\\leavevmode\\nobreak\\ }\n'
'\\fi'), '\\fi'),
'cmappkg': '\\usepackage{cmap}', 'cmappkg': '\\usepackage{cmap}',
'fontenc': '\\usepackage[T1]{fontenc}', 'fontenc': '\\usepackage[T1]{fontenc}',
@ -105,6 +105,8 @@ ADDITIONAL_SETTINGS = {
'inputenc': '\\usepackage[utf8]{inputenc}', 'inputenc': '\\usepackage[utf8]{inputenc}',
}, },
'xelatex': { 'xelatex': {
'utf8extra': ('\\catcode`^^^^00a0\\active\\protected\\def^^^^00a0'
'{\\leavevmode\\nobreak\\ }'),
'polyglossia': '\\usepackage{polyglossia}', 'polyglossia': '\\usepackage{polyglossia}',
'fontenc': '\\usepackage{fontspec}', 'fontenc': '\\usepackage{fontspec}',
'fontpkg': '', 'fontpkg': '',
@ -384,20 +386,31 @@ class LaTeXTranslator(nodes.NodeVisitor):
# no need for \\noindent here, used in flushright # no need for \\noindent here, used in flushright
self.elements['logo'] = '\\sphinxincludegraphics{%s}\\par' % \ self.elements['logo'] = '\\sphinxincludegraphics{%s}\\par' % \
path.basename(builder.config.latex_logo) path.basename(builder.config.latex_logo)
# setup multilingual package
if builder.config.language:
# use Sonny style if any language specified
self.elements['fncychap'] = '\\usepackage[Sonny]{fncychap}'
self.babel = ExtBabel(builder.config.language) self.babel = ExtBabel(builder.config.language)
if builder.config.language and not self.babel.is_supported_language():
# emit warning if specified language is invalid
# (only emitting, nothing changed to processing)
self.builder.warn('no Babel option known for language %r' %
builder.config.language)
# simply use babel.get_language() always, as get_language() returns
# 'english' even if language is invalid or empty
self.elements['classoptions'] += ',' + self.babel.get_language()
# set up multilingual module...
if self.elements['polyglossia']: if self.elements['polyglossia']:
self.elements['babel'] = '' # disable babel forcely self.elements['babel'] = '' # disable babel
self.elements['multilingual'] = self.elements['polyglossia'] self.elements['multilingual'] = '%s\n\\setmainlanguage{%s}' % \
(self.elements['polyglossia'], self.babel.get_language())
elif self.elements['babel']: elif self.elements['babel']:
self.elements['multilingual'] = self.elements['babel'] self.elements['multilingual'] = self.elements['babel']
self.elements['classoptions'] += ',' + self.babel.get_language()
if builder.config.language: if builder.config.language:
if not self.babel.is_supported_language():
self.builder.warn('no Babel option known for language %r' %
builder.config.language)
self.elements['shorthandoff'] = self.babel.get_shorthandoff() self.elements['shorthandoff'] = self.babel.get_shorthandoff()
self.elements['fncychap'] = '\\usepackage[Sonny]{fncychap}'
# Times fonts don't work with Cyrillic languages # Times fonts don't work with Cyrillic languages
if self.babel.uses_cyrillic(): if self.babel.uses_cyrillic():
@ -412,6 +425,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
self.elements['multilingual'] = '' self.elements['multilingual'] = ''
# disable fncychap in Japanese documents # disable fncychap in Japanese documents
self.elements['fncychap'] = '' self.elements['fncychap'] = ''
if getattr(builder, 'usepackages', None): if getattr(builder, 'usepackages', None):
def declare_package(packagename, options=None): def declare_package(packagename, options=None):
if options: if options: