mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Add `latex_use_xindy
` new config variable for UTF-8 enabled indices
Fix: #5132
This commit is contained in:
parent
1140e81df7
commit
0f5d5ac126
@ -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])
|
||||
|
@ -31,7 +31,7 @@
|
||||
<%= hyperref %>
|
||||
<%= contentsname %>
|
||||
<%= numfig_format %>
|
||||
<%= literalblockpto %>
|
||||
<%= translatablestrings %>
|
||||
<%= pageautorefname %>
|
||||
<%= tocdepth %>
|
||||
<%= secnumdepth %>
|
||||
|
@ -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
|
||||
|
||||
|
@ -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'" );
|
||||
|
16
sphinx/texinputs/python.xdy
Normal file
16
sphinx/texinputs/python.xdy
Normal 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:
|
@ -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)
|
||||
%
|
||||
|
@ -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'] = \
|
||||
|
Loading…
Reference in New Issue
Block a user