diff --git a/sphinx/config.py b/sphinx/config.py index 40536ae5a..60626cc7d 100644 --- a/sphinx/config.py +++ b/sphinx/config.py @@ -70,6 +70,9 @@ class Config(object): needs_extensions = ({}, None), nitpicky = (False, 'env'), nitpick_ignore = ([], 'html'), + numfig = (False, 'env'), + numfig_secnum_depth = (1, 'env'), + numfig_prefix = ({'figure': 'Fig.'}, 'env'), # HTML options html_theme = ('default', 'html'), diff --git a/sphinx/environment.py b/sphinx/environment.py index 84149718e..a6e06993f 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -1714,7 +1714,7 @@ class BuildEnvironment: return secnum or tuple() def get_next_figure_number(secnum): - secnum = secnum[:1] + secnum = secnum[:self.config.numfig_secnum_depth] fignum_counter[secnum] = fignum_counter.get(secnum, 0) + 1 return secnum + (fignum_counter[secnum],) @@ -1744,10 +1744,11 @@ class BuildEnvironment: doctree = self.get_doctree(docname) _walk_doctree(docname, doctree, secnum) - _walk_doc(self.config.master_doc, tuple()) - for docname, fignums in iteritems(self.toc_fignumbers): - if fignums != old_fignumbers.get(docname): - rewrite_needed.append(docname) + if self.config.numfig: + _walk_doc(self.config.master_doc, tuple()) + for docname, fignums in iteritems(self.toc_fignumbers): + if fignums != old_fignumbers.get(docname): + rewrite_needed.append(docname) return rewrite_needed diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py index dea591922..de384ba1e 100644 --- a/sphinx/writers/html.py +++ b/sphinx/writers/html.py @@ -251,13 +251,12 @@ class HTMLTranslator(BaseTranslator): self.secnumber_suffix) def add_fignumber(self, node): - if node.get('fignumber'): - self.body.append('Fig.' + '.'.join(map(str, node['fignumber']))) - elif isinstance(node.parent, nodes.figure): + if isinstance(node.parent, nodes.figure): figure_id = node.parent['ids'][0] if self.builder.fignumbers.get(figure_id): + prefix = self.builder.config.numfig_prefix.get('figure') numbers = self.builder.fignumbers[figure_id] - self.body.append('Fig.' + '.'.join(map(str, numbers))) + self.body.append(prefix + '.'.join(map(str, numbers)) + " ") # overwritten to avoid emitting empty