#1719 Use numfig_format for prefix of captions in LaTeX builder

This commit is contained in:
Takeshi KOMIYA
2015-02-23 00:29:05 +09:00
parent d23f3e75dd
commit 1ee7f5a163
3 changed files with 86 additions and 0 deletions

View File

@@ -95,6 +95,7 @@ Bugs fixed
now renamed to ``div.literal-block-wrapper``.
* ``sphinx.util.pycompat`` has been restored in its backwards-compatibility;
slated for removal in Sphinx 1.4.
* #1719: LaTeX writer does not respect ``numref_format`` option in captions
Release 1.3b2 (released Dec 5, 2014)

View File

@@ -43,6 +43,7 @@ HEADER = r'''%% Generated by Sphinx.
\usepackage{sphinx}
\usepackage{multirow}
%(usepackages)s
%(numfig_format)s
%(preamble)s
\title{%(title)s}
@@ -155,6 +156,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
'fncychap': '\\usepackage[Bjarne]{fncychap}',
'longtable': '\\usepackage{longtable}',
'usepackages': '',
'numfig_format': '',
'preamble': '',
'title': '',
'date': '',
@@ -249,6 +251,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
if self.elements['extraclassoptions']:
self.elements['classoptions'] += ',' + \
self.elements['extraclassoptions']
self.elements['numfig_format'] = self.generate_numfig_format()
self.highlighter = highlighting.PygmentsBridge('latex',
builder.config.pygments_style, builder.config.trim_doctest_flags)
@@ -323,6 +326,39 @@ class LaTeXTranslator(nodes.NodeVisitor):
encode('ascii', 'backslashreplace').decode('ascii').\
replace('\\', '_')
def generate_numfig_format(self):
ret = []
figure = self.builder.config.numfig_format['figure'].split('%s', 1)
if len(figure) == 1:
ret.append(r'\def\fnum@figure{%s}' % figure[0])
else:
ret.append(r'\renewcommand{\figurename}{%s}' % figure[0])
if figure[1]:
ret.append(r'\makeatletter')
ret.append(r'\def\fnum@figure{\figurename\thefigure%s}' % figure[1])
ret.append(r'\makeatother')
table = self.builder.config.numfig_format['table'].split('%s', 1)
if len(table) == 1:
ret.append(r'\def\fnum@table{%s}' % table[0])
else:
ret.append(r'\renewcommand{\tablename}{%s}' % table[0])
if table[1]:
ret.append(r'\makeatletter')
ret.append(r'\def\fnum@table{\tablename\thetable%s}' % table[1])
ret.append(r'\makeatother')
code = self.builder.config.numfig_format['code-block'].split('%s', 1)
if len(code) == 1:
pass # FIXME
else:
ret.append(r'\floatname{literal-block}{%s}' % code[0])
if table[1]:
pass # FIXME
return '\n'.join(ret)
def generate_indices(self):
def generate(content, collapsed):
ret.append('\\begin{theindex}\n')

View File

@@ -166,6 +166,55 @@ def test_numref(app, status, warning):
print(result)
print(status.getvalue())
print(warning.getvalue())
assert '\\renewcommand{\\figurename}{Fig. }' in result
assert '\\renewcommand{\\tablename}{Table }' in result
assert '\\floatname{literal-block}{Listing }' in result
assert '\\ref{index:fig1}' in result
assert '\\ref{baz:fig22}' in result
assert '\\ref{index:table-1}' in result
assert '\\ref{baz:table22}' in result
assert '\\ref{index:code-1}' in result
assert '\\ref{baz:code22}' in result
@with_app(buildername='latex', testroot='numfig',
confoverrides={'numfig': True,
'numfig_format': {'figure': 'Figure:%s',
'table': 'Tab_%s',
'code-block': 'Code-%s'}})
def test_numref_with_prefix1(app, status, warning):
app.builder.build_all()
result = (app.outdir / 'Python.tex').text(encoding='utf8')
print(result)
print(status.getvalue())
print(warning.getvalue())
assert '\\renewcommand{\\figurename}{Figure:}' in result
assert '\\renewcommand{\\tablename}{Tab_}' in result
assert '\\floatname{literal-block}{Code-}' in result
assert '\\ref{index:fig1}' in result
assert '\\ref{baz:fig22}' in result
assert '\\ref{index:table-1}' in result
assert '\\ref{baz:table22}' in result
assert '\\ref{index:code-1}' in result
assert '\\ref{baz:code22}' in result
@with_app(buildername='latex', testroot='numfig',
confoverrides={'numfig': True,
'numfig_format': {'figure': 'Figure:%s.',
'table': 'Tab_%s:',
'code-block': 'Code-%s | '}})
def test_numref_with_prefix2(app, status, warning):
app.builder.build_all()
result = (app.outdir / 'Python.tex').text(encoding='utf8')
print(result)
print(status.getvalue())
print(warning.getvalue())
assert '\\renewcommand{\\figurename}{Figure:}' in result
assert '\\def\\fnum@figure{\\figurename\\thefigure.}' in result
assert '\\renewcommand{\\tablename}{Tab_}' in result
assert '\\def\\fnum@table{\\tablename\\thetable:}' in result
assert '\\floatname{literal-block}{Code-}' in result
assert '\\ref{index:fig1}' in result
assert '\\ref{baz:fig22}' in result
assert '\\ref{index:table-1}' in result