diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2018-10-07 15:16:35 +0900 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2019-01-04 23:06:34 +0900 |
commit | 45d04703fe13aab6a5890d6a40ed23e8835350e1 (patch) | |
tree | 24008902a1bd0f11801e81cc4fe53c7acec381fc | |
parent | 2b1512749a2532f5e8bc7909ca70ce6395f169fd (diff) | |
download | sphinx-git-45d04703fe13aab6a5890d6a40ed23e8835350e1.tar.gz |
latex: Move ExtBabel to sphinx.builders.latex.util package
-rw-r--r-- | CHANGES | 1 | ||||
-rw-r--r-- | doc/extdev/index.rst | 5 | ||||
-rw-r--r-- | sphinx/builders/latex/compat.py | 11 | ||||
-rw-r--r-- | sphinx/builders/latex/util.py | 68 | ||||
-rw-r--r-- | sphinx/writers/latex.py | 56 |
5 files changed, 85 insertions, 56 deletions
@@ -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) |