summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortk0miya <i.tkomiya@gmail.com>2014-09-28 21:56:20 +0900
committertk0miya <i.tkomiya@gmail.com>2014-09-28 21:56:20 +0900
commit23335820f4ff980f6237b8d55ce7b38652dd2508 (patch)
treead8ad174926f6b6e20c0ee14aff735e574128dc3
parentae1f88bf42ff611d6d84a0688578ee9e050a73c8 (diff)
parent47ad9d8fa859fce189ac89c6edbb0e41d9de09ba (diff)
downloadsphinx-23335820f4ff980f6237b8d55ce7b38652dd2508.tar.gz
Merge with default
-rw-r--r--doc/extdev/appapi.rst8
-rw-r--r--sphinx/application.py4
-rw-r--r--sphinx/writers/latex.py7
-rw-r--r--tests/test_build_latex.py2
4 files changed, 17 insertions, 4 deletions
diff --git a/doc/extdev/appapi.rst b/doc/extdev/appapi.rst
index 35d226a5..d0d49286 100644
--- a/doc/extdev/appapi.rst
+++ b/doc/extdev/appapi.rst
@@ -288,9 +288,15 @@ package.
.. versionadded:: 1.0
-.. method:: Sphinx.add_latex_package(packagename)
+.. method:: Sphinx.add_latex_package(packagename, options=None)
Add *packagename* to the list of packages that LaTeX source code will include.
+ If you provide *options*, it will be taken to `\usepackage` declaration.
+
+ .. code-block:: python
+
+ app.add_latex_package('mypackage') # => \usepackage{mypackage}
+ app.add_latex_package('mypackage', 'foo,bar') # => \usepackage[foo,bar]{mypackage}
.. versionadded:: 1.3
diff --git a/sphinx/application.py b/sphinx/application.py
index 37db1f00..630bff36 100644
--- a/sphinx/application.py
+++ b/sphinx/application.py
@@ -694,10 +694,10 @@ class Sphinx(object):
StandaloneHTMLBuilder.css_files.append(
posixpath.join('_static', filename))
- def add_latex_package(self, packagename):
+ def add_latex_package(self, packagename, options=None):
self.debug('[app] adding latex package: %r', packagename)
from sphinx.builders.latex import LaTeXBuilder
- LaTeXBuilder.usepackages.append(packagename)
+ LaTeXBuilder.usepackages.append((packagename, options))
def add_lexer(self, alias, lexer):
self.debug('[app] adding lexer: %r', (alias, lexer))
diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py
index 408c5fff..ea79761f 100644
--- a/sphinx/writers/latex.py
+++ b/sphinx/writers/latex.py
@@ -237,7 +237,12 @@ class LaTeXTranslator(nodes.NodeVisitor):
else:
self.elements['classoptions'] += ',english'
if getattr(builder, 'usepackages', None):
- usepackages = ('\\usepackage{%s}' % p for p in builder.usepackages)
+ def declare_package(packagename, options=None):
+ if options:
+ return '\\usepackage[%s]{%s}' % (options, packagename)
+ else:
+ return '\\usepackage{%s}' % (packagename,)
+ usepackages = (declare_package(*p) for p in builder.usepackages)
self.elements['usepackages'] += "\n".join(usepackages)
# allow the user to override them all
self.elements.update(builder.config.latex_elements)
diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py
index ae347a8e..374b54a2 100644
--- a/tests/test_build_latex.py
+++ b/tests/test_build_latex.py
@@ -96,6 +96,8 @@ def test_latex(app, status, warning):
@with_app(buildername='latex')
def test_latex_add_latex_package(app, status, warning):
app.add_latex_package('foo')
+ app.add_latex_package('bar', 'baz')
app.builder.build_all()
result = (app.outdir / 'SphinxTests.tex').text(encoding='utf8')
assert '\\usepackage{foo}' in result
+ assert '\\usepackage[baz]{bar}' in result