summaryrefslogtreecommitdiff
path: root/sphinx/builders/latex/util.py
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 /sphinx/builders/latex/util.py
parent2b1512749a2532f5e8bc7909ca70ce6395f169fd (diff)
downloadsphinx-git-45d04703fe13aab6a5890d6a40ed23e8835350e1.tar.gz
latex: Move ExtBabel to sphinx.builders.latex.util package
Diffstat (limited to 'sphinx/builders/latex/util.py')
-rw-r--r--sphinx/builders/latex/util.py68
1 files changed, 68 insertions, 0 deletions
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