#1719 Add prefix to linkname of :numref: on LaTeX mode

This commit is contained in:
Takeshi KOMIYA 2015-03-03 00:53:06 +09:00
parent 1ee7f5a163
commit 9f06027836
2 changed files with 44 additions and 30 deletions

View File

@ -331,33 +331,40 @@ class LaTeXTranslator(nodes.NodeVisitor):
figure = self.builder.config.numfig_format['figure'].split('%s', 1) figure = self.builder.config.numfig_format['figure'].split('%s', 1)
if len(figure) == 1: if len(figure) == 1:
ret.append(r'\def\fnum@figure{%s}' % figure[0]) ret.append('\\def\\fnum@figure{%s}\n' %
text_type(figure[0]).translate(tex_escape_map))
else: else:
ret.append(r'\renewcommand{\figurename}{%s}' % figure[0]) ret.append('\\renewcommand{\\figurename}{%s}\n' %
text_type(figure[0]).translate(tex_escape_map))
if figure[1]: if figure[1]:
ret.append(r'\makeatletter') ret.append('\\makeatletter\n')
ret.append(r'\def\fnum@figure{\figurename\thefigure%s}' % figure[1]) ret.append('\\def\\fnum@figure{\\figurename\\thefigure%s}\n' %
ret.append(r'\makeatother') text_type(figure[1]).translate(tex_escape_map))
ret.append('\\makeatother\n')
table = self.builder.config.numfig_format['table'].split('%s', 1) table = self.builder.config.numfig_format['table'].split('%s', 1)
if len(table) == 1: if len(table) == 1:
ret.append(r'\def\fnum@table{%s}' % table[0]) ret.append('\\def\\fnum@table{%s}\n' %
text_type(table[0]).translate(tex_escape_map))
else: else:
ret.append(r'\renewcommand{\tablename}{%s}' % table[0]) ret.append('\\renewcommand{\\tablename}{%s}\n' %
text_type(table[0]).translate(tex_escape_map))
if table[1]: if table[1]:
ret.append(r'\makeatletter') ret.append('\\makeatletter\n')
ret.append(r'\def\fnum@table{\tablename\thetable%s}' % table[1]) ret.append('\\def\\fnum@table{\\tablename\\thetable%s}\n' %
ret.append(r'\makeatother') text_type(table[1]).translate(tex_escape_map))
ret.append('\\makeatother\n')
code = self.builder.config.numfig_format['code-block'].split('%s', 1) codeblock = self.builder.config.numfig_format['code-block'].split('%s', 1)
if len(code) == 1: if len(codeblock) == 1:
pass # FIXME pass # FIXME
else: else:
ret.append(r'\floatname{literal-block}{%s}' % code[0]) ret.append('\\floatname{literal-block}{%s}\n' %
text_type(codeblock[0]).translate(tex_escape_map))
if table[1]: if table[1]:
pass # FIXME pass # FIXME
return '\n'.join(ret) return ''.join(ret)
def generate_indices(self): def generate_indices(self):
def generate(content, collapsed): def generate(content, collapsed):
@ -1326,8 +1333,9 @@ class LaTeXTranslator(nodes.NodeVisitor):
id = node.get('refuri', '')[1:].replace('#', ':') id = node.get('refuri', '')[1:].replace('#', ':')
ref = '\\ref{%s}' % self.idescape(id) ref = '\\ref{%s}' % self.idescape(id)
title = node.get('title', '#') title = text_type(node.get('title', '#')).translate(tex_escape_map)
self.body.append(title.replace('#', ref)) hyperref = '\\hyperref[%s]{%s}' % (self.idescape(id), title.replace('\\#', ref))
self.body.append(hyperref)
raise nodes.SkipNode raise nodes.SkipNode

View File

@ -169,12 +169,12 @@ def test_numref(app, status, warning):
assert '\\renewcommand{\\figurename}{Fig. }' in result assert '\\renewcommand{\\figurename}{Fig. }' in result
assert '\\renewcommand{\\tablename}{Table }' in result assert '\\renewcommand{\\tablename}{Table }' in result
assert '\\floatname{literal-block}{Listing }' in result assert '\\floatname{literal-block}{Listing }' in result
assert '\\ref{index:fig1}' in result assert '\\hyperref[index:fig1]{Fig. \\ref{index:fig1}}' in result
assert '\\ref{baz:fig22}' in result assert '\\hyperref[baz:fig22]{Figure\\ref{baz:fig22}}' in result
assert '\\ref{index:table-1}' in result assert '\\hyperref[index:table-1]{Table \\ref{index:table-1}}' in result
assert '\\ref{baz:table22}' in result assert '\\hyperref[baz:table22]{Table:\\ref{baz:table22}}' in result
assert '\\ref{index:code-1}' in result assert '\\hyperref[index:code-1]{Listing \\ref{index:code-1}}' in result
assert '\\ref{baz:code22}' in result assert '\\hyperref[baz:code22]{Code-\\ref{baz:code22}}' in result
@with_app(buildername='latex', testroot='numfig', @with_app(buildername='latex', testroot='numfig',
@ -189,7 +189,7 @@ def test_numref_with_prefix1(app, status, warning):
print(status.getvalue()) print(status.getvalue())
print(warning.getvalue()) print(warning.getvalue())
assert '\\renewcommand{\\figurename}{Figure:}' in result assert '\\renewcommand{\\figurename}{Figure:}' in result
assert '\\renewcommand{\\tablename}{Tab_}' in result assert '\\renewcommand{\\tablename}{Tab\\_}' in result
assert '\\floatname{literal-block}{Code-}' in result assert '\\floatname{literal-block}{Code-}' in result
assert '\\ref{index:fig1}' in result assert '\\ref{index:fig1}' in result
assert '\\ref{baz:fig22}' in result assert '\\ref{baz:fig22}' in result
@ -197,6 +197,12 @@ def test_numref_with_prefix1(app, status, warning):
assert '\\ref{baz:table22}' in result assert '\\ref{baz:table22}' in result
assert '\\ref{index:code-1}' in result assert '\\ref{index:code-1}' in result
assert '\\ref{baz:code22}' in result assert '\\ref{baz:code22}' in result
assert '\\hyperref[index:fig1]{Figure:\\ref{index:fig1}}' in result
assert '\\hyperref[baz:fig22]{Figure\\ref{baz:fig22}}' in result
assert '\\hyperref[index:table-1]{Tab\\_\\ref{index:table-1}}' in result
assert '\\hyperref[baz:table22]{Table:\\ref{baz:table22}}' in result
assert '\\hyperref[index:code-1]{Code-\\ref{index:code-1}}' in result
assert '\\hyperref[baz:code22]{Code-\\ref{baz:code22}}' in result
@with_app(buildername='latex', testroot='numfig', @with_app(buildername='latex', testroot='numfig',
@ -212,15 +218,15 @@ def test_numref_with_prefix2(app, status, warning):
print(warning.getvalue()) print(warning.getvalue())
assert '\\renewcommand{\\figurename}{Figure:}' in result assert '\\renewcommand{\\figurename}{Figure:}' in result
assert '\\def\\fnum@figure{\\figurename\\thefigure.}' in result assert '\\def\\fnum@figure{\\figurename\\thefigure.}' in result
assert '\\renewcommand{\\tablename}{Tab_}' in result assert '\\renewcommand{\\tablename}{Tab\\_}' in result
assert '\\def\\fnum@table{\\tablename\\thetable:}' in result assert '\\def\\fnum@table{\\tablename\\thetable:}' in result
assert '\\floatname{literal-block}{Code-}' in result assert '\\floatname{literal-block}{Code-}' in result
assert '\\ref{index:fig1}' in result assert '\\hyperref[index:fig1]{Figure:\\ref{index:fig1}.}' in result
assert '\\ref{baz:fig22}' in result assert '\\hyperref[baz:fig22]{Figure\\ref{baz:fig22}}' in result
assert '\\ref{index:table-1}' in result assert '\\hyperref[index:table-1]{Tab\\_\\ref{index:table-1}:}' in result
assert '\\ref{baz:table22}' in result assert '\\hyperref[baz:table22]{Table:\\ref{baz:table22}}' in result
assert '\\ref{index:code-1}' in result assert '\\hyperref[index:code-1]{Code-\\ref{index:code-1} \\textbar{} }' in result
assert '\\ref{baz:code22}' in result assert '\\hyperref[baz:code22]{Code-\\ref{baz:code22}}' in result
@with_app(buildername='latex') @with_app(buildername='latex')