mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
#1719 Use numfig_format for prefix of captions in LaTeX builder
This commit is contained in:
1
CHANGES
1
CHANGES
@@ -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)
|
||||
|
@@ -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')
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user