diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py index 54b1029970..9a281dc9a9 100644 --- a/sphinx/writers/texinfo.py +++ b/sphinx/writers/texinfo.py @@ -1235,7 +1235,11 @@ def depart_sidebar(self, node: Element) -> None: self.depart_topic(node) def visit_label(self, node: Element) -> None: - self.body.append('@w{(') + # label numbering is automatically generated by Texinfo + if self.in_footnote: + raise nodes.SkipNode + else: + self.body.append('@w{(') def depart_label(self, node: Element) -> None: self.body.append(')} ') diff --git a/tests/test_build_texinfo.py b/tests/test_build_texinfo.py index 532d33e34c..bece3a558d 100644 --- a/tests/test_build_texinfo.py +++ b/tests/test_build_texinfo.py @@ -114,6 +114,14 @@ def test_texinfo_escape_id(app, status, warning): assert translator.escape_id('.') == '.' +@pytest.mark.sphinx('texinfo', testroot='footnotes') +def test_texinfo_footnote(app, status, warning): + app.builder.build_all() + + output = (app.outdir / 'python.texi').read_text() + assert 'First footnote: @footnote{\nFirst\n}' in output + + @pytest.mark.sphinx('texinfo') def test_texinfo_xrefs(app, status, warning): app.builder.build_all()