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
|
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__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@ -232,7 +257,14 @@ class LaTeXBuilder(Builder):
|
|||||||
self.copy_image_files()
|
self.copy_image_files()
|
||||||
|
|
||||||
# copy TeX support files from texinputs
|
# 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...')))
|
logger.info(bold(__('copying TeX support files...')))
|
||||||
staticdirname = path.join(package_dir, 'texinputs')
|
staticdirname = path.join(package_dir, 'texinputs')
|
||||||
for filename in os.listdir(staticdirname):
|
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_logo', None, None, string_classes)
|
||||||
app.add_config_value('latex_appendices', [], None)
|
app.add_config_value('latex_appendices', [], None)
|
||||||
app.add_config_value('latex_use_latex_multicolumn', False, 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,
|
app.add_config_value('latex_toplevel_sectioning', None, None,
|
||||||
ENUM(None, 'part', 'chapter', 'section'))
|
ENUM(None, 'part', 'chapter', 'section'))
|
||||||
app.add_config_value('latex_domain_indices', True, None, [list])
|
app.add_config_value('latex_domain_indices', True, None, [list])
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
<%= hyperref %>
|
<%= hyperref %>
|
||||||
<%= contentsname %>
|
<%= contentsname %>
|
||||||
<%= numfig_format %>
|
<%= numfig_format %>
|
||||||
<%= literalblockpto %>
|
<%= translatablestrings %>
|
||||||
<%= pageautorefname %>
|
<%= pageautorefname %>
|
||||||
<%= tocdepth %>
|
<%= tocdepth %>
|
||||||
<%= secnumdepth %>
|
<%= secnumdepth %>
|
||||||
|
@ -22,6 +22,12 @@ export LATEXOPTS =
|
|||||||
# or on command line for faster builds.
|
# or on command line for faster builds.
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
LATEXMKOPTS =
|
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)
|
# format: pdf or dvi (used only by archive targets)
|
||||||
FMT = pdf
|
FMT = pdf
|
||||||
|
|
||||||
|
@ -10,7 +10,11 @@ $pdflatex = 'xelatex ' . $ENV{'LATEXOPTS'} . ' %O %S';
|
|||||||
{% endif -%}
|
{% endif -%}
|
||||||
$lualatex = 'lualatex ' . $ENV{'LATEXOPTS'} . ' %O %S';
|
$lualatex = 'lualatex ' . $ENV{'LATEXOPTS'} . ' %O %S';
|
||||||
$xelatex = 'xelatex --no-pdf ' . $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';
|
$makeindex = 'makeindex -s python.ist %O -o %D %S';
|
||||||
|
{% endif -%}
|
||||||
add_cus_dep( "glo", "gls", 0, "makeglo" );
|
add_cus_dep( "glo", "gls", 0, "makeglo" );
|
||||||
sub makeglo {
|
sub makeglo {
|
||||||
return system( "makeindex -s gglo.ist -o '$_[0].gls' '$_[0].glo'" );
|
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]
|
\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
|
% provides \ltx@ifundefined
|
||||||
% (many packages load ltxcmds: graphicx does for pdftex and lualatex but
|
% (many packages load ltxcmds: graphicx does for pdftex and lualatex but
|
||||||
@ -470,6 +470,8 @@
|
|||||||
{\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}}%
|
{\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}}%
|
||||||
{}% else clause of \ltx@ifundefined
|
{}% else clause of \ltx@ifundefined
|
||||||
|
|
||||||
|
% for usage with xindy string is internationalized in document preamble
|
||||||
|
\newcommand*{\sphinxsymbolsandnumbersname}{Symbols and Numbers}
|
||||||
|
|
||||||
%% COLOR (general)
|
%% COLOR (general)
|
||||||
%
|
%
|
||||||
|
@ -130,7 +130,7 @@ DEFAULT_SETTINGS = {
|
|||||||
'tocdepth': '',
|
'tocdepth': '',
|
||||||
'secnumdepth': '',
|
'secnumdepth': '',
|
||||||
'pageautorefname': '',
|
'pageautorefname': '',
|
||||||
'literalblockpto': '',
|
'translatablestrings': '',
|
||||||
} # type: Dict[unicode, unicode]
|
} # type: Dict[unicode, unicode]
|
||||||
|
|
||||||
ADDITIONAL_SETTINGS = {
|
ADDITIONAL_SETTINGS = {
|
||||||
@ -667,12 +667,15 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
if self.elements['extraclassoptions']:
|
if self.elements['extraclassoptions']:
|
||||||
self.elements['classoptions'] += ',' + \
|
self.elements['classoptions'] += ',' + \
|
||||||
self.elements['extraclassoptions']
|
self.elements['extraclassoptions']
|
||||||
self.elements['literalblockpto'] = (
|
self.elements['translatablestrings'] = (
|
||||||
self.babel_renewcommand(
|
self.babel_renewcommand(
|
||||||
'\\literalblockcontinuedname', self.encode(_('continued from previous page'))
|
'\\literalblockcontinuedname', self.encode(_('continued from previous page'))
|
||||||
) +
|
) +
|
||||||
self.babel_renewcommand(
|
self.babel_renewcommand(
|
||||||
'\\literalblockcontinuesname', self.encode(_('continues on next page'))
|
'\\literalblockcontinuesname', self.encode(_('continues on next page'))
|
||||||
|
) +
|
||||||
|
self.babel_renewcommand(
|
||||||
|
'\\sphinxsymbolsandnumbersname', self.encode(_('Symbols and Numbers'))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.elements['pageautorefname'] = \
|
self.elements['pageautorefname'] = \
|
||||||
|
Loading…
Reference in New Issue
Block a user