Fix #1030: Make page reference names for latex_show_pagerefs translatable

This commit is contained in:
Takeshi KOMIYA 2016-01-16 14:32:23 +09:00
parent 2803b64b5d
commit 121fc4a326
3 changed files with 36 additions and 15 deletions

View File

@ -33,6 +33,7 @@ Features added
* #2216: Texinputs makefile improvements.
* #2170: Support for Chinese language search index.
* #2214: Add sphinx.ext.githubpages to publish the docs on GitHub Pages
* #1030: Make page reference names for latex_show_pagerefs translatable
Bugs fixed
----------

View File

@ -46,6 +46,7 @@ HEADER = r'''%% Generated by Sphinx.
%(usepackages)s
%(contentsname)s
%(numfig_format)s
%(pageautorefname)s
%(preamble)s
\title{%(title)s}
@ -292,6 +293,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
'transition': '\n\n\\bigskip\\hrule{}\\bigskip\n\n',
'figure_align': 'htbp',
'tocdepth': '',
'pageautorefname': '',
}
# sphinx specific document classes
@ -302,6 +304,22 @@ class LaTeXTranslator(nodes.NodeVisitor):
self.builder = builder
self.body = []
# flags
self.in_title = 0
self.in_production_list = 0
self.in_footnote = 0
self.in_caption = 0
self.in_container_literal_block = 0
self.in_term = 0
self.first_document = 1
self.this_is_the_title = 1
self.literal_whitespace = 0
self.no_contractions = 0
self.compact_list = 0
self.first_param = 0
self.remember_multirow = {}
self.remember_multirowcol = {}
# sort out some elements
papersize = builder.config.latex_paper_size + 'paper'
if papersize == 'paper': # e.g. command line "-D latex_paper_size="
@ -366,6 +384,8 @@ class LaTeXTranslator(nodes.NodeVisitor):
if getattr(document.settings, 'contentsname', None):
self.elements['contentsname'] = \
self.babel_renewcommand('\\contentsname', document.settings.contentsname)
self.elements['pageautorefname'] = \
self.babel_defmacro('\\pageautorefname', self.encode(_('page')))
self.elements['numfig_format'] = self.generate_numfig_format(builder)
# allow the user to override them all
self.elements.update(builder.config.latex_elements)
@ -411,21 +431,6 @@ class LaTeXTranslator(nodes.NodeVisitor):
self.next_figure_ids = set()
self.next_table_ids = set()
self.next_literal_ids = set()
# flags
self.in_title = 0
self.in_production_list = 0
self.in_footnote = 0
self.in_caption = 0
self.in_container_literal_block = 0
self.in_term = 0
self.first_document = 1
self.this_is_the_title = 1
self.literal_whitespace = 0
self.no_contractions = 0
self.compact_list = 0
self.first_param = 0
self.remember_multirow = {}
self.remember_multirowcol = {}
def pushbody(self, newbody):
self.bodystack.append(self.body)
@ -494,6 +499,16 @@ class LaTeXTranslator(nodes.NodeVisitor):
return ('%s\\renewcommand{%s}{%s}%s\n' % (prefix, command, definition, suffix))
def babel_defmacro(self, name, definition):
if self.elements['babel']:
prefix = '\\addto\\extras%s{' % self.babel.get_language()
suffix = '}'
else: # babel is disabled (mainly for Japanese environment)
prefix = ''
suffix = ''
return ('%s\\def%s{%s}%s\n' % (prefix, name, definition, suffix))
def generate_numfig_format(self, builder):
ret = []
figure = self.builder.config.numfig_format['figure'].split('%s', 1)

View File

@ -288,6 +288,7 @@ def test_babel_with_no_language_settings(app, status, warning):
in result)
assert '\\addto\\captionsenglish{\\renewcommand{\\figurename}{Fig. }}\n' in result
assert '\\addto\\captionsenglish{\\renewcommand{\\tablename}{Table. }}\n' in result
assert '\\addto\\extrasenglish{\\def\\pageautorefname{page}}\n' in result
@with_app(buildername='latex', testroot='latex-babel',
@ -306,6 +307,7 @@ def test_babel_with_language_de(app, status, warning):
in result)
assert '\\addto\\captionsngerman{\\renewcommand{\\figurename}{Fig. }}\n' in result
assert '\\addto\\captionsngerman{\\renewcommand{\\tablename}{Table. }}\n' in result
assert '\\addto\\extrasngerman{\\def\\pageautorefname{page}}\n' in result
@with_app(buildername='latex', testroot='latex-babel',
@ -324,6 +326,7 @@ def test_babel_with_language_ru(app, status, warning):
in result)
assert '\\addto\\captionsrussian{\\renewcommand{\\figurename}{Fig. }}\n' in result
assert '\\addto\\captionsrussian{\\renewcommand{\\tablename}{Table. }}\n' in result
assert '\\addto\\extrasrussian{\\def\\pageautorefname{page}}\n' in result
@with_app(buildername='latex', testroot='latex-babel',
@ -341,6 +344,7 @@ def test_babel_with_language_ja(app, status, warning):
assert '\\renewcommand{\\contentsname}{Table of content}\n' in result
assert '\\renewcommand{\\figurename}{Fig. }\n' in result
assert '\\renewcommand{\\tablename}{Table. }\n' in result
assert '\\def\\pageautorefname{page}\n' in result
@with_app(buildername='latex', testroot='latex-babel',
@ -359,6 +363,7 @@ def test_babel_with_unknown_language(app, status, warning):
in result)
assert '\\addto\\captionsenglish{\\renewcommand{\\figurename}{Fig. }}\n' in result
assert '\\addto\\captionsenglish{\\renewcommand{\\tablename}{Table. }}\n' in result
assert '\\addto\\extrasenglish{\\def\\pageautorefname{page}}\n' in result
assert "WARNING: no Babel option known for language 'unknown'" in warning.getvalue()