|
From: <mi...@us...> - 2022-06-19 20:23:14
|
Revision: 9081
http://sourceforge.net/p/docutils/code/9081
Author: milde
Date: 2022-06-19 20:23:12 +0000 (Sun, 19 Jun 2022)
Log Message:
-----------
Add wrapper around groups of footnotes to facilitate styling as a list.
Adapt style sheets and tests.
Cf. bug #450.
Modified Paths:
--------------
trunk/docutils/HISTORY.txt
trunk/docutils/RELEASE-NOTES.txt
trunk/docutils/docutils/writers/_html_base.py
trunk/docutils/docutils/writers/html5_polyglot/plain.css
trunk/docutils/docutils/writers/html5_polyglot/tuftig.css
trunk/docutils/test/functional/expected/footnotes_html5.html
trunk/docutils/test/functional/expected/rst_html5_tuftig.html
trunk/docutils/test/functional/expected/standalone_rst_html5.html
trunk/docutils/test/test_writers/test_html5_polyglot_parts.py
Modified: trunk/docutils/HISTORY.txt
===================================================================
--- trunk/docutils/HISTORY.txt 2022-06-19 14:01:03 UTC (rev 9080)
+++ trunk/docutils/HISTORY.txt 2022-06-19 20:23:12 UTC (rev 9081)
@@ -96,6 +96,7 @@
- Add space before "charset" meta tag closing sequence.
- Remove class value "controls" from an `image` node with video content
after converting it to a "control" attribute of the <video> tag.
+ - Wrap groups of footnotes in an ``<aside>`` for easier styling.
* docutils/writers/pep_html/
Modified: trunk/docutils/RELEASE-NOTES.txt
===================================================================
--- trunk/docutils/RELEASE-NOTES.txt 2022-06-19 14:01:03 UTC (rev 9080)
+++ trunk/docutils/RELEASE-NOTES.txt 2022-06-19 20:23:12 UTC (rev 9081)
@@ -112,6 +112,14 @@
* Drop support for Python 2.7, 3.5, and 3.6.
+* Output changes:
+
+ HTML5:
+ Wrap groups of footnotes in an ``<aside>`` for easier styling.
+
+ The CSS rule ``.footnote-list { display: contents; }`` can be used to
+ restore the behaviour of custom CSS styles.
+
* After package installation, the CLI commands ``python -m docutils`` and
``docutils`` start the `generic command line front end tool`__.
Modified: trunk/docutils/docutils/writers/_html_base.py
===================================================================
--- trunk/docutils/docutils/writers/_html_base.py 2022-06-19 14:01:03 UTC (rev 9080)
+++ trunk/docutils/docutils/writers/_html_base.py 2022-06-19 20:23:12 UTC (rev 9081)
@@ -635,8 +635,8 @@
def depart_citation(self, node):
self.body.append('</div>\n')
- next_node = node.next_node(descend=False, siblings=True)
- if not isinstance(next_node, type(node)):
+ if not isinstance(node.next_node(descend=False, siblings=True),
+ type(node)):
self.body.append('</div>\n')
# Use DPub role (overwritten in HTML4)
@@ -943,15 +943,22 @@
self.body_suffix[:0] = footer
del self.body[start:]
- # use HTML5 element <aside> with ARIA role "note" for footnote text
- # (the html4css1 writer uses a table).
def visit_footnote(self, node):
- classes = [node.tagname, self.settings.footnote_references]
- self.body.append(self.starttag(node, 'aside', classes=classes,
+ # No native HTML element: use <aside> with ARIA role
+ # (html4css1 uses tables).
+ # Wrap groups of footnotes for easier styling.
+ label_style = self.settings.footnote_references # brackets/superscript
+ if not isinstance(node.previous_sibling(), type(node)):
+ self.body.append(f'<aside class="footnote-list {label_style}">\n')
+ self.body.append(self.starttag(node, 'aside',
+ classes=[node.tagname, label_style],
role="note"))
def depart_footnote(self, node):
self.body.append('</aside>\n')
+ if not isinstance(node.next_node(descend=False, siblings=True),
+ type(node)):
+ self.body.append('</aside>\n')
def visit_footnote_reference(self, node):
href = '#' + node['refid']
Modified: trunk/docutils/docutils/writers/html5_polyglot/plain.css
===================================================================
--- trunk/docutils/docutils/writers/html5_polyglot/plain.css 2022-06-19 14:01:03 UTC (rev 9080)
+++ trunk/docutils/docutils/writers/html5_polyglot/plain.css 2022-06-19 20:23:12 UTC (rev 9081)
@@ -199,18 +199,10 @@
/* ----------------------- */
/* line on the left */
-.footnote {
+.footnote-list {
border-left: solid thin;
- padding-left: 2.1em;
- margin-bottom: 0;
+ padding-left: 0.25em;
}
-.footnote + .footnote {
- padding-top: 0.5em;
- margin-top: 0;
-}
-.footnote.superscript {
- padding-left: 1.2em;
-}
/* Directives */
/* ---------- */
Modified: trunk/docutils/docutils/writers/html5_polyglot/tuftig.css
===================================================================
--- trunk/docutils/docutils/writers/html5_polyglot/tuftig.css 2022-06-19 14:01:03 UTC (rev 9080)
+++ trunk/docutils/docutils/writers/html5_polyglot/tuftig.css 2022-06-19 20:23:12 UTC (rev 9081)
@@ -222,7 +222,8 @@
}
/* Citation list (style as description list) */
-.citation-list {
+.citation-list,
+.footnote-list {
display: contents;
}
.citation {
Modified: trunk/docutils/test/functional/expected/footnotes_html5.html
===================================================================
--- trunk/docutils/test/functional/expected/footnotes_html5.html 2022-06-19 14:01:03 UTC (rev 9080)
+++ trunk/docutils/test/functional/expected/footnotes_html5.html 2022-06-19 20:23:12 UTC (rev 9081)
@@ -14,6 +14,7 @@
<p>Paragraphs may contain footnote references (manually numbered<a class="footnote-reference superscript" href="#footnote-1" id="footnote-reference-1" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a>, anonymous auto-numbered<a class="footnote-reference superscript" href="#footnote-2" id="footnote-reference-2" role="doc-noteref"><span class="fn-bracket">[</span>3<span class="fn-bracket">]</span></a>, labeled auto-numbered<a class="footnote-reference superscript" href="#label" id="footnote-reference-3" role="doc-noteref"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></a>, or
symbolic<a class="footnote-reference superscript" href="#footnote-3" id="footnote-reference-4" role="doc-noteref"><span class="fn-bracket">[</span>*<span class="fn-bracket">]</span></a>) or citation references (<a class="citation-reference" href="#cit2002" id="citation-reference-1" role="doc-biblioref">[CIT2002]</a>, <a class="citation-reference" href="#du2015" id="citation-reference-2" role="doc-biblioref">[DU2015]</a>).</p>
+<aside class="footnote-list superscript">
<aside class="footnote superscript" id="footnote-1" role="note">
<span class="label"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></span>
<span class="backrefs">(<a role="doc-backlink" href="#footnote-reference-1">1</a>,<a role="doc-backlink" href="#footnote-reference-5">2</a>)</span>
@@ -50,6 +51,7 @@
<p>Here's an unreferenced footnote, with a reference to a
nonexistent footnote:<a class="footnote-reference superscript" href="#footnote-6" id="footnote-reference-8" role="doc-noteref"><span class="fn-bracket">[</span>5<span class="fn-bracket">]</span></a>.</p>
</aside>
+</aside>
<section id="citations">
<h2>Citations<a class="self-link" title="link to this section" href="#citations"></a></h2>
<div role="list" class="citation-list">
@@ -65,12 +67,15 @@
</div>
</div>
<p>Here's a reference to the above, <a class="citation-reference" href="#cit2002" id="citation-reference-3" role="doc-biblioref">[CIT2002]</a>.</p>
+<aside class="footnote-list superscript">
<aside class="footnote superscript" id="footnote-6" role="note">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#footnote-reference-8">5</a><span class="fn-bracket">]</span></span>
<p>this footnote is missing in the standard example document.</p>
</aside>
+</aside>
<p>Footnotes may contain block elements like lists<a class="footnote-reference superscript" href="#footnote-7" id="footnote-reference-9" role="doc-noteref"><span class="fn-bracket">[</span>6<span class="fn-bracket">]</span></a><a class="footnote-reference superscript" href="#list-note" id="footnote-reference-10" role="doc-noteref"><span class="fn-bracket">[</span>7<span class="fn-bracket">]</span></a><a class="footnote-reference superscript" href="#footnote-8" id="footnote-reference-11" role="doc-noteref"><span class="fn-bracket">[</span>8<span class="fn-bracket">]</span></a>,
admonitions<a class="footnote-reference superscript" href="#footnote-9" id="footnote-reference-12" role="doc-noteref"><span class="fn-bracket">[</span>9<span class="fn-bracket">]</span></a>, or tables<a class="footnote-reference superscript" href="#footnote-10" id="footnote-reference-13" role="doc-noteref"><span class="fn-bracket">[</span>10<span class="fn-bracket">]</span></a>.</p>
+<aside class="footnote-list superscript">
<aside class="footnote superscript" id="footnote-7" role="note">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#footnote-reference-9">6</a><span class="fn-bracket">]</span></span>
<ol class="arabic simple">
@@ -118,6 +123,7 @@
</tbody>
</table>
</aside>
+</aside>
<p>This<a class="footnote-reference superscript" href="#list-note" id="footnote-reference-14" role="doc-noteref"><span class="fn-bracket">[</span>7<span class="fn-bracket">]</span></a> is a second reference to the footnote containing
a bullet. list.</p>
</section>
Modified: trunk/docutils/test/functional/expected/rst_html5_tuftig.html
===================================================================
--- trunk/docutils/test/functional/expected/rst_html5_tuftig.html 2022-06-19 14:01:03 UTC (rev 9080)
+++ trunk/docutils/test/functional/expected/rst_html5_tuftig.html 2022-06-19 20:23:12 UTC (rev 9081)
@@ -127,11 +127,13 @@
</tr>
</tbody>
</table>
+<aside class="footnote-list superscript">
<aside class="footnote superscript align-left" id="not-in-margin" role="note">
<span class="label"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></span>
<p>The “align-left” class value ensures this footnote is set
in the main text area.</p>
</aside>
+</aside>
</section>
</main>
<footer>
Modified: trunk/docutils/test/functional/expected/standalone_rst_html5.html
===================================================================
--- trunk/docutils/test/functional/expected/standalone_rst_html5.html 2022-06-19 14:01:03 UTC (rev 9080)
+++ trunk/docutils/test/functional/expected/standalone_rst_html5.html 2022-06-19 20:23:12 UTC (rev 9081)
@@ -471,6 +471,7 @@
</section>
<section id="footnotes">
<h3><a class="toc-backref" href="#toc-entry-17" role="doc-backlink"><span class="sectnum">2.11 </span>Footnotes</a></h3>
+<aside class="footnote-list brackets">
<aside class="footnote brackets" id="footnote-1" role="note">
<span class="label"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></span>
<span class="backrefs">(<a role="doc-backlink" href="#footnote-reference-1">1</a>,<a role="doc-backlink" href="#footnote-reference-5">2</a>,<a role="doc-backlink" href="#footnote-reference-9">3</a>)</span>
@@ -507,6 +508,7 @@
<p>Here's an unreferenced footnote, with a reference to a
nonexistent footnote: <a href="#system-message-2"><span class="problematic" id="footnote-reference-8">[5]_</span></a>.</p>
</aside>
+</aside>
</section>
<section id="citations">
<h3><a class="toc-backref" href="#toc-entry-18" role="doc-backlink"><span class="sectnum">2.12 </span>Citations</a></h3>
@@ -823,6 +825,7 @@
</section>
<section id="target-footnotes">
<h4><a class="toc-backref" href="#toc-entry-59" role="doc-backlink"><span class="sectnum">2.14.6 </span>Target Footnotes</a></h4>
+<aside class="footnote-list brackets">
<aside class="footnote brackets" id="footnote-7" role="note">
<span class="label"><span class="fn-bracket">[</span>7<span class="fn-bracket">]</span></span>
<span class="backrefs">(<a role="doc-backlink" href="#footnote-reference-18">1</a>,<a role="doc-backlink" href="#footnote-reference-19">2</a>,<a role="doc-backlink" href="#footnote-reference-20">3</a>,<a role="doc-backlink" href="#footnote-reference-26">4</a>)</span>
@@ -876,6 +879,7 @@
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#footnote-reference-33">19</a><span class="fn-bracket">]</span></span>
<p><a class="reference external" href="https://html.spec.whatwg.org/multipage/edits.html">https://html.spec.whatwg.org/multipage/edits.html</a></p>
</aside>
+</aside>
</section>
<section id="replacement-text">
<h4><a class="toc-backref" href="#toc-entry-60" role="doc-backlink"><span class="sectnum">2.14.7 </span>Replacement Text</a></h4>
@@ -1581,10 +1585,12 @@
<cite>acronymes</cite>. In HTML, the <acronym> tag is obsolete and authors are
advised to use <abbr> instead. The HTML5 writer uses <abbr> for Docutil's
<abbreviation> element.</p>
+<aside class="footnote-list brackets">
<aside class="footnote brackets" id="footnote-6" role="note">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#footnote-reference-11">‡</a><span class="fn-bracket">]</span></span>
<p>Irish Organic Farmers and Growers Association</p>
</aside>
+</aside>
</dd>
<dt>ruby, rt, rp</dt>
<dd><p>Ruby annotations</p>
@@ -1710,6 +1716,7 @@
</blockquote>
</dd>
</dl>
+<aside class="footnote-list brackets">
<aside class="footnote brackets" id="attribute-optional" role="note">
<span class="label"><span class="fn-bracket">[</span>5<span class="fn-bracket">]</span></span>
<span class="backrefs">(<a role="doc-backlink" href="#footnote-reference-10">1</a>,<a role="doc-backlink" href="#footnote-reference-14">2</a>,<a role="doc-backlink" href="#footnote-reference-16">3</a>,<a role="doc-backlink" href="#footnote-reference-17">4</a>)</span>
@@ -1722,6 +1729,7 @@
<p>Requires support for attributes to inline
roles to make sense.</p>
</aside>
+</aside>
</section>
<section id="indicating-edits">
<h3><a class="toc-backref" href="#toc-entry-52" role="doc-backlink"><span class="sectnum">3.4 </span>Indicating Edits</a></h3>
Modified: trunk/docutils/test/test_writers/test_html5_polyglot_parts.py
===================================================================
--- trunk/docutils/test/test_writers/test_html5_polyglot_parts.py 2022-06-19 14:01:03 UTC (rev 9080)
+++ trunk/docutils/test/test_writers/test_html5_polyglot_parts.py 2022-06-19 20:23:12 UTC (rev 9081)
@@ -675,6 +675,7 @@
{'fragment': '''\
<p>Two footnotes <a class="footnote-reference brackets" href="#f1" id="footnote-reference-1" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a> <a class="footnote-reference brackets" href="#f2" id="footnote-reference-2" role="doc-noteref"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></a> and two citations <a class="citation-reference" href="#once" id="citation-reference-1" role="doc-biblioref">[once]</a> <a class="citation-reference" href="#twice" id="citation-reference-2" role="doc-biblioref">[twice]</a>.</p>
<p>The latter are referenced a second time <a class="footnote-reference brackets" href="#f2" id="footnote-reference-3" role="doc-noteref"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></a> <a class="citation-reference" href="#twice" id="citation-reference-3" role="doc-biblioref">[twice]</a>.</p>
+<aside class="footnote-list brackets">
<aside class="footnote brackets" id="f1" role="note">
<span class="label"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></span>
<p>referenced once</p>
@@ -683,6 +684,7 @@
<span class="label"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></span>
<p>referenced twice</p>
</aside>
+</aside>
<div role="list" class="citation-list">
<div class="citation" id="once" role="doc-biblioentry">
<span class="label"><span class="fn-bracket">[</span>once<span class="fn-bracket">]</span></span>
@@ -697,6 +699,7 @@
<main>
<p>Two footnotes <a class="footnote-reference brackets" href="#f1" id="footnote-reference-1" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a> <a class="footnote-reference brackets" href="#f2" id="footnote-reference-2" role="doc-noteref"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></a> and two citations <a class="citation-reference" href="#once" id="citation-reference-1" role="doc-biblioref">[once]</a> <a class="citation-reference" href="#twice" id="citation-reference-2" role="doc-biblioref">[twice]</a>.</p>
<p>The latter are referenced a second time <a class="footnote-reference brackets" href="#f2" id="footnote-reference-3" role="doc-noteref"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></a> <a class="citation-reference" href="#twice" id="citation-reference-3" role="doc-biblioref">[twice]</a>.</p>
+<aside class="footnote-list brackets">
<aside class="footnote brackets" id="f1" role="note">
<span class="label"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></span>
<p>referenced once</p>
@@ -705,6 +708,7 @@
<span class="label"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></span>
<p>referenced twice</p>
</aside>
+</aside>
<div role="list" class="citation-list">
<div class="citation" id="once" role="doc-biblioentry">
<span class="label"><span class="fn-bracket">[</span>once<span class="fn-bracket">]</span></span>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|