mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
.. note:: $ find sphinx tests LICENSE doc/conf.py -type f -exec sed -i '' -e 's/2007\-20../2007-2021/' {} \; $ git co sphinx/locale/**/*.js sphinx/templates/epub3/mimetype
57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
"""
|
|
sphinx.builders.latex.util
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Utilities for LaTeX builder.
|
|
|
|
:copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
|
|
:license: BSD, see LICENSE for details.
|
|
"""
|
|
|
|
from typing import Optional
|
|
|
|
from docutils.writers.latex2e import Babel
|
|
|
|
|
|
class ExtBabel(Babel):
|
|
cyrillic_languages = ('bulgarian', 'kazakh', 'mongolian', 'russian', 'ukrainian')
|
|
|
|
def __init__(self, language_code: str, use_polyglossia: bool = False) -> None:
|
|
self.language_code = language_code
|
|
self.use_polyglossia = use_polyglossia
|
|
self.supported = True
|
|
super().__init__(language_code or '')
|
|
|
|
def uses_cyrillic(self) -> bool:
|
|
return self.language in self.cyrillic_languages
|
|
|
|
def is_supported_language(self) -> bool:
|
|
return self.supported
|
|
|
|
def language_name(self, language_code: 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 language:
|
|
return language
|
|
elif language_code.startswith('zh'):
|
|
return 'english' # fallback to english (behaves like supported)
|
|
else:
|
|
self.supported = False
|
|
return 'english' # fallback to english
|
|
|
|
def get_mainlanguage_options(self) -> Optional[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
|