From 144d346b56045c12159783564070b6cfe66d39b2 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sat, 25 Jun 2022 22:32:43 +0100 Subject: [PATCH 1/7] Use Docutils 0.19 footnote styles --- sphinx/util/docutils.py | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/sphinx/util/docutils.py b/sphinx/util/docutils.py index e1fd780963b..63e8f384773 100644 --- a/sphinx/util/docutils.py +++ b/sphinx/util/docutils.py @@ -18,6 +18,7 @@ from docutils.parsers.rst.states import Inliner from docutils.statemachine import State, StateMachine, StringList from docutils.utils import Reporter, unescape +from docutils.writers._html_base import HTMLTranslator # NoQA from sphinx.deprecation import RemovedInSphinx70Warning, deprecated_alias from sphinx.errors import SphinxError @@ -182,10 +183,40 @@ def using_user_docutils_conf(confdir: Optional[str]) -> Generator[None, None, No os.environ['DOCUTILSCONFIG'] = docutilsconfig +def du19_footnotes() -> Generator[None, None, None]: + def visit_footnote(self, node): + label_style = self.settings.footnote_references + if not isinstance(node.previous_sibling(), type(node)): + self.body.append(f'\n') + if not isinstance(node.next_node(descend=False, siblings=True), + type(node)): + self.body.append('\n') + + old_visit_footnote = HTMLTranslator.visit_footnote + old_depart_footnote = HTMLTranslator.depart_footnote + + if docutils.__version_info__[:2] < (0, 19): + HTMLTranslator.visit_footnote = visit_footnote + HTMLTranslator.depart_footnote = depart_footnote + + try: + yield + finally: + if docutils.__version_info__[:2] < (0, 19): + HTMLTranslator.visit_footnote = old_visit_footnote + HTMLTranslator.depart_footnote = old_depart_footnote + + @contextmanager def patch_docutils(confdir: Optional[str] = None) -> Generator[None, None, None]: """Patch to docutils temporarily.""" - with patched_get_language(), patched_rst_get_language(), using_user_docutils_conf(confdir): + with patched_get_language(), patched_rst_get_language(), using_user_docutils_conf(confdir), du19_footnotes(): yield From 7ad4f793ee7e84d3cf9566ca81902148e522a64c Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sat, 25 Jun 2022 22:35:07 +0100 Subject: [PATCH 2/7] cm --- sphinx/util/docutils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sphinx/util/docutils.py b/sphinx/util/docutils.py index 63e8f384773..3d4fbc8be79 100644 --- a/sphinx/util/docutils.py +++ b/sphinx/util/docutils.py @@ -183,6 +183,7 @@ def using_user_docutils_conf(confdir: Optional[str]) -> Generator[None, None, No os.environ['DOCUTILSCONFIG'] = docutilsconfig +@contextmanager def du19_footnotes() -> Generator[None, None, None]: def visit_footnote(self, node): label_style = self.settings.footnote_references From 8ba212825c35f777322860c0d9cec85269b930e6 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sat, 25 Jun 2022 22:42:27 +0100 Subject: [PATCH 3/7] Move styles to conditional block --- sphinx/themes/basic/static/basic.css_t | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/sphinx/themes/basic/static/basic.css_t b/sphinx/themes/basic/static/basic.css_t index d8f3fe74626..b51451ead64 100644 --- a/sphinx/themes/basic/static/basic.css_t +++ b/sphinx/themes/basic/static/basic.css_t @@ -629,7 +629,7 @@ ul.simple p { margin-bottom: 0; } -/* Docutils 0.17 and older (footnotes & citations) */ +{%- if docutils_version_info[:2] < (0, 18) %} dl.footnote > dt, dl.citation > dt { float: left; @@ -646,8 +646,7 @@ dl.citation > dd:after { content: ""; clear: both; } - -/* Docutils 0.18+ (footnotes & citations) */ +{%- elif docutils_version_info[:2] >= (0, 18) %} aside.footnote > span, div.citation > span { float: left; @@ -671,8 +670,7 @@ div.citation > p:last-of-type:after { content: ""; clear: both; } - -/* Footnotes & citations ends */ +{%- endif %} dl.field-list { display: grid; From 4710693f7b41f681666cea8aad1375423bc9e6ad Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sun, 26 Jun 2022 19:13:52 +0100 Subject: [PATCH 4/7] Docutils 0.18 only --- sphinx/util/docutils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sphinx/util/docutils.py b/sphinx/util/docutils.py index 3d4fbc8be79..9698649b434 100644 --- a/sphinx/util/docutils.py +++ b/sphinx/util/docutils.py @@ -202,14 +202,16 @@ def depart_footnote(self, node): old_visit_footnote = HTMLTranslator.visit_footnote old_depart_footnote = HTMLTranslator.depart_footnote - if docutils.__version_info__[:2] < (0, 19): + # Only apply on Docutils 0.18 or 0.18.1, as 0.17 and earlier used a