|
From: <mi...@us...> - 2021-06-25 20:57:07
|
Revision: 8774
http://sourceforge.net/p/docutils/code/8774
Author: milde
Date: 2021-06-25 20:57:05 +0000 (Fri, 25 Jun 2021)
Log Message:
-----------
Code simplification in writers.
Use node[...] instead of node.get(...) for basic attributes.
Remove HTMLTranslator.topic_classes auxiliary attribute.
HTML5: Do not add "compound-first", "compound-middle",
or "compound-last" to elements nested in a compound.
Modified Paths:
--------------
trunk/docutils/HISTORY.txt
trunk/docutils/RELEASE-NOTES.txt
trunk/docutils/docutils/writers/_html_base.py
trunk/docutils/docutils/writers/html4css1/__init__.py
trunk/docutils/docutils/writers/html5_polyglot/__init__.py
trunk/docutils/docutils/writers/latex2e/__init__.py
trunk/docutils/test/functional/expected/standalone_rst_html5.html
Modified: trunk/docutils/HISTORY.txt
===================================================================
--- trunk/docutils/HISTORY.txt 2021-06-25 20:56:46 UTC (rev 8773)
+++ trunk/docutils/HISTORY.txt 2021-06-25 20:57:05 UTC (rev 8774)
@@ -25,7 +25,7 @@
"meta" nodes if they are not supported by the output format.
__ docs/ref/doctree.html#meta
-
+
- document.make_id(): Keep leading number and hyphen characters
from `name` if the id_prefix setting is non-empty.
@@ -62,11 +62,19 @@
they are present also without CSS and when copying text.
Adapt ``minimal.css``.
+ - Use semantic tag <aside> for footnote text and citations.
+
+ - Do not add "compound-first", "compound-middle", or "compound-last" to
+ elements nested in a compound (no change with `html4css1`).
+
+ - Removed attribute ``HTMLTranslator.topic_classes``
+
+
* docutils/writers/latex2e/__init__.py
- The setting `legacy_class_functions`_ now defaults to "False".
Adapt stylesheets modifying ``\DUadmonition`` and/or ``\DUtitle``.
-
+
- Apply patch #181 "Fix tocdepth when chapter/part in use" by
John Thorvald Wodder II.
Modified: trunk/docutils/RELEASE-NOTES.txt
===================================================================
--- trunk/docutils/RELEASE-NOTES.txt 2021-06-25 20:56:46 UTC (rev 8773)
+++ trunk/docutils/RELEASE-NOTES.txt 2021-06-25 20:57:05 UTC (rev 8774)
@@ -85,6 +85,10 @@
Use semantic tag <aside> for footnote text and citations.
+ Do not add "compound-first", "compound-middle", or "compound-last" to
+ elements nested in a compound. Use child selector and "first-child",
+ "last-child" pseudo classes instead.
+
LaTeX:
`legacy_class_functions`_ setting default changed to
"False", admonitions are now environments.
@@ -100,6 +104,9 @@
* Removed function: ``utils.unique_combinations``
(obsoleted by ``itertools.combinations``).
+* Removed attribute: ``HTMLTranslator.topic_classes``
+ (check node.parent.classes instead).
+
* Various bugfixes and improvements (see HISTORY_).
__ docs/ref/doctree.html#meta
Modified: trunk/docutils/docutils/writers/_html_base.py
===================================================================
--- trunk/docutils/docutils/writers/_html_base.py 2021-06-25 20:56:46 UTC (rev 8773)
+++ trunk/docutils/docutils/writers/_html_base.py 2021-06-25 20:57:05 UTC (rev 8774)
@@ -328,7 +328,6 @@
Used by visit_* and depart_* functions in conjunction with the tree
traversal. Make sure that the pops correspond to the pushes."""
- self.topic_classes = []
self.colspecs = []
self.compact_p = True
self.compact_simple = False
@@ -521,8 +520,7 @@
self.depart_docinfo_item()
def visit_admonition(self, node):
- node['classes'].insert(0, 'admonition')
- self.body.append(self.starttag(node, 'div'))
+ self.body.append(self.starttag(node, 'div', classes=['admonition']))
def depart_admonition(self, node=None):
self.body.append('</div>\n')
@@ -596,8 +594,7 @@
and not self.settings.compact_lists):
return False
# Table of Contents:
- if (self.topic_classes == ['contents']):
- # TODO: look in parent nodes, remove self.topic_classes?
+ if 'contents' in node.parent['classes']:
return True
# check the list items:
return self.check_simple_list(node)
@@ -683,11 +680,6 @@
def visit_compound(self, node):
self.body.append(self.starttag(node, 'div', CLASS='compound'))
- if len(node) > 1:
- node[0]['classes'].append('compound-first')
- node[-1]['classes'].append('compound-last')
- for child in node[1:-1]:
- child['classes'].append('compound-middle')
def depart_compound(self, node):
self.body.append('</div>\n')
@@ -730,21 +722,14 @@
self.body.append('</dd>\n')
def visit_definition_list(self, node):
- if self.is_compactable(node):
- node.setdefault('classes', []).append('simple')
- self.body.append(self.starttag(node, 'dl'))
+ classes = ['simple'] if self.is_compactable(node) else []
+ self.body.append(self.starttag(node, 'dl', classes=classes))
def depart_definition_list(self, node):
self.body.append('</dl>\n')
def visit_definition_list_item(self, node):
- # pass class arguments, ids and names to definition term:
- node.children[0]['classes'] = (
- node.get('classes', []) + node.children[0].get('classes', []))
- node.children[0]['ids'] = (
- node.get('ids', []) + node.children[0].get('ids', []))
- node.children[0]['names'] = (
- node.get('names', []) + node.children[0].get('names', []))
+ pass
def depart_definition_list_item(self, node):
pass
@@ -757,10 +742,10 @@
def visit_docinfo(self, node):
self.context.append(len(self.body))
- classes = 'docinfo'
+ classes = ['docinfo']
if (self.is_compactable(node)):
- classes += ' simple'
- self.body.append(self.starttag(node, 'dl', CLASS=classes))
+ classes.append('simple')
+ self.body.append(self.starttag(node, 'dl', classes=classes))
def depart_docinfo(self, node):
self.body.append('</dl>\n')
@@ -783,7 +768,7 @@
def visit_doctest_block(self, node):
self.body.append(self.starttag(node, 'pre', suffix='',
- CLASS='code python doctest'))
+ classes=['code', 'python', 'doctest']))
def depart_doctest_block(self, node):
self.body.append('\n</pre>\n')
@@ -825,18 +810,16 @@
self.body.append('</em>')
def visit_entry(self, node):
- atts = {'class': []}
+ atts = {'classes': []}
if isinstance(node.parent.parent, nodes.thead):
- atts['class'].append('head')
+ atts['classes'].append('head')
if node.parent.parent.parent.stubs[node.parent.column]:
# "stubs" list is an attribute of the tgroup element
- atts['class'].append('stub')
- if atts['class']:
+ atts['classes'].append('stub')
+ if atts['classes']:
tagname = 'th'
- atts['class'] = ' '.join(atts['class'])
else:
tagname = 'td'
- del atts['class']
node.parent.column += 1
if 'morerows' in node:
atts['rowspan'] = node['morerows'] + 1
@@ -845,21 +828,18 @@
node.parent.column += node['morecols']
self.body.append(self.starttag(node, tagname, '', **atts))
self.context.append('</%s>\n' % tagname.lower())
- # TODO: why does the html4css1 writer insert an NBSP into empty cells?
- # if len(node) == 0: # empty cell
- # self.body.append(' ') # no-break space
def depart_entry(self, node):
self.body.append(self.context.pop())
def visit_enumerated_list(self, node):
- atts = {}
+ atts = {'classes': []}
if 'start' in node:
atts['start'] = node['start']
if 'enumtype' in node:
- atts['class'] = node['enumtype']
+ atts['classes'].append(node['enumtype'])
if self.is_compactable(node):
- atts['class'] = (atts.get('class', '') + ' simple').strip()
+ atts['classes'].append('simple')
self.body.append(self.starttag(node, 'ol', **atts))
def depart_enumerated_list(self, node):
@@ -893,10 +873,9 @@
pass
# as field is ignored, pass class arguments to field-name and field-body:
-
def visit_field_name(self, node):
self.body.append(self.starttag(node, 'dt', '',
- CLASS=''.join(node.parent['classes'])))
+ classes=node.parent['classes']))
def depart_field_name(self, node):
self.body.append('<span class="colon">:</span></dt>\n')
@@ -903,7 +882,7 @@
def visit_field_body(self, node):
self.body.append(self.starttag(node, 'dd', '',
- CLASS=''.join(node.parent['classes'])))
+ classes=node.parent['classes']))
# prevent misalignment of following content if the field is empty:
if not node.children:
self.body.append('<p></p>')
@@ -949,9 +928,9 @@
def visit_footnote_reference(self, node):
href = '#' + node['refid']
- classes = 'footnote-reference ' + self.settings.footnote_references
+ classes = ['footnote-reference', self.settings.footnote_references]
self.body.append(self.starttag(node, 'a', suffix='',
- CLASS=classes, href=href))
+ classes=classes, href=href))
self.body.append('<span class="fn-bracket">[</span>')
def depart_footnote_reference(self, node):
@@ -1130,7 +1109,7 @@
# inline literal
def visit_literal(self, node):
# special case: "code" role
- classes = node.get('classes', [])
+ classes = node['classes']
if 'code' in classes:
# filter 'code' from class arguments
classes.pop(classes.index('code'))
@@ -1158,11 +1137,11 @@
def visit_literal_block(self, node):
self.body.append(self.starttag(node, 'pre', '', CLASS='literal-block'))
- if 'code' in node.get('classes', []):
+ if 'code' in node['classes']:
self.body.append('<code>')
def depart_literal_block(self, node):
- if 'code' in node.get('classes', []):
+ if 'code' in node['classes']:
self.body.append('</code>')
self.body.append('</pre>\n')
@@ -1388,12 +1367,15 @@
def visit_raw(self, node):
if 'html' in node.get('format', '').split():
- t = isinstance(node.parent, nodes.TextElement) and 'span' or 'div'
+ if isinstance(node.parent, nodes.TextElement):
+ tagname = 'span'
+ else:
+ tagname = 'div'
if node['classes']:
- self.body.append(self.starttag(node, t, suffix=''))
+ self.body.append(self.starttag(node, tagname, suffix=''))
self.body.append(node.astext())
if node['classes']:
- self.body.append('</%s>' % t)
+ self.body.append('</%s>' % tagname)
# Keep non-HTML raw text out of output:
raise nodes.SkipNode
@@ -1490,16 +1472,16 @@
# h1–h6 elements must not be used to markup subheadings, subtitles,
# alternative titles and taglines unless intended to be the heading for a
# new section or subsection.
- # -- http://www.w3.org/TR/html/sections.html#headings-and-sections
+ # -- http://www.w3.org/TR/html51/sections.html#headings-and-sections
def visit_subtitle(self, node):
if isinstance(node.parent, nodes.sidebar):
- classes = 'sidebar-subtitle'
+ classes = ['sidebar-subtitle']
elif isinstance(node.parent, nodes.document):
- classes = 'subtitle'
+ classes = ['subtitle']
self.in_document_title = len(self.body)+1
elif isinstance(node.parent, nodes.section):
- classes = 'section-subtitle'
- self.body.append(self.starttag(node, 'p', '', CLASS=classes))
+ classes = ['section-subtitle']
+ self.body.append(self.starttag(node, 'p', '', classes=classes))
def depart_subtitle(self, node):
self.body.append('</p>\n')
@@ -1546,12 +1528,9 @@
self.body.append('</div>\n')
def visit_table(self, node):
- atts = {}
- classes = node.setdefault('classes', [])
- classes += [cls.strip(u' \t\n')
- for cls in self.settings.table_style.split(',')]
+ atts = {'classes': self.settings.table_style.replace(',', ' ').split()}
if 'align' in node:
- classes.append('align-%s' % node['align'])
+ atts['classes'].append('align-%s' % node['align'])
if 'width' in node:
atts['style'] = 'width: %s;' % node['width']
tag = self.starttag(node, 'table', **atts)
@@ -1579,7 +1558,10 @@
self.body.append('</tbody>\n')
def visit_term(self, node):
- self.body.append(self.starttag(node, 'dt', ''))
+ # The parent node (definition_list_item) is omitted in HTML.
+ self.body.append(self.starttag(node, 'dt', '',
+ classes=node.parent['classes'],
+ ids=node.parent['ids']))
def depart_term(self, node):
# Leave the end tag to `self.visit_definition()`,
@@ -1660,11 +1642,9 @@
def visit_topic(self, node):
self.body.append(self.starttag(node, 'div', CLASS='topic'))
- self.topic_classes = node['classes']
def depart_topic(self, node):
self.body.append('</div>\n')
- self.topic_classes = []
def visit_transition(self, node):
self.body.append(self.emptytag(node, 'hr', CLASS='docutils'))
Modified: trunk/docutils/docutils/writers/html4css1/__init__.py
===================================================================
--- trunk/docutils/docutils/writers/html4css1/__init__.py 2021-06-25 20:56:46 UTC (rev 8773)
+++ trunk/docutils/docutils/writers/html4css1/__init__.py 2021-06-25 20:57:05 UTC (rev 8774)
@@ -236,7 +236,7 @@
or (self.settings.compact_lists
and 'open' not in node['classes']
and (self.compact_simple
- or self.topic_classes == ['contents']
+ or 'contents' in node.parent['classes']
# TODO: self.in_contents
or self.check_simple_list(node))))
@@ -260,6 +260,18 @@
self.body.append(self.starttag(node, 'span', '', CLASS='classifier'))
# ersatz for first/last pseudo-classes
+ def visit_compound(self, node):
+ self.body.append(self.starttag(node, 'div', CLASS='compound'))
+ if len(node) > 1:
+ node[0]['classes'].append('compound-first')
+ node[-1]['classes'].append('compound-last')
+ for child in node[1:-1]:
+ child['classes'].append('compound-middle')
+
+ def depart_compound(self, node):
+ self.body.append('</div>\n')
+
+ # ersatz for first/last pseudo-classes
def visit_definition(self, node):
self.body.append('</dt>\n')
self.body.append(self.starttag(node, 'dd', ''))
@@ -579,7 +591,7 @@
# cater for limited styling options in CSS1 using hard-coded NBSPs
def visit_literal(self, node):
# special case: "code" role
- classes = node.get('classes', [])
+ classes = node['classes']
if 'code' in classes:
# filter 'code' from class arguments
node['classes'] = [cls for cls in classes if cls != 'code']
Modified: trunk/docutils/docutils/writers/html5_polyglot/__init__.py
===================================================================
--- trunk/docutils/docutils/writers/html5_polyglot/__init__.py 2021-06-25 20:56:46 UTC (rev 8773)
+++ trunk/docutils/docutils/writers/html5_polyglot/__init__.py 2021-06-25 20:57:05 UTC (rev 8774)
@@ -151,7 +151,7 @@
def visit_container(self, node):
# If there is exactly one of the "supported block tags" in
# the list of class values, use it as tag name:
- classes = node.get('classes', [])
+ classes = node['classes']
tags = [cls for cls in classes
if cls in self.supported_block_tags]
if len(tags) == 1:
@@ -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')
@@ -273,7 +273,7 @@
atts['height'] = node['height'].replace('px', '')
if 'align' in node:
atts['class'] = 'align-%s' % node['align']
- if 'controls' in node.get('classes', []):
+ if 'controls' in node['classes']:
atts['controls'] = 'controls'
atts['title'] = node.get('alt', uri)
@@ -297,7 +297,7 @@
'b', 'i', 'q', 's', 'u'))
def visit_inline(self, node):
# Use `supported_inline_tags` if found in class values
- classes = node.get('classes', [])
+ classes = node['classes']
tags = [cls for cls in self.supported_inline_tags
if cls in classes]
if len(tags):
@@ -333,7 +333,7 @@
# use HTML text-level tags if matching class value found
def visit_literal(self, node):
- classes = node.get('classes', [])
+ classes = node['classes']
tags = [cls for cls in self.supported_inline_tags
if cls in classes]
if len(tags):
@@ -410,8 +410,6 @@
and isinstance(node.parent, nodes.document)):
self.body_prefix[0] = '</head>\n<body class="with-toc">\n'
self.body.append(self.starttag(node, 'div', CLASS='topic'))
- self.topic_classes = node['classes'] # TODO: remove?
def depart_topic(self, node):
self.body.append('</div>\n')
- self.topic_classes = []
Modified: trunk/docutils/docutils/writers/latex2e/__init__.py
===================================================================
--- trunk/docutils/docutils/writers/latex2e/__init__.py 2021-06-25 20:56:46 UTC (rev 8773)
+++ trunk/docutils/docutils/writers/latex2e/__init__.py 2021-06-25 20:57:05 UTC (rev 8774)
@@ -797,10 +797,10 @@
def latex_section_depth(self, depth):
"""
Return LaTeX equivalent of Docutils section level `depth`.
-
+
Given the value of the ``:depth:`` option of the "contents" or
"sectnum" directive, return the corresponding value for the
- LaTeX ``tocdepth`` or ``secnumdepth`` counters.
+ LaTeX ``tocdepth`` or ``secnumdepth`` counters.
"""
depth = min(depth, len(self.sections)) # limit to supported levels
if 'chapter' in self.sections:
@@ -1525,7 +1525,7 @@
If `set_anchor` is True, an anchor is set with \\phantomsection.
If `protect` is True, the \\label cmd is made robust.
"""
- labels = ['\\label{%s}' % id for id in node.get('ids', [])]
+ labels = ['\\label{%s}' % id for id in node['ids']]
if protect:
labels = ['\\protect'+label for label in labels]
if set_anchor and labels:
@@ -2211,7 +2211,7 @@
self.out.append('\\begin{figure} %% align = "%s"\n' % alignment)
else:
self.out.append('\\begin{figure}\n')
- if node.get('ids'):
+ if node['ids']:
self.out += self.ids_to_labels(node) + ['\n']
def depart_figure(self, node):
@@ -2395,7 +2395,7 @@
self.out.extend(post)
def depart_image(self, node):
- if node.get('ids'):
+ if node['ids']:
self.out += self.ids_to_labels(node) + ['\n']
def visit_inline(self, node): # <span>, i.e. custom roles
@@ -2511,7 +2511,7 @@
_use_listings = (literal_env == 'lstlisting') and _use_env
# Labels and classes:
- if node.get('ids'):
+ if node['ids']:
self.out += ['\n'] + self.ids_to_labels(node)
self.duclass_open(node)
# Highlight code?
@@ -2602,7 +2602,7 @@
self.visit_inline(node)
self.requirements['amsmath'] = r'\usepackage{amsmath}'
math_code = node.astext().translate(unichar2tex.uni2tex_table)
- if node.get('ids'):
+ if node['ids']:
math_code = '\n'.join([math_code] + self.ids_to_labels(node))
if math_env == '$':
if self.alltt:
@@ -2709,7 +2709,7 @@
self.out.append('\n')
else:
self.out.append('\n')
- if node.get('ids'):
+ if node['ids']:
self.out += self.ids_to_labels(node) + ['\n']
if node['classes']:
self.visit_inline(node)
@@ -2970,7 +2970,7 @@
self.active_table = self.table_stack.pop()
# Insert hyperlabel after (long)table, as
# other places (beginning, caption) result in LaTeX errors.
- if node.get('ids'):
+ if node['ids']:
self.out += self.ids_to_labels(node, set_anchor=False) + ['\n']
self.duclass_close(node)
Modified: trunk/docutils/test/functional/expected/standalone_rst_html5.html
===================================================================
--- trunk/docutils/test/functional/expected/standalone_rst_html5.html 2021-06-25 20:56:46 UTC (rev 8773)
+++ trunk/docutils/test/functional/expected/standalone_rst_html5.html 2021-06-25 20:57:05 UTC (rev 8774)
@@ -896,45 +896,45 @@
is a single logical paragraph containing multiple physical body
elements. For example:</p>
<div class="compound">
-<p class="compound-first">The 'rm' command is very dangerous. If you are logged
+<p>The 'rm' command is very dangerous. If you are logged
in as root and enter</p>
-<pre class="compound-middle literal-block">cd /
+<pre class="literal-block">cd /
rm -rf *</pre>
-<p class="compound-last">you will erase the entire contents of your file system.</p>
+<p>you will erase the entire contents of your file system.</p>
</div>
<p>Test the handling and display of compound paragraphs:</p>
<div class="some-class compound">
-<p class="compound-first">Compound 2, paragraph 1,</p>
-<p class="compound-middle">compound 2, paragraph 2,</p>
-<ul class="compound-middle simple">
+<p>Compound 2, paragraph 1,</p>
+<p>compound 2, paragraph 2,</p>
+<ul class="simple">
<li><p>list item 1,</p></li>
<li><p>list item 2,</p></li>
</ul>
-<p class="compound-last">compound 2, paragraph 3.</p>
+<p>compound 2, paragraph 3.</p>
</div>
<div class="compound">
<p>Compound 3, only consisting of one paragraph.</p>
</div>
<div class="compound">
-<pre class="compound-first literal-block">Compound 4.
+<pre class="literal-block">Compound 4.
This one starts with a literal block.</pre>
-<p class="compound-last">Compound 4, paragraph following the literal block.</p>
+<p>Compound 4, paragraph following the literal block.</p>
</div>
<p>Now something <em>really</em> perverted -- a nested compound block. This is
just to test that it works at all; the results don't have to be
meaningful.</p>
<div class="compound">
-<p class="compound-first">Compound 5, block 1 (a paragraph).</p>
-<div class="compound-middle compound">
-<p class="compound-first">Compound 6 is block 2 in compound 5.</p>
-<p class="compound-last">Compound 6, another paragraph.</p>
+<p>Compound 5, block 1 (a paragraph).</p>
+<div class="compound">
+<p>Compound 6 is block 2 in compound 5.</p>
+<p>Compound 6, another paragraph.</p>
</div>
-<p class="compound-last">Compound 5, block 3 (a paragraph).</p>
+<p>Compound 5, block 3 (a paragraph).</p>
</div>
<div class="compound">
-<p class="compound-first">Compound 7, tests the inclusion of various block-level
+<p>Compound 7, tests the inclusion of various block-level
elements in one logical paragraph. First a table,</p>
-<table class="compound-middle">
+<table>
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
@@ -957,48 +957,48 @@
</tr>
</tbody>
</table>
-<p class="compound-middle">followed by a paragraph. This physical paragraph is
+<p>followed by a paragraph. This physical paragraph is
actually a continuation of the paragraph before the table. It is followed
by</p>
-<blockquote class="compound-middle">
+<blockquote>
<p>a quote and</p>
</blockquote>
-<ol class="compound-middle arabic simple">
+<ol class="arabic simple">
<li><p>an enumerated list,</p></li>
</ol>
-<p class="compound-middle">a paragraph,</p>
-<dl class="compound-middle option-list">
+<p>a paragraph,</p>
+<dl class="option-list">
<dt><kbd><span class="option">--an</span></kbd></dt>
<dd><p>option list,</p>
</dd>
</dl>
-<p class="compound-middle">a paragraph,</p>
-<dl class="compound-middle field-list simple">
+<p>a paragraph,</p>
+<dl class="field-list simple">
<dt>a field<span class="colon">:</span></dt>
<dd><p>list,</p>
</dd>
</dl>
-<p class="compound-middle">a paragraph,</p>
-<dl class="compound-middle simple">
+<p>a paragraph,</p>
+<dl class="simple">
<dt>a definition</dt>
<dd><p>list,</p>
</dd>
</dl>
-<p class="compound-middle">a paragraph, an image:</p>
-<img alt="../../../docs/user/rst/images/biohazard.png" class="compound-middle" src="../../../docs/user/rst/images/biohazard.png" />
-<p class="compound-middle">a paragraph,</p>
-<div class="compound-middle line-block">
+<p>a paragraph, an image:</p>
+<img alt="../../../docs/user/rst/images/biohazard.png" src="../../../docs/user/rst/images/biohazard.png" />
+<p>a paragraph,</p>
+<div class="line-block">
<div class="line">a line</div>
<div class="line">block,</div>
</div>
-<p class="compound-middle">a paragraph followed by a comment,</p>
+<p>a paragraph followed by a comment,</p>
<!-- this is a comment -->
-<p class="compound-middle">a paragraph, a</p>
-<div class="admonition note compound-middle">
+<p>a paragraph, a</p>
+<div class="admonition note">
<p class="admonition-title">Note</p>
<p>with content</p>
</div>
-<p class="compound-last">and the final paragraph of the compound 7.</p>
+<p>and the final paragraph of the compound 7.</p>
</div>
</section>
<section id="parsed-literal-blocks">
@@ -1225,7 +1225,7 @@
</tr>
</tbody>
</table>
-<table class="colwidths-auto align-center">
+<table class="align-center colwidths-auto">
<caption>center aligned list table</caption>
<tbody>
<tr><td><p>Albatross</p></td>
@@ -1493,7 +1493,7 @@
</ul>
<p>"Booktabs" style table, numbered, centre-aligned, with auto-sized columns:</p>
<blockquote>
-<table class="booktabs numbered colwidths-auto align-center">
+<table class="align-center booktabs numbered colwidths-auto">
<caption>I/O values</caption>
<thead>
<tr><th class="head" colspan="2"><p>Input</p></th>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|