|
From: <mi...@us...> - 2021-06-25 20:56:47
|
Revision: 8773
http://sourceforge.net/p/docutils/code/8773
Author: milde
Date: 2021-06-25 20:56:46 +0000 (Fri, 25 Jun 2021)
Log Message:
-----------
HTML5: Semantic markup for footnotes.
Use "aside" instead of a description list for footnotes and citations.
While providing decent standard rendering, footnote label and text
are no instance of a "definition term" and "definition".
Use "invisible" footnote label brackets instead of display="none"
with superscript footnotes so that the brackets are kept with
drag-and-drop.
Adapt stylesheets.
Modified Paths:
--------------
trunk/docutils/RELEASE-NOTES.txt
trunk/docutils/docutils/writers/_html_base.py
trunk/docutils/docutils/writers/html5_polyglot/__init__.py
trunk/docutils/docutils/writers/html5_polyglot/minimal.css
trunk/docutils/docutils/writers/html5_polyglot/plain.css
trunk/docutils/docutils/writers/html5_polyglot/responsive.css
trunk/docutils/docutils/writers/html5_polyglot/tuftig.css
trunk/docutils/test/functional/expected/footnotes_html5.html
trunk/docutils/test/functional/expected/standalone_rst_html5.html
trunk/docutils/test/functional/input/footnotes.txt
Modified: trunk/docutils/RELEASE-NOTES.txt
===================================================================
--- trunk/docutils/RELEASE-NOTES.txt 2021-06-25 20:56:23 UTC (rev 8772)
+++ trunk/docutils/RELEASE-NOTES.txt 2021-06-25 20:56:46 UTC (rev 8773)
@@ -22,7 +22,7 @@
* `html5` writer:
- - Use semantic tags <aside> for footnote text, citations, for topics
+ - Use semantic tags <aside> for topics
(except abstract), admonitions, and system messages, and <nav> for
the Table of Contents.
@@ -70,7 +70,7 @@
characters will not be stripped from a `reference name`_ during
`identifier normalization`_.
- Example:
+ Example:
with ``--id-prefix="DU-"``, a section with title "34. May"
currently gets the identifier key ``DU-may`` and after the
change the identifier key ``DU-34-may``.
@@ -83,6 +83,8 @@
Write footnote brackets and field term colons to HTML, so that they
are present also without CSS and when copying text.
+ Use semantic tag <aside> for footnote text and citations.
+
LaTeX:
`legacy_class_functions`_ setting default changed to
"False", admonitions are now environments.
Modified: trunk/docutils/docutils/writers/_html_base.py
===================================================================
--- trunk/docutils/docutils/writers/_html_base.py 2021-06-25 20:56:23 UTC (rev 8772)
+++ trunk/docutils/docutils/writers/_html_base.py 2021-06-25 20:56:46 UTC (rev 8773)
@@ -417,7 +417,7 @@
ids = []
for (name, value) in attributes.items():
atts[name.lower()] = value
- classes = []
+ classes = atts.pop('classes', [])
languages = []
# unify class arguments and move language specification
for cls in node.get('classes', []) + atts.pop('class', '').split():
@@ -935,22 +935,17 @@
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 instead).
def visit_footnote(self, node):
- previous_node = node.parent[node.parent.index(node)-1]
- if not isinstance(previous_node, type(node)):
- listnode = node.copy()
- listnode['ids'] = []
- if isinstance(node, nodes.citation):
- classes = 'citation'
- else:
- classes = 'footnote ' + self.settings.footnote_references
- self.body.append(self.starttag(listnode, 'dl', CLASS=classes))
+ classes = [node.tagname]
+ if isinstance(node, nodes.footnote):
+ classes.append(self.settings.footnote_references)
+ self.body.append(self.starttag(node, 'aside',
+ classes=classes, role="note"))
def depart_footnote(self, node):
- self.body.append('</dd>\n')
- if not isinstance(node.next_node(descend=False, siblings=True),
- type(node)):
- self.body.append('</dl>\n')
+ self.body.append('</aside>\n')
def visit_footnote_reference(self, node):
href = '#' + node['refid']
@@ -1085,32 +1080,26 @@
# footnote and citation labels:
def visit_label(self, node):
- # pass parent node to get id into starttag:
- self.body.append(self.starttag(node.parent, 'dt', '', CLASS='label'))
- # backlinks to the footnote/citation reference(s):
+ self.body.append('<span class="label">')
+ self.body.append('<span class="fn-bracket">[</span>')
+ # footnote/citation backrefs:
if self.settings.footnote_backlinks:
backrefs = node.parent['backrefs']
if len(backrefs) == 1:
self.body.append('<a class="fn-backref" href="#%s">'
% backrefs[0])
- # bracket (hidden by CSS for superscript footnotes)
- self.body.append('<span class="fn-bracket">[</span>')
def depart_label(self, node):
- self.body.append('<span class="fn-bracket">]</span>')
- # backlinks to the footnote/citation reference(s):
- if self.settings.footnote_backlinks:
- backrefs = node.parent['backrefs']
- else:
- backrefs = []
+ backrefs = node.parent.get('backrefs', [])
if len(backrefs) == 1:
self.body.append('</a>')
+ self.body.append('<span class="fn-bracket">]</span>')
+ self.body.append('</span>\n')
if len(backrefs) > 1:
backlinks = ['<a href="#%s">%s</a>' % (ref, i)
for (i, ref) in enumerate(backrefs, 1)]
- self.body.append('<span class="fn-backref">(%s)</span>'
+ self.body.append('<span class="fn-backref">(%s)</span>\n'
% ','.join(backlinks))
- self.body.append('</dt>\n<dd>')
def visit_legend(self, node):
self.body.append(self.starttag(node, 'div', CLASS='legend'))
Modified: trunk/docutils/docutils/writers/html5_polyglot/__init__.py
===================================================================
--- trunk/docutils/docutils/writers/html5_polyglot/__init__.py 2021-06-25 20:56:23 UTC (rev 8772)
+++ trunk/docutils/docutils/writers/html5_polyglot/__init__.py 2021-06-25 20:56:46 UTC (rev 8773)
@@ -256,7 +256,7 @@
self.body_prefix.extend(header)
self.header.extend(header)
del self.body[start:]
-
+
# MIME types supported by the HTML5 <video> element
videotypes = ('video/mp4', 'video/webm', 'video/ogg')
Modified: trunk/docutils/docutils/writers/html5_polyglot/minimal.css
===================================================================
--- trunk/docutils/docutils/writers/html5_polyglot/minimal.css 2021-06-25 20:56:23 UTC (rev 8772)
+++ trunk/docutils/docutils/writers/html5_polyglot/minimal.css 2021-06-25 20:56:46 UTC (rev 8773)
@@ -101,16 +101,12 @@
/* bold field name, content starts on the same line */
dl.field-list,
dl.option-list,
-dl.docinfo,
-dl.footnote,
-dl.citation {
+dl.docinfo {
display: flow-root;
}
dl.field-list > dt,
dl.option-list > dt,
-dl.docinfo > dt,
-dl.footnote > dt,
-dl.citation > dt {
+dl.docinfo > dt {
font-weight: bold;
clear: left;
float: left;
@@ -151,23 +147,55 @@
span.option { white-space: nowrap; }
/* Footnotes and Citations */
-dl.footnote.superscript > dd { margin-left: 0.7em; }
-dl.footnote.brackets > dd { margin-left: 1.6em; }
-dl.footnote > dt { font-weight: normal; }
+
+.footnote, .citation {
+ margin: 1em 0; /* default paragraph skip (Firefox) */
+}
+/* hanging indent */
+.footnote { padding-left: 1.7em; }
+.citation { padding-left: 2em; }
+.footnote.superscript { padding-left: 1em; }
+.footnote > .label { margin-left: -1.7em; }
+.citation > .label { margin-left: -2em; }
+.footnote.superscript > .label { margin-left: -1em; }
+
+.footnote > .label + *,
+.citation > .label + * {
+ display: inline-block;
+ margin-top: 0;
+ vertical-align: top;
+}
+.footnote > .fn-backref + *,
+.citation > .fn-backref + * {
+ margin-top: 0;
+}
+.footnote > .label + p, .footnote > .fn-backref + p,
+.citation > .label + p, .citation > .fn-backref + p {
+ display: inline;
+ vertical-align: inherit;
+}
+
+.fn-backref > a { font-style: italic; }
+
+/* superscript footnotes */
a.footnote-reference.superscript,
-dl.footnote.superscript > dt.label {
+.footnote.superscript > .label,
+.footnote.superscript > .fn-backref {
vertical-align: super;
- font-size: small;
+ font-size: smaller;
+ line-height: 1;
}
-a.footnote-reference.superscript > span.fn-bracket,
-dl.footnote.superscript > dt.label span.fn-bracket {
- display: none;
+a.footnote-reference.superscript > .fn-bracket,
+.footnote.superscript > .label > .fn-bracket {
+ /* hide brackets in display but leave for copy/paste */
+ display: inline-block;
+ width: 0;
+ overflow: hidden;
}
-dt.label > span.fn-backref {
- margin-left: 0.2em;
- font-weight: normal;
+.footnote-reference.superscript + .footnote-reference.superscript {
+ padding-left: 0.15em; /* separate consecutive footnote references */
+ /* TODO: unfortunately, "+" also selects with text between the references. */
}
-dt.label > span.fn-backref > a { font-style: italic; }
/* Alignment */
.align-left {
Modified: trunk/docutils/docutils/writers/html5_polyglot/plain.css
===================================================================
--- trunk/docutils/docutils/writers/html5_polyglot/plain.css 2021-06-25 20:56:23 UTC (rev 8772)
+++ trunk/docutils/docutils/writers/html5_polyglot/plain.css 2021-06-25 20:56:46 UTC (rev 8773)
@@ -184,11 +184,18 @@
/* ----------------------- */
/* line on the left */
-dl.footnote {
- padding-left: 1ex;
- border-left: solid;
- border-left-width: thin;
+.footnote {
+ border-left: solid thin;
+ padding-left: 2.1em;
+ margin-bottom: 0;
}
+.footnote + .footnote {
+ padding-top: 0.5em;
+ margin-top: 0;
+}
+.footnote.superscript {
+ padding-left: 1.2em;
+}
/* Directives */
/* ---------- */
@@ -261,7 +268,7 @@
/* Math */
/* for math-output=MathML (for math-output=HTML, see math.css) */
mtable.align > mtr > mtd { /* emulate AMS "align" environment. */
- text-align: left;
+ text-align: left;
}
mstyle.mathscr, mi.mathscr {
font-family: STIX;
Modified: trunk/docutils/docutils/writers/html5_polyglot/responsive.css
===================================================================
--- trunk/docutils/docutils/writers/html5_polyglot/responsive.css 2021-06-25 20:56:23 UTC (rev 8772)
+++ trunk/docutils/docutils/writers/html5_polyglot/responsive.css 2021-06-25 20:56:46 UTC (rev 8773)
@@ -340,7 +340,7 @@
/* Math */
/* for math-output=MathML (for math-output=HTML, see math.css) */
mtable.align > mtr > mtd { /* emulate AMS "align" environment. */
- text-align: left;
+ text-align: left;
}
mstyle.mathscr, mi.mathscr {
font-family: STIX;
Modified: trunk/docutils/docutils/writers/html5_polyglot/tuftig.css
===================================================================
--- trunk/docutils/docutils/writers/html5_polyglot/tuftig.css 2021-06-25 20:56:23 UTC (rev 8772)
+++ trunk/docutils/docutils/writers/html5_polyglot/tuftig.css 2021-06-25 20:56:46 UTC (rev 8773)
@@ -46,7 +46,8 @@
/* vertical space (parskip) */
p, ol, ul, dl, li,
div.line-block,
-div.topic,
+.topic,
+.footnote, .citation,
table {
margin-top: 0.5em;
margin-bottom: 0.5em;
@@ -249,6 +250,9 @@
figcaption {
font-size: 0.8em;
}
+.fullwidth > figcaption {
+ font-size: inherit;
+}
figure.numbered > figcaption > p:before {
counter-increment: figure;
content: "Figure " counter(figure) ": ";
@@ -276,8 +280,7 @@
}
/* Admonitions and System Messages */
-.admonition,
-div.system-message {
+.admonition, .system-message {
border-style: solid;
border-color: silver;
border-width: thin;
@@ -324,7 +327,7 @@
}
/* undecorated links */
.contents a:link, a.toc-backref:link, a.image-reference:link,
-a.footnote-reference:link, a.fn-backref:link, .fn-backref a:link,
+a[role="doc-noteref"]:link, a[role="doc-backlink"]:link, .backrefs a:link,
a.citation-reference:link,
a[href^="#system-message"] {
text-decoration: none;
@@ -408,11 +411,8 @@
figure.marginal > figcaption {
font-size: 1em;
}
-dl.footnote {
- font-size: 0.8em;
- padding-left: 1ex;
- border-left: solid;
- border-left-width: thin;
+.footnote {
+ font-size: smaller;
overflow: auto;
}
@@ -463,11 +463,11 @@
/* Main text elements */
main > *, section > *,
figure > img,
- dl.footnote.align-left, /* override the placement in the margin */
- dl.citation.align-left {
+ .footnote.align-left, /* override the placement in the margin */
+ .citation.align-left {
grid-column: content-start / content-end;
}
- dl.citation.align-left {
+ .citation.align-left {
font-size: 1em;
}
figure > img { /* indent */
@@ -478,8 +478,8 @@
/* Margin Elements */
/* Sidebar, Footnotes, Citations, Captions */
aside.sidebar,
- dl.footnote,
- dl.citation,
+ .footnote,
+ .citation,
figcaption,
/* table > caption, does not work :(*/
.marginal,
@@ -490,6 +490,7 @@
width: auto;
max-width: 55em;
margin: 0.5em 0;
+ border: none;
padding: 0;
font-size: 0.8em;
text-align: initial; /* overwrite align-* */
@@ -502,14 +503,16 @@
display: block;
margin: 0.5em 0;
}
- dl.footnote {
+ .footnote {
padding-left: 0;
border-left: none;
}
- dl.citation > dd,
- dl.footnote.superscript > dd {
- margin-left: 0;
+ .citation {
+ padding-left: 1em;
}
+ .citation .label {
+ margin-left: -1em;
+ }
/* Fullwidth Elements */
h1.title, p.subtitle,
@@ -520,7 +523,8 @@
div.system-message,
pre,
.fullwidth,
- .fullwidth img {
+ .fullwidth img,
+ .fullwidth figcaption {
/* background-color: Linen; */
grid-column: content-start / end;
margin-right: calc(10% - 3rem);
Modified: trunk/docutils/test/functional/expected/footnotes_html5.html
===================================================================
--- trunk/docutils/test/functional/expected/footnotes_html5.html 2021-06-25 20:56:23 UTC (rev 8772)
+++ trunk/docutils/test/functional/expected/footnotes_html5.html 2021-06-25 20:56:46 UTC (rev 8773)
@@ -14,53 +14,114 @@
<p>Paragraphs may contain footnote references (manually numbered<a class="footnote-reference superscript" href="#footnote-1" id="footnote-reference-1"><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"><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"><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"><span class="fn-bracket">[</span>*<span class="fn-bracket">]</span></a>) or citation references (<a class="citation-reference" href="#cit2002" id="citation-reference-1">[CIT2002]</a>, <a class="citation-reference" href="#du2015" id="citation-reference-2">[DU2015]</a>).</p>
-<dl class="footnote superscript">
-<dt class="label" id="footnote-1"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span><span class="fn-backref">(<a href="#footnote-reference-1">1</a>,<a href="#footnote-reference-5">2</a>)</span></dt>
-<dd><p>A footnote contains body elements, consistently indented by at
+<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="fn-backref">(<a href="#footnote-reference-1">1</a>,<a href="#footnote-reference-5">2</a>)</span>
+<p>A footnote contains body elements, consistently indented by at
least 3 spaces.</p>
<p>This is the footnote's second paragraph.</p>
-</dd>
-<dt class="label" id="label"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span><span class="fn-backref">(<a href="#footnote-reference-3">1</a>,<a href="#footnote-reference-6">2</a>)</span></dt>
-<dd><p>Footnotes may be numbered, either manually (as in<a class="footnote-reference superscript" href="#footnote-1" id="footnote-reference-5"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a>) or
+</aside>
+<aside class="footnote superscript" id="label" role="note">
+<span class="label"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></span>
+<span class="fn-backref">(<a href="#footnote-reference-3">1</a>,<a href="#footnote-reference-6">2</a>)</span>
+<p>Footnotes may be numbered, either manually (as in<a class="footnote-reference superscript" href="#footnote-1" id="footnote-reference-5"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a>) or
automatically using a "#"-prefixed label. This footnote has a
label so it can be referred to from multiple places, both as a
footnote reference (<a class="footnote-reference superscript" href="#label" id="footnote-reference-6"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></a>) and as a <a class="reference internal" href="#label">hyperlink reference</a>.</p>
-</dd>
-<dt class="label" id="footnote-2"><a class="fn-backref" href="#footnote-reference-2"><span class="fn-bracket">[</span>3<span class="fn-bracket">]</span></a></dt>
-<dd><p>This footnote is numbered automatically and anonymously using a
+</aside>
+<aside class="footnote superscript" id="footnote-2" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-2">3</a><span class="fn-bracket">]</span></span>
+<p>This footnote is numbered automatically and anonymously using a
label of "#" only.</p>
<p>This is the second paragraph.</p>
<p>And this is the third paragraph.</p>
-</dd>
-<dt class="label" id="footnote-3"><a class="fn-backref" href="#footnote-reference-4"><span class="fn-bracket">[</span>*<span class="fn-bracket">]</span></a></dt>
-<dd><p>Footnotes may also use symbols, specified with a "*" label.
+</aside>
+<aside class="footnote superscript" id="footnote-3" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-4">*</a><span class="fn-bracket">]</span></span>
+<p>Footnotes may also use symbols, specified with a "*" label.
Here's a reference to the next footnote:<a class="footnote-reference superscript" href="#footnote-4" id="footnote-reference-7"><span class="fn-bracket">[</span>†<span class="fn-bracket">]</span></a>.</p>
-</dd>
-<dt class="label" id="footnote-4"><a class="fn-backref" href="#footnote-reference-7"><span class="fn-bracket">[</span>†<span class="fn-bracket">]</span></a></dt>
-<dd><p>This footnote shows the next symbol in the sequence.</p>
-</dd>
-<dt class="label" id="footnote-5"><span class="fn-bracket">[</span>4<span class="fn-bracket">]</span></dt>
-<dd><p>Here's an unreferenced footnote, with a reference to a
+</aside>
+<aside class="footnote superscript" id="footnote-4" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-7">†</a><span class="fn-bracket">]</span></span>
+<p>This footnote shows the next symbol in the sequence.</p>
+</aside>
+<aside class="footnote superscript" id="footnote-5" role="note">
+<span class="label"><span class="fn-bracket">[</span>4<span class="fn-bracket">]</span></span>
+<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"><span class="fn-bracket">[</span>5<span class="fn-bracket">]</span></a>.</p>
-</dd>
-</dl>
+</aside>
<section id="citations">
<h2>Citations</h2>
-<dl class="citation">
-<dt class="label" id="cit2002"><span class="fn-bracket">[</span>CIT2002<span class="fn-bracket">]</span><span class="fn-backref">(<a href="#citation-reference-1">1</a>,<a href="#citation-reference-3">2</a>)</span></dt>
-<dd><p>Citations are text-labeled footnotes. They may be
+<aside class="citation" id="cit2002" role="note">
+<span class="label"><span class="fn-bracket">[</span>CIT2002<span class="fn-bracket">]</span></span>
+<span class="fn-backref">(<a href="#citation-reference-1">1</a>,<a href="#citation-reference-3">2</a>)</span>
+<p>Citations are text-labeled footnotes. They may be
rendered separately and differently from footnotes.</p>
+</aside>
+<aside class="citation" id="du2015" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#citation-reference-2">DU2015</a><span class="fn-bracket">]</span></span>
+<p><cite>Example document</cite>, Hometown: 2015.</p>
+</aside>
+<p>Here's a reference to the above, <a class="citation-reference" href="#cit2002" id="citation-reference-3">[CIT2002]</a>.</p>
+<aside class="footnote superscript" id="footnote-6" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-8">5</a><span class="fn-bracket">]</span></span>
+<p>this footnote is missing in the standard example document.</p>
+</aside>
+<p>Footnotes may contain block elements like lists<a class="footnote-reference superscript" href="#list-note" id="footnote-reference-9"><span class="fn-bracket">[</span>7<span class="fn-bracket">]</span></a><a class="footnote-reference superscript" href="#footnote-7" id="footnote-reference-10"><span class="fn-bracket">[</span>6<span class="fn-bracket">]</span></a>,
+admonitions<a class="footnote-reference superscript" href="#footnote-8" id="footnote-reference-11"><span class="fn-bracket">[</span>8<span class="fn-bracket">]</span></a>, or tables<a class="footnote-reference superscript" href="#footnote-9" id="footnote-reference-12"><span class="fn-bracket">[</span>9<span class="fn-bracket">]</span></a>.</p>
+<aside class="footnote superscript" id="footnote-7" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-10">6</a><span class="fn-bracket">]</span></span>
+<ol class="arabic simple">
+<li><p>An ordered list</p></li>
+<li><p>in a footnote.</p></li>
+</ol>
+</aside>
+<aside class="footnote superscript" id="list-note" role="note">
+<span class="label"><span class="fn-bracket">[</span>7<span class="fn-bracket">]</span></span>
+<span class="fn-backref">(<a href="#footnote-reference-9">1</a>,<a href="#footnote-reference-13">2</a>)</span>
+<ul class="simple">
+<li><p>An unordered list (bullet list)</p></li>
+<li><p>in a footnote.</p></li>
+</ul>
+<p>And a trailing paragraph.</p>
+</aside>
+<aside class="footnote superscript" id="footnote-8" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-11">8</a><span class="fn-bracket">]</span></span>
+<dl class="field-list simple">
+<dt>Field<span class="colon">:</span></dt>
+<dd><p>list</p>
</dd>
-<dt class="label" id="du2015"><a class="fn-backref" href="#citation-reference-2"><span class="fn-bracket">[</span>DU2015<span class="fn-bracket">]</span></a></dt>
-<dd><p><cite>Example document</cite>, Hometown: 2015.</p>
+<dt>with<span class="colon">:</span></dt>
+<dd><p>2 items.</p>
</dd>
</dl>
-<p>Here's a reference to the above, <a class="citation-reference" href="#cit2002" id="citation-reference-3">[CIT2002]</a>.</p>
-<dl class="footnote superscript">
-<dt class="label" id="footnote-6"><a class="fn-backref" href="#footnote-reference-8"><span class="fn-bracket">[</span>5<span class="fn-bracket">]</span></a></dt>
-<dd><p>this footnote is missing in the standard example document.</p>
-</dd>
-</dl>
+</aside>
+<aside class="footnote superscript" id="footnote-9" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-12">9</a><span class="fn-bracket">]</span></span>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>This is a note in a note.</p>
+</div>
+</aside>
+<aside class="footnote superscript" id="footnote-10" role="note">
+<span class="label"><span class="fn-bracket">[</span>10<span class="fn-bracket">]</span></span>
+<table>
+<colgroup>
+<col style="width: 36%" />
+<col style="width: 64%" />
+</colgroup>
+<tbody>
+<tr><td><p>a</p></td>
+<td><p>table</p></td>
+</tr>
+<tr><td><p>in a</p></td>
+<td><p>footnote</p></td>
+</tr>
+</tbody>
+</table>
+</aside>
+<p>This<a class="footnote-reference superscript" href="#list-note" id="footnote-reference-13"><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>
</main>
</body>
Modified: trunk/docutils/test/functional/expected/standalone_rst_html5.html
===================================================================
--- trunk/docutils/test/functional/expected/standalone_rst_html5.html 2021-06-25 20:56:23 UTC (rev 8772)
+++ trunk/docutils/test/functional/expected/standalone_rst_html5.html 2021-06-25 20:56:46 UTC (rev 8773)
@@ -470,45 +470,51 @@
</section>
<section id="footnotes">
<h3><a class="toc-backref" href="#toc-entry-17"><span class="sectnum">2.11</span> Footnotes</a></h3>
-<dl class="footnote brackets">
-<dt class="label" id="footnote-1"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span><span class="fn-backref">(<a href="#footnote-reference-1">1</a>,<a href="#footnote-reference-5">2</a>,<a href="#footnote-reference-9">3</a>)</span></dt>
-<dd><p>A footnote contains body elements, consistently indented by at
+<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="fn-backref">(<a href="#footnote-reference-1">1</a>,<a href="#footnote-reference-5">2</a>,<a href="#footnote-reference-9">3</a>)</span>
+<p>A footnote contains body elements, consistently indented by at
least 3 spaces.</p>
<p>This is the footnote's second paragraph.</p>
-</dd>
-<dt class="label" id="label"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span><span class="fn-backref">(<a href="#footnote-reference-3">1</a>,<a href="#footnote-reference-6">2</a>)</span></dt>
-<dd><p>Footnotes may be numbered, either manually (as in <a class="footnote-reference brackets" href="#footnote-1" id="footnote-reference-5"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a>) or
+</aside>
+<aside class="footnote brackets" id="label" role="note">
+<span class="label"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></span>
+<span class="fn-backref">(<a href="#footnote-reference-3">1</a>,<a href="#footnote-reference-6">2</a>)</span>
+<p>Footnotes may be numbered, either manually (as in <a class="footnote-reference brackets" href="#footnote-1" id="footnote-reference-5"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a>) or
automatically using a "#"-prefixed label. This footnote has a
label so it can be referred to from multiple places, both as a
footnote reference (<a class="footnote-reference brackets" href="#label" id="footnote-reference-6"><span class="fn-bracket">[</span>2<span class="fn-bracket">]</span></a>) and as a <a class="reference internal" href="#label">hyperlink reference</a>.</p>
-</dd>
-<dt class="label" id="footnote-2"><a class="fn-backref" href="#footnote-reference-2"><span class="fn-bracket">[</span>3<span class="fn-bracket">]</span></a></dt>
-<dd><p>This footnote is numbered automatically and anonymously using a
+</aside>
+<aside class="footnote brackets" id="footnote-2" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-2">3</a><span class="fn-bracket">]</span></span>
+<p>This footnote is numbered automatically and anonymously using a
label of "#" only.</p>
<p>This is the second paragraph.</p>
<p>And this is the third paragraph.</p>
-</dd>
-<dt class="label" id="footnote-3"><a class="fn-backref" href="#footnote-reference-4"><span class="fn-bracket">[</span>*<span class="fn-bracket">]</span></a></dt>
-<dd><p>Footnotes may also use symbols, specified with a "*" label.
+</aside>
+<aside class="footnote brackets" id="footnote-3" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-4">*</a><span class="fn-bracket">]</span></span>
+<p>Footnotes may also use symbols, specified with a "*" label.
Here's a reference to the next footnote: <a class="footnote-reference brackets" href="#footnote-4" id="footnote-reference-7"><span class="fn-bracket">[</span>†<span class="fn-bracket">]</span></a>.</p>
-</dd>
-<dt class="label" id="footnote-4"><a class="fn-backref" href="#footnote-reference-7"><span class="fn-bracket">[</span>†<span class="fn-bracket">]</span></a></dt>
-<dd><p>This footnote shows the next symbol in the sequence.</p>
-</dd>
-<dt class="label" id="footnote-5"><span class="fn-bracket">[</span>4<span class="fn-bracket">]</span></dt>
-<dd><p>Here's an unreferenced footnote, with a reference to a
+</aside>
+<aside class="footnote brackets" id="footnote-4" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-7">†</a><span class="fn-bracket">]</span></span>
+<p>This footnote shows the next symbol in the sequence.</p>
+</aside>
+<aside class="footnote brackets" id="footnote-5" role="note">
+<span class="label"><span class="fn-bracket">[</span>4<span class="fn-bracket">]</span></span>
+<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>
-</dd>
-</dl>
+</aside>
</section>
<section id="citations">
<h3><a class="toc-backref" href="#toc-entry-18"><span class="sectnum">2.12</span> Citations</a></h3>
-<dl class="citation">
-<dt class="label" id="cit2002"><span class="fn-bracket">[</span>CIT2002<span class="fn-bracket">]</span><span class="fn-backref">(<a href="#citation-reference-1">1</a>,<a href="#citation-reference-2">2</a>)</span></dt>
-<dd><p>Citations are text-labeled footnotes. They may be
+<aside class="citation" id="cit2002" role="note">
+<span class="label"><span class="fn-bracket">[</span>CIT2002<span class="fn-bracket">]</span></span>
+<span class="fn-backref">(<a href="#citation-reference-1">1</a>,<a href="#citation-reference-2">2</a>)</span>
+<p>Citations are text-labeled footnotes. They may be
rendered separately and differently from footnotes.</p>
-</dd>
-</dl>
+</aside>
<p>Here's a reference to the above, <a class="citation-reference" href="#cit2002" id="citation-reference-2">[CIT2002]</a>, and a <a href="#system-message-3"><span class="problematic" id="citation-reference-3">[nonexistent]_</span></a>
citation.</p>
</section>
@@ -830,44 +836,55 @@
</section>
<section id="target-footnotes">
<h4><a class="toc-backref" href="#toc-entry-58"><span class="sectnum">2.14.6</span> Target Footnotes</a></h4>
-<dl class="footnote brackets">
-<dt class="label" id="footnote-7"><span class="fn-bracket">[</span>7<span class="fn-bracket">]</span><span class="fn-backref">(<a href="#footnote-reference-18">1</a>,<a href="#footnote-reference-19">2</a>,<a href="#footnote-reference-20">3</a>,<a href="#footnote-reference-25">4</a>)</span></dt>
-<dd><p><a class="reference external" href="http://www.python.org/">http://www.python.org/</a></p>
-</dd>
-<dt class="label" id="footnote-8"><a class="fn-backref" href="#footnote-reference-21"><span class="fn-bracket">[</span>8<span class="fn-bracket">]</span></a></dt>
-<dd><p><a class="reference external" href="http://pygments.org/">http://pygments.org/</a></p>
-</dd>
-<dt class="label" id="footnote-9"><a class="fn-backref" href="#footnote-reference-22"><span class="fn-bracket">[</span>9<span class="fn-bracket">]</span></a></dt>
-<dd><p><a class="reference external" href="http://docutils.sourceforge.net/docs/user/config.html#table-style">http://docutils.sourceforge.net/docs/user/config.html#table-style</a></p>
-</dd>
-<dt class="label" id="footnote-10"><a class="fn-backref" href="#footnote-reference-23"><span class="fn-bracket">[</span>10<span class="fn-bracket">]</span></a></dt>
-<dd><p><a class="reference external" href="http://tug.ctan.org/tex-archive/macros/latex/contrib/booktabs/booktabs.pdf">http://tug.ctan.org/tex-archive/macros/latex/contrib/booktabs/booktabs.pdf</a></p>
-</dd>
-<dt class="label" id="footnote-11"><a class="fn-backref" href="#footnote-reference-24"><span class="fn-bracket">[</span>11<span class="fn-bracket">]</span></a></dt>
-<dd><p><a class="reference external" href="http://docutils.sourceforge.net/docs/dev/todo.html#interpreted-text">http://docutils.sourceforge.net/docs/dev/todo.html#interpreted-text</a></p>
-</dd>
-<dt class="label" id="footnote-12"><a class="fn-backref" href="#footnote-reference-26"><span class="fn-bracket">[</span>12<span class="fn-bracket">]</span></a></dt>
-<dd><p><a class="reference external" href="https://docutils.sourceforge.io/">https://docutils.sourceforge.io/</a></p>
-</dd>
-<dt class="label" id="footnote-13"><a class="fn-backref" href="#footnote-reference-27"><span class="fn-bracket">[</span>13<span class="fn-bracket">]</span></a></dt>
-<dd><p><a class="reference external" href="https://docutils.sourceforge.io/docs/ref/rst/directives.html">https://docutils.sourceforge.io/docs/ref/rst/directives.html</a></p>
-</dd>
-<dt class="label" id="footnote-14"><a class="fn-backref" href="#footnote-reference-28"><span class="fn-bracket">[</span>14<span class="fn-bracket">]</span></a></dt>
-<dd><p><a class="reference external" href="https://docutils.sourceforge.io/docs/ref/rst/directives.html#metadata">https://docutils.sourceforge.io/docs/ref/rst/directives.html#metadata</a></p>
-</dd>
-<dt class="label" id="footnote-15"><a class="fn-backref" href="#footnote-reference-29"><span class="fn-bracket">[</span>15<span class="fn-bracket">]</span></a></dt>
-<dd><p><a class="reference external" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag">https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag</a></p>
-</dd>
-<dt class="label" id="footnote-16"><a class="fn-backref" href="#footnote-reference-30"><span class="fn-bracket">[</span>16<span class="fn-bracket">]</span></a></dt>
-<dd><p><a class="reference external" href="https://stackoverflow.com/questions/39547412/same-font-size-for-h1-and-h2-in-article">https://stackoverflow.com/questions/39547412/same-font-size-for-h1-and-h2-in-article</a></p>
-</dd>
-<dt class="label" id="footnote-17"><a class="fn-backref" href="#footnote-reference-31"><span class="fn-bracket">[</span>17<span class="fn-bracket">]</span></a></dt>
-<dd><p><a class="reference external" href="https://html.spec.whatwg.org/#text-level-semantics">https://html.spec.whatwg.org/#text-level-semantics</a></p>
-</dd>
-<dt class="label" id="footnote-18"><a class="fn-backref" href="#footnote-reference-32"><span class="fn-bracket">[</span>18<span class="fn-bracket">]</span></a></dt>
-<dd><p><a class="reference external" href="https://html.spec.whatwg.org/multipage/edits.html">https://html.spec.whatwg.org/multipage/edits.html</a></p>
-</dd>
-</dl>
+<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="fn-backref">(<a href="#footnote-reference-18">1</a>,<a href="#footnote-reference-19">2</a>,<a href="#footnote-reference-20">3</a>,<a href="#footnote-reference-25">4</a>)</span>
+<p><a class="reference external" href="http://www.python.org/">http://www.python.org/</a></p>
+</aside>
+<aside class="footnote brackets" id="footnote-8" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-21">8</a><span class="fn-bracket">]</span></span>
+<p><a class="reference external" href="http://pygments.org/">http://pygments.org/</a></p>
+</aside>
+<aside class="footnote brackets" id="footnote-9" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-22">9</a><span class="fn-bracket">]</span></span>
+<p><a class="reference external" href="http://docutils.sourceforge.net/docs/user/config.html#table-style">http://docutils.sourceforge.net/docs/user/config.html#table-style</a></p>
+</aside>
+<aside class="footnote brackets" id="footnote-10" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-23">10</a><span class="fn-bracket">]</span></span>
+<p><a class="reference external" href="http://tug.ctan.org/tex-archive/macros/latex/contrib/booktabs/booktabs.pdf">http://tug.ctan.org/tex-archive/macros/latex/contrib/booktabs/booktabs.pdf</a></p>
+</aside>
+<aside class="footnote brackets" id="footnote-11" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-24">11</a><span class="fn-bracket">]</span></span>
+<p><a class="reference external" href="http://docutils.sourceforge.net/docs/dev/todo.html#interpreted-text">http://docutils.sourceforge.net/docs/dev/todo.html#interpreted-text</a></p>
+</aside>
+<aside class="footnote brackets" id="footnote-12" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-26">12</a><span class="fn-bracket">]</span></span>
+<p><a class="reference external" href="https://docutils.sourceforge.io/">https://docutils.sourceforge.io/</a></p>
+</aside>
+<aside class="footnote brackets" id="footnote-13" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-27">13</a><span class="fn-bracket">]</span></span>
+<p><a class="reference external" href="https://docutils.sourceforge.io/docs/ref/rst/directives.html">https://docutils.sourceforge.io/docs/ref/rst/directives.html</a></p>
+</aside>
+<aside class="footnote brackets" id="footnote-14" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-28">14</a><span class="fn-bracket">]</span></span>
+<p><a class="reference external" href="https://docutils.sourceforge.io/docs/ref/rst/directives.html#metadata">https://docutils.sourceforge.io/docs/ref/rst/directives.html#metadata</a></p>
+</aside>
+<aside class="footnote brackets" id="footnote-15" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-29">15</a><span class="fn-bracket">]</span></span>
+<p><a class="reference external" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag">https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag</a></p>
+</aside>
+<aside class="footnote brackets" id="footnote-16" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-30">16</a><span class="fn-bracket">]</span></span>
+<p><a class="reference external" href="https://stackoverflow.com/questions/39547412/same-font-size-for-h1-and-h2-in-article">https://stackoverflow.com/questions/39547412/same-font-size-for-h1-and-h2-in-article</a></p>
+</aside>
+<aside class="footnote brackets" id="footnote-17" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-31">17</a><span class="fn-bracket">]</span></span>
+<p><a class="reference external" href="https://html.spec.whatwg.org/#text-level-semantics">https://html.spec.whatwg.org/#text-level-semantics</a></p>
+</aside>
+<aside class="footnote brackets" id="footnote-18" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-32">18</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>
</section>
<section id="replacement-text">
<h4><a class="toc-backref" href="#toc-entry-59"><span class="sectnum">2.14.7</span> Replacement Text</a></h4>
@@ -1585,12 +1602,11 @@
<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>
-<dl class="footnote brackets">
-<dt class="label" id="footnote-6"><a class="fn-backref" href="#footnote-reference-11"><span class="fn-bracket">[</span>‡<span class="fn-bracket">]</span></a></dt>
-<dd><p>Irish Organic Farmers and Growers Association</p>
+<aside class="footnote brackets" id="footnote-6" role="note">
+<span class="label"><span class="fn-bracket">[</span><a class="fn-backref" href="#footnote-reference-11">‡</a><span class="fn-bracket">]</span></span>
+<p>Irish Organic Farmers and Growers Association</p>
+</aside>
</dd>
-</dl>
-</dd>
<dt>ruby, rt, rp</dt>
<dd><p>Ruby annotations</p>
<p>Require inline nesting, currently not supported in rST.</p>
@@ -1715,16 +1731,18 @@
</blockquote>
</dd>
</dl>
-<dl class="footnote brackets">
-<dt class="label" id="attribute-optional"><span class="fn-bracket">[</span>5<span class="fn-bracket">]</span><span class="fn-backref">(<a href="#footnote-reference-10">1</a>,<a href="#footnote-reference-14">2</a>,<a href="#footnote-reference-16">3</a>,<a href="#footnote-reference-17">4</a>)</span></dt>
-<dd><p>Would gain from support for attributes/arguments
+<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="fn-backref">(<a href="#footnote-reference-10">1</a>,<a href="#footnote-reference-14">2</a>,<a href="#footnote-reference-16">3</a>,<a href="#footnote-reference-17">4</a>)</span>
+<p>Would gain from support for attributes/arguments
to inline roles. See <a class="reference external" href="http://docutils.sourceforge.net/docs/dev/todo.html#interpreted-text">TODO</a> <a class="footnote-reference brackets" href="#footnote-11" id="footnote-reference-24"><span class="fn-bracket">[</span>11<span class="fn-bracket">]</span></a></p>
-</dd>
-<dt class="label" id="attribute-required"><span class="fn-bracket">[</span>6<span class="fn-bracket">]</span><span class="fn-backref">(<a href="#footnote-reference-12">1</a>,<a href="#footnote-reference-13">2</a>,<a href="#footnote-reference-15">3</a>)</span></dt>
-<dd><p>Requires support for attributes to inline
+</aside>
+<aside class="footnote brackets" id="attribute-required" role="note">
+<span class="label"><span class="fn-bracket">[</span>6<span class="fn-bracket">]</span></span>
+<span class="fn-backref">(<a href="#footnote-reference-12">1</a>,<a href="#footnote-reference-13">2</a>,<a href="#footnote-reference-15">3</a>)</span>
+<p>Requires support for attributes to inline
roles to make sense.</p>
-</dd>
-</dl>
+</aside>
</section>
<section id="indicating-edits">
<h3><a class="toc-backref" href="#toc-entry-51"><span class="sectnum">3.4</span> Indicating Edits</a></h3>
Modified: trunk/docutils/test/functional/input/footnotes.txt
===================================================================
--- trunk/docutils/test/functional/input/footnotes.txt 2021-06-25 20:56:23 UTC (rev 8772)
+++ trunk/docutils/test/functional/input/footnotes.txt 2021-06-25 20:56:46 UTC (rev 8773)
@@ -7,11 +7,35 @@
.. include:: data/standard.txt
:start-after: Footnotes
- ---------
+ ---------
:end-before: Here's a reference to the above, [CIT2002]_,
-
+
.. [DU2015] `Example document`, Hometown: 2015.
Here's a reference to the above, [CIT2002]_.
.. [5] this footnote is missing in the standard example document.
+
+Footnotes may contain block elements like lists [#list-note]_ [#]_,
+admonitions [#]_, or tables [#]_.
+
+.. [#] #. An ordered list
+ #. in a footnote.
+
+.. [#list-note] * An unordered list (bullet list)
+ * in a footnote.
+
+ And a trailing paragraph.
+
+.. [#] :Field: list
+ :with: 2 items.
+
+.. [#] .. note:: This is a note in a note.
+
+.. [#] ===== =========
+ a table
+ in a footnote
+ ===== =========
+
+This [#list-note]_ is a second reference to the footnote containing
+a bullet. list.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|