Add `latex_use_xindy` new config variable for UTF-8 enabled indices

Fix: #5132
This commit is contained in:
jfbu 2018-06-30 19:51:37 +02:00
parent 1140e81df7
commit 0f5d5ac126
7 changed files with 69 additions and 5 deletions

View File

@ -44,6 +44,31 @@ if False:
from sphinx.config import Config # NOQA
XINDY_LANGUAGES = {
# currently only Latin scripts here, for use with -L option of texindy
# code, name
'hr': 'croatian',
'cs': 'czech',
'da': 'danish',
'en': 'english',
'et': 'estonian',
'fi': 'finnish',
'fr': 'french',
'de': 'german-din', # there is also german-duden
'hu': 'hungarian',
'it': 'italian',
'lv': 'latvian',
'lt': 'lithuanian',
'nb': 'norwegian',
'pl': 'polish',
'pt': 'portuguese',
'sk': 'slovak-small', # xindy recognizes slovak-small and slovak-large
'sl': 'slovenian',
'es': 'spanish-modern',
'sv': 'swedish',
'tr': 'turkish'
}
logger = logging.getLogger(__name__)
@ -232,7 +257,14 @@ class LaTeXBuilder(Builder):
self.copy_image_files()
# copy TeX support files from texinputs
context = {'latex_engine': self.config.latex_engine}
if self.config.language:
xindy_lang = \
XINDY_LANGUAGES.get(self.config.language[:2], 'general')
else:
xindy_lang = 'english'
context = {'latex_engine': self.config.latex_engine,
'latex_use_xindy': self.config.latex_use_xindy,
'xindy_lang': xindy_lang}
logger.info(bold(__('copying TeX support files...')))
staticdirname = path.join(package_dir, 'texinputs')
for filename in os.listdir(staticdirname):
@ -334,6 +366,7 @@ def setup(app):
app.add_config_value('latex_logo', None, None, string_classes)
app.add_config_value('latex_appendices', [], None)
app.add_config_value('latex_use_latex_multicolumn', False, None)
app.add_config_value('latex_use_xindy', False, None)
app.add_config_value('latex_toplevel_sectioning', None, None,
ENUM(None, 'part', 'chapter', 'section'))
app.add_config_value('latex_domain_indices', True, None, [list])

View File

@ -31,7 +31,7 @@
<%= hyperref %>
<%= contentsname %>
<%= numfig_format %>
<%= literalblockpto %>
<%= translatablestrings %>
<%= pageautorefname %>
<%= tocdepth %>
<%= secnumdepth %>

View File

@ -22,6 +22,12 @@ export LATEXOPTS =
# or on command line for faster builds.
{% endif -%}
LATEXMKOPTS =
{% if latex_use_xindy -%}
export XINDYOPTS = -L {{ xindy_lang }} -C utf8 -M python.xdy
{% if latex_engine == 'xelatex' or latex_engine == 'lualatex' -%}
export XINDYOPTS += -I xelatex
{% endif -%}
{% endif -%}
# format: pdf or dvi (used only by archive targets)
FMT = pdf

View File

@ -10,7 +10,11 @@ $pdflatex = 'xelatex ' . $ENV{'LATEXOPTS'} . ' %O %S';
{% endif -%}
$lualatex = 'lualatex ' . $ENV{'LATEXOPTS'} . ' %O %S';
$xelatex = 'xelatex --no-pdf ' . $ENV{'LATEXOPTS'} . ' %O %S';
{% if latex_use_xindy -%}
$makeindex = 'texindy ' . $ENV{'XINDYOPTS'} . ' -t %B.ilg %O -o %D %S';
{% else -%}
$makeindex = 'makeindex -s python.ist %O -o %D %S';
{% endif -%}
add_cus_dep( "glo", "gls", 0, "makeglo" );
sub makeglo {
return system( "makeindex -s gglo.ist -o '$_[0].gls' '$_[0].glo'" );

View File

@ -0,0 +1,16 @@
(markup-index :open "\begin{sphinxtheindex}
\providecommand\lettergroup[1]{{\Large\sffamily#1}\nopagebreak\vspace{1mm}}
\providecommand\lettergroupDefault[1]{{\Large\sffamily\sphinxsymbolsandnumbersname}\nopagebreak\vspace{1mm}}
"
:close "
\end{sphinxtheindex}
"
:tree)
;; End
;; Local Variables:
;; mode: lisp
;; End:

View File

@ -6,7 +6,7 @@
%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{sphinx}[2018/03/28 v1.8 LaTeX package (Sphinx markup)]
\ProvidesPackage{sphinx}[2018/06/30 v1.8 LaTeX package (Sphinx markup)]
% provides \ltx@ifundefined
% (many packages load ltxcmds: graphicx does for pdftex and lualatex but
@ -470,6 +470,8 @@
{\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}}%
{}% else clause of \ltx@ifundefined
% for usage with xindy string is internationalized in document preamble
\newcommand*{\sphinxsymbolsandnumbersname}{Symbols and Numbers}
%% COLOR (general)
%

View File

@ -130,7 +130,7 @@ DEFAULT_SETTINGS = {
'tocdepth': '',
'secnumdepth': '',
'pageautorefname': '',
'literalblockpto': '',
'translatablestrings': '',
} # type: Dict[unicode, unicode]
ADDITIONAL_SETTINGS = {
@ -667,12 +667,15 @@ class LaTeXTranslator(nodes.NodeVisitor):
if self.elements['extraclassoptions']:
self.elements['classoptions'] += ',' + \
self.elements['extraclassoptions']
self.elements['literalblockpto'] = (
self.elements['translatablestrings'] = (
self.babel_renewcommand(
'\\literalblockcontinuedname', self.encode(_('continued from previous page'))
) +
self.babel_renewcommand(
'\\literalblockcontinuesname', self.encode(_('continues on next page'))
) +
self.babel_renewcommand(
'\\sphinxsymbolsandnumbersname', self.encode(_('Symbols and Numbers'))
)
)
self.elements['pageautorefname'] = \