refactor: latex: Initialize 'packages' on context

This commit is contained in:
Takeshi KOMIYA
2018-12-16 01:13:50 +09:00
parent a2ec232c71
commit f815b58df5
3 changed files with 14 additions and 14 deletions

View File

@@ -187,6 +187,9 @@ class LaTeXBuilder(Builder):
self.context['polyglossia'] = '' self.context['polyglossia'] = ''
self.context['babel'] = r'\usepackage{babel}' self.context['babel'] = r'\usepackage{babel}'
# Apply extension settings to context
self.context['packages'] = self.usepackages
# Apply user settings to context # Apply user settings to context
self.context.update(self.config.latex_elements) self.context.update(self.config.latex_elements)
self.context['release'] = self.config.release self.context['release'] = self.config.release

View File

@@ -35,7 +35,15 @@
<%= sphinxsetup %> <%= sphinxsetup %>
<%= fvset %> <%= fvset %>
<%= geometry %> <%= geometry %>
<%= usepackages %>
<%- for name, option in packages %>
<%- if option %>
\usepackage[<%= option %>]{<%= name %>}
<%- else %>
\usepackage{<%= name %>}
<%- endif %>
<%- endfor %>
<%= hyperref %> <%= hyperref %>
<%= contentsname %> <%= contentsname %>
<%= numfig_format %> <%= numfig_format %>

View File

@@ -150,7 +150,6 @@ DEFAULT_SETTINGS = {
'\\usepackage{hypcap}% it must be loaded after hyperref.\n' '\\usepackage{hypcap}% it must be loaded after hyperref.\n'
'% Set up styles of URL: it should be placed after hyperref.\n' '% Set up styles of URL: it should be placed after hyperref.\n'
'\\urlstyle{same}'), '\\urlstyle{same}'),
'usepackages': '',
'numfig_format': '', 'numfig_format': '',
'contentsname': '', 'contentsname': '',
'preamble': '', 'preamble': '',
@@ -168,7 +167,7 @@ DEFAULT_SETTINGS = {
'figure_align': 'htbp', 'figure_align': 'htbp',
'tocdepth': '', 'tocdepth': '',
'secnumdepth': '', 'secnumdepth': '',
} } # type: Dict[str, Any]
ADDITIONAL_SETTINGS = { ADDITIONAL_SETTINGS = {
'pdflatex': { 'pdflatex': {
@@ -218,7 +217,7 @@ ADDITIONAL_SETTINGS = {
'fncychap': '', 'fncychap': '',
'geometry': '\\usepackage[dvipdfm]{geometry}', 'geometry': '\\usepackage[dvipdfm]{geometry}',
}, },
} } # type: Dict[str, Dict[str, Any]]
EXTRA_RE = re.compile(r'^(.*\S)\s+\(([^()]*)\)\s*$') EXTRA_RE = re.compile(r'^(.*\S)\s+\(([^()]*)\)\s*$')
@@ -631,16 +630,6 @@ class LaTeXTranslator(SphinxTranslator):
self.elements['multilingual'] = '%s\n%s' % (self.elements['polyglossia'], self.elements['multilingual'] = '%s\n%s' % (self.elements['polyglossia'],
mainlanguage) mainlanguage)
if getattr(self.builder, 'usepackages', None):
def declare_package(packagename, options=None):
# type:(str, str) -> str
if options:
return '\\usepackage[%s]{%s}' % (options, packagename)
else:
return '\\usepackage{%s}' % (packagename,)
usepackages = (declare_package(*p) for p in self.builder.usepackages)
self.elements['usepackages'] += "\n".join(usepackages)
minsecnumdepth = self.secnumdepth # 2 from legacy sphinx manual/howto minsecnumdepth = self.secnumdepth # 2 from legacy sphinx manual/howto
if self.document.get('tocdepth'): if self.document.get('tocdepth'):
# reduce tocdepth if `part` or `chapter` is used for top_sectionlevel # reduce tocdepth if `part` or `chapter` is used for top_sectionlevel