summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2018-10-07 15:16:35 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2019-01-04 23:06:34 +0900
commit45d04703fe13aab6a5890d6a40ed23e8835350e1 (patch)
tree24008902a1bd0f11801e81cc4fe53c7acec381fc
parent2b1512749a2532f5e8bc7909ca70ce6395f169fd (diff)
downloadsphinx-git-45d04703fe13aab6a5890d6a40ed23e8835350e1.tar.gz
latex: Move ExtBabel to sphinx.builders.latex.util package
-rw-r--r--CHANGES1
-rw-r--r--doc/extdev/index.rst5
-rw-r--r--sphinx/builders/latex/compat.py11
-rw-r--r--sphinx/builders/latex/util.py68
-rw-r--r--sphinx/writers/latex.py56
5 files changed, 85 insertions, 56 deletions
diff --git a/CHANGES b/CHANGES
index 71ef31bb3..fb3b9450a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -100,6 +100,7 @@ Deprecated
* ``sphinx.util.PeekableIterator``
* ``sphinx.util.pycompat.UnicodeMixin``
* ``sphinx.util.pycompat.u``
+* ``sphinx.writers.latex.ExtBabel``
* ``sphinx.writers.latex.LaTeXTranslator._make_visit_admonition()``
* ``sphinx.writers.latex.LaTeXTranslator.babel_defmacro()``
* ``sphinx.writers.latex.LaTeXTranslator.collect_footnotes()``
diff --git a/doc/extdev/index.rst b/doc/extdev/index.rst
index d01221137..795d0610c 100644
--- a/doc/extdev/index.rst
+++ b/doc/extdev/index.rst
@@ -394,6 +394,11 @@ The following is a list of deprecated interfaces.
- 4.0
- ``IndexBuilder.feed(docname, filename, title, doctree)``
+ * - ``sphinx.writers.latex.ExtBabel``
+ - 2.0
+ - 4.0
+ - ``sphinx.builders.latex.util.ExtBabel``
+
* - ``sphinx.writers.latex.LaTeXTranslator.babel_defmacro()``
- 2.0
- 4.0
diff --git a/sphinx/builders/latex/compat.py b/sphinx/builders/latex/compat.py
index d527e7688..bf78e27bb 100644
--- a/sphinx/builders/latex/compat.py
+++ b/sphinx/builders/latex/compat.py
@@ -11,7 +11,10 @@
"""
from sphinx.builders.latex.transforms import URI_SCHEMES, ShowUrlsTransform
-from sphinx.deprecation import RemovedInSphinx30Warning, deprecated_alias
+from sphinx.builders.latex.util import ExtBabel
+from sphinx.deprecation import (
+ RemovedInSphinx30Warning, RemovedInSphinx40Warning, deprecated_alias
+)
deprecated_alias('sphinx.writers.latex',
@@ -20,3 +23,9 @@ deprecated_alias('sphinx.writers.latex',
'URI_SCHEMES': URI_SCHEMES,
},
RemovedInSphinx30Warning)
+
+deprecated_alias('sphinx.writers.latex',
+ {
+ 'ExtBabel': ExtBabel,
+ },
+ RemovedInSphinx40Warning)
diff --git a/sphinx/builders/latex/util.py b/sphinx/builders/latex/util.py
new file mode 100644
index 000000000..156ea89ad
--- /dev/null
+++ b/sphinx/builders/latex/util.py
@@ -0,0 +1,68 @@
+"""
+ sphinx.builders.latex.util
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Utilities for LaTeX builder.
+
+ :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+import warnings
+
+from docutils.writers.latex2e import Babel
+
+from sphinx.deprecation import RemovedInSphinx30Warning
+
+
+class ExtBabel(Babel):
+ cyrillic_languages = ('bulgarian', 'kazakh', 'mongolian', 'russian', 'ukrainian')
+
+ def __init__(self, language_code, use_polyglossia=False):
+ # type: (str, bool) -> None
+ self.language_code = language_code
+ self.use_polyglossia = use_polyglossia
+ self.supported = True
+ super().__init__(language_code or '')
+
+ def get_shorthandoff(self):
+ # type: () -> str
+ warnings.warn('ExtBabel.get_shorthandoff() is deprecated.',
+ RemovedInSphinx30Warning, stacklevel=2)
+ from sphinx.writers.latex import SHORTHANDOFF
+ return SHORTHANDOFF
+
+ def uses_cyrillic(self):
+ # type: () -> bool
+ return self.language in self.cyrillic_languages
+
+ def is_supported_language(self):
+ # type: () -> bool
+ return self.supported
+
+ def language_name(self, language_code):
+ # type: (str) -> str
+ language = super().language_name(language_code)
+ if language == 'ngerman' and self.use_polyglossia:
+ # polyglossia calls new orthography (Neue Rechtschreibung) as
+ # german (with new spelling option).
+ return 'german'
+ elif not language:
+ self.supported = False
+ return 'english' # fallback to english
+ else:
+ return language
+
+ def get_mainlanguage_options(self):
+ # type: () -> str
+ """Return options for polyglossia's ``\\setmainlanguage``."""
+ if self.use_polyglossia is False:
+ return None
+ elif self.language == 'german':
+ language = super().language_name(self.language_code)
+ if language == 'ngerman':
+ return 'spelling=new'
+ else:
+ return 'spelling=old'
+ else:
+ return None
diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py
index 08d7e188f..210ceaa94 100644
--- a/sphinx/writers/latex.py
+++ b/sphinx/writers/latex.py
@@ -19,7 +19,6 @@ from os import path
from typing import Iterable, cast
from docutils import nodes, writers
-from docutils.writers.latex2e import Babel
from sphinx import addnodes
from sphinx import highlighting
@@ -259,58 +258,6 @@ class LaTeXWriter(writers.Writer):
# Helper classes
-class ExtBabel(Babel):
- cyrillic_languages = ('bulgarian', 'kazakh', 'mongolian', 'russian', 'ukrainian')
-
- def __init__(self, language_code, use_polyglossia=False):
- # type: (str, bool) -> None
- self.language_code = language_code
- self.use_polyglossia = use_polyglossia
- self.supported = True
- super().__init__(language_code or '')
-
- def get_shorthandoff(self):
- # type: () -> str
- warnings.warn('ExtBabel.get_shorthandoff() is deprecated.',
- RemovedInSphinx30Warning, stacklevel=2)
- return SHORTHANDOFF
-
- def uses_cyrillic(self):
- # type: () -> bool
- return self.language in self.cyrillic_languages
-
- def is_supported_language(self):
- # type: () -> bool
- return self.supported
-
- def language_name(self, language_code):
- # type: (str) -> str
- language = super().language_name(language_code)
- if language == 'ngerman' and self.use_polyglossia:
- # polyglossia calls new orthography (Neue Rechtschreibung) as
- # german (with new spelling option).
- return 'german'
- elif not language:
- self.supported = False
- return 'english' # fallback to english
- else:
- return language
-
- def get_mainlanguage_options(self):
- # type: () -> str
- """Return options for polyglossia's ``\\setmainlanguage``."""
- if self.use_polyglossia is False:
- return None
- elif self.language == 'german':
- language = super().language_name(self.language_code)
- if language == 'ngerman':
- return 'spelling=new'
- else:
- return 'spelling=old'
- else:
- return None
-
-
class Table:
"""A table data"""
@@ -586,8 +533,7 @@ class LaTeXTranslator(SphinxTranslator):
'\\sffamily}\n\\ChTitleVar{\\Large'
'\\normalfont\\sffamily}')
- self.babel = ExtBabel(self.config.language,
- not self.elements['babel'])
+ self.babel = self.builder.babel
if self.config.language and not self.babel.is_supported_language():
# emit warning if specified language is invalid
# (only emitting, nothing changed to processing)