.. include:: docs/header0.txt

==================
 Docutils History
==================

:Author: David Goodger; open to all Docutils developers
:Contact: docutils-develop@lists.sourceforge.net
:Date: $Date: 2023-05-16 16:49:41 +0200 (Di, 16. Mai 2023) $
:Revision: $Revision: 9387 $
:Web site: https://docutils.sourceforge.io/
:Copyright: This document has been placed in the public domain.

.. contents::


Release 0.20.1 (2023-05-17)
===========================

* docutils/MANIFEST.in

  - Include tox.ini and docutils.conf in the source package
    (cf. bug #467 and bug #461).

* tools/rst2odt_prepstyles.py

  - Moved to ``docutils/writers/odf_odt/prepstyles.py``.
    Replaced with a provisional backwards compatibility script.


Release 0.20 (2023-05-09)
=========================

* General

  - Docutils 0.20 is the last version supporting Python 3.7 and 3.8.
  - Support Python 3.11 (patch #198 by Hugo van Kemenade).

* docutils/core.py

  - New functions `rst2…()` for use as "console_scripts" `entry points`_.
    (cf. `Future changes` in the RELEASE-NOTES_).

* docutils/frontend.py

  - New configuration setting "output_". Obsoletes the ``<destination>``
    positional argument (cf. `Future changes` in the RELEASE-NOTES_).

* docutils/languages/
  docutils/parsers/rst/languages/

  - Support Ukrainian. Patch by Dmytro Kazanzhy.

* docutils/nodes.py

  - Fix `previous_sibling()` method that led to invalid HTML in some cases
    (cf. patch #195).
  - Fix bug #463. Spurious comma in deprecation warning.

* docutils/parsers/recommonmark_wrapper.py

  - Improved mock Sphinx module.

* docutils/transforms/__init__.py

  - `Transformer.populate_from_components()` now silently ignores
    components that are not instances of `docutils.TransformSpec`.

* docutils/transforms/frontmatter.py

  - Accept author names with initials like ``A. Einstein`` in the "author"
    `bibliographic field`_ instead of rising an error
    (generally, such names are `parsed as enumerated list`__).

    .. _bibliographic field:
        docs/ref/rst/restructuredtext.html#bibliographic-fields
    __ docs/ref/rst/restructuredtext.html#enumerated-lists

* docutils/transforms/references.py

  - `DanglingReferences` ignores `citation_reference` nodes if the
    "use_bibex" setting is active. (In this case, citations are provided
    by LaTeX/BibTeX.) Fixes bug #384.

* docutils/utils/__init__.py

  - New utility function `xml_declaration()`.
  - `DependencyList.add()` accepts `pathlib.Path` instances.
  - `find_file_in_dirs()` now returns a POSIX path also on Windows;
    `get_stylesheet_list()` no longer converts ``\`` to ``/``.

* docutils/utils/math/latex2mathml.py

  - Support "mod" notation for modulo operation / modulus arithmetic.

* docutils/utils/math/tex2mathml_extern.py

  - Support `Pandoc` as alternative LaTeX to MathML converter.
    Patch by Ximin Luo.

* docutils/writers/_html_base.py

  - Refactoring of `HTMLTranslator` initialization and collecting of
    document "parts". Adapt HTML writers importing `_html_base`.

    Changes to the HTML output (no space character before closing tag of
    XML declaration, order of metadata elements)
    don't affect the HTML semantics, styling, and rendering.

  - Wrap definition lists with "details" class argument in a <div>
    with the "id" and "class" values of the list node.

  - Use dpub-ARIA role "doc-footnote__" (instead of ARIA role "note")
    for footnotes.

    __ https://www.w3.org/TR/dpub-aria-1.1/#doc-footnote

* docutils/writers/latex2e/__init__.py

  - Do not load the `inputenc` package in UTF-8 encoded LaTeX sources.
    (UTF-8 is the default encoding for LaTeX2e since 2018).
  - Fix behaviour of the use_bibtex_ setting.
  - Outsource parts of `depart_document()` to new auxiliary methods
    `make_title()` and `append_bibliography()`.
  - Ensure POSIX paths in stylesheet loading macros.

* docutils/writers/latex2e/titlepage.tex

  - Drop ``\usepackage{fixltx2e}`` from template.
    (Obsolete since 2015 and dropped from other templates in Docutils 0.14.)

* docutils/writers/manpage.py

  - Do not output empty "manual" in ``.TH``.

* docutils/writers/xetex/__init__.py

  - Ignore settings in the [latex2e writer] configuration file section.
    Place common settings in section [latex writers].

* setup.py

  - Fix SetuptoolsDeprecationWarning: ``Installing '' as data is deprecated``
    by adding data directories to package_data.packages list.

* tox.ini

  - Extracted flake8 configuration and moved to ``.flake8``.
  - changedir to directory ``test`` to avoid path problems.

* test/

  - Refactored tests to use common `unittest` idioms.
    Fixes errors when running the test suite with ``python -m unittest``
    or external test frameworks, such as Pytest_.

  .. _pytest: https://pypi.org/project/pytest/

* test/coverage.sh

  - Removed. Use the coverage.py_ project instead,
    ``coverage run test/alltests.py`` and ``coverage report``.

  .. _coverage.py: https://pypi.org/project/coverage/

* tools/

  - Moved ``quicktest.py`` to ``tools/dev/``.


Release 0.19 (2022-07-05)
=========================

* General

  - Dropped support for Python 2.7, 3.5, and 3.6. and removed compatibility
    hacks from code and tests.
  - Code cleanup,
    check PEP 8 conformity with `flake8` (exceptions in file tox.ini).

* docutils/__main__.py

  - New module. Support for ``python -m docutils``.
    Also used for the ``docutils`` console script `entry point`_.

* docutils/core.py

  - Let `Publisher.publish()` print info and prompt when waiting for input
    from a terminal (cf. https://clig.dev/#interactivity).
  - Respect `input_encoding_error_handler`_ setting when opening a source.

* docutils/io.py

  - New function `error_string()`
    obsoletes `utils.error_reporting.ErrorString`.
  - Class `ErrorOutput` moved here from `utils.error_reporting` module.
  - Use "utf-8-sig" instead of Python's default encoding if the
    `input_encoding`_ setting is None.
  - Fix error when reading of UTF-16 encoded source without trailing newline.
  - Suppress deprecation warning (fixes bug #464).

* docutils/parsers/__init__.py

  - Aliases "markdown" and "commonmark" point to "commonmark_wrapper".
  - Alias for the "myst" parser (https://pypi.org/project/myst-docutils).
  - Use absolute module names in `_parser_aliases` instead of two
    import attempts. (Keeps details if the `recommonmark_wrapper` module
    raises an `ImportError`.)
  - Prepend parser name to `ImportError` if importing a parser class fails.

* docutils/parsers/commonmark_wrapper.py

  - New module for parsing CommonMark input. Selects a locally installed
    3rd-party parser (`pycmark`, `myst`, or `recommonmark`).

* docutils/parsers/recommonmark_wrapper.py

  - Raise `ImportError`, if import of the upstream parser module fails.
    If called from an `"include" directive`_,
    the system-message now has source/line info.
  - Adapt to and test with `recommonmark` versions 0.6.0 and 0.7.1.

  .. _"include" directive: docs/ref/rst/directives.html#include

* docutils/parsers/rst/__init__.py

  - Update PEP base URL (fixes bug #445),
    use "https:" scheme in RFC base URL.
  - Add `reporter` to `Directive` class attributes.

* docutils/parsers/rst/directives/__init__.py

  - `parser_name()` keeps details if converting  `ImportError` to  `ValueError`.

* docutils/parsers/rst/roles.py

  - Don't use mutable default values for function arguments. Fixes bug #430.

* docutils/transforms/universal.py

  - Fix bug #435: invalid references in `problematic` nodes
    with report_level=4.

* docutils/utils/__init__.py

  - `decode_path()` returns `str` instance instead of `nodes.reprunicode`.

* docutils/utils/error_reporting.py

  - Add deprecation warning.

* docutils/writers/_html_base.py

  - Add "html writers" to `config_section_dependencies`. Fixes bug #443.
  - Write table column widths with 3 digits precision. Fixes bug #444.

* docutils/writers/html5_polyglot/__init__.py

  - 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/

  - Use "https:" scheme in "python_home" URL default.
  - Fix links in template.txt.

* setup.py

  - New ``docutils``" console script `entry point`_. Fixes bug #447.

* test/alltests.py

  - Always encode the log file ``alltests.out`` using "utf-8".

* test/DocutilsTestSupport.py

  - `exception_data()` now returns None if no exception was raised.
  - `recommonmark_wrapper` only imported if upstream parser is present.

* test/test_parsers/test_rst/test_directives/test_tables.py

  - Fix bug #436: Null char valid in CSV since Python 3.11.

* tools/docutils-cli.py

  - Allow 3rd-party drop-in components for reader and parser, too.
  - Fix help output.
  - Actual code moved to docutils.__main__.py.

* tools/rst2odt_prepstyles.py

  - Options ``-h`` and ``--help`` print short usage message.

.. _entry point:
.. _entry points:
    https://packaging.python.org/en/latest/specifications/entry-points/


Release 0.18.1 (2021-11-23)
===========================

* docutils/nodes.py

  - `Node.traverse()` returns a list again to restore backwards
    compatibility. Fixes bug #431.

  - New method `Node.findall()`: like `Node.traverse()` but returns an
    iterator. Obsoletes `Node.traverse()`.

* docutils/utils/__init__.py

  - Fix behaviour of `get_stylesheet_list()`: do not look up stylesheets
    given as `stylesheet`_ setting. Cf. bug #434.

* docutils/writers/_html_base.py

  - Fix handling of ``footnote_backlinks == False`` (report Alan G Isaac).

* docutils/writers/html5_polyglot/math.css

  - Fix typo (bug #432).

* docutils/writers/odf_odt/__init__.py

  - Fix spurious output with Windows (bug #350).

* test/test_error_reporting.py

  - Fix a false positive (bug #434).


Release 0.18 (2021-10-26)
=========================

* docutils/frontend.py
  - Mark as provisional (will switch from using `optparse` to `argparse`).
  - Remove hack for the now obsolete "mod_python" Apache module.
  - New function `get_default_settings()`.

* docutils/nodes.py

  - Don't change a list while looping over it (in
    `document.set_name_id_map()`). Thanks to Mickey Endito.

* docutils/parsers/recommonmark_wrapper.py

  - Test and update to work with `recommonmark` version 0.6.0.
    Still provisional.

    Unfortunately, recommonmark_ is `no longer maintained`__.

    __ https://github.com/readthedocs/recommonmark/issues/221

* docutils/parsers/rst/directives/misc.py

  - Fix bug #424 Wrong circular inclusion detection.
    Use a "magic" comment instead of line numbers
    to keep a log of recursive inclusions.

* docutils/parsers/rst/states.py

  -  Use a "magic" comment to update the log of recursive inclusions.

* docutils/writers/html5_polyglot/__init__.py

  - New option `image_loading`_. Support "lazy" loading of images.
    Obsoletes `embed_images`_.

* docutils/writers/pseudoxml.py

  - Fix spelling of setting `detailed`_.

* tools/docutils-cli.py

  - Read settings from standard configuration files.

Fix spelling errors in documentation and docstrings.
Thanks to Dimitri Papadopoulos.


Release 0.18b1 (2021-10-05)
===========================

* docutils/frontend.py

  - The default value for the `auto_id_prefix`_ setting changed to "%":
    auto-generated IDs use the tag name as prefix.

* docutils/nodes.py

  - Make meta__ a standard Docutils doctree node. Writers may ignore
    `meta` nodes if they are not supported by the output format.

    __ docs/ref/doctree.html#meta

  - document.make_id(): Do not strip leading number and hyphen characters
    from `name` if the `id_prefix`_ setting is non-empty.

  - `Node.traverse()` returns an iterator instead of a list.

* docutils/parsers/rst/directives/html.py

  - Removed. (Meta directive moved to ``misc.py``.)

* docutils/parsers/rst/directives/misc.py

  - `Meta` directive class (moved from html.py) inserts `meta`
    (instead of `pending`) nodes.

  - Add `class` option to `Raw` directive.

* docutils/parsers/rst/directives/tables.py

  - Unify behaviour of `"widths" option`_: check that the length of an
    integer list equals the number of table columns also for the "table"
    directive.

* docutils/tools/math/math2html.py,
  docutils/tools/math/tex2unicode.py,
  docutils/writers/html5/math.css

  - Fork from elyxer and remove code that is not required
    for math conversion.
  - Scale variable sized operators and big delimiters with CSS
  - Support more commands, fix mapping of commands to Unicode characters
    (cf. `LaTeX syntax for mathematics`_).
  - Fix bug #244 Wrong subscript/superscript order.
  - Don't use <tt> element (deprecated in HTML5).
  - Use STIX fonts if available.

  .. _LaTeX syntax for mathematics: docs/ref/rst/mathematics.html

* docutils/parsers/rst/states.py

  - Fix source location (line number) for attribution elements.
    Patch by Mickey Endito.
  - Add line, source, and rawsource internal attributes for blockquote
    elements. Patch by Mickey Endito.

* docutils/transforms/references.py

  - Skip system_messages when propagating targets. Fixes bug #425.

* docutils/utils/__init__.py

  - Removed `unique_combinations()` (obsoleted by `itertools.combinations()`).

* docutils/utils/latex2mathml.py

  - Major update (fixes and support for additional commands and symbols).
    Fixes bug #407.

* docutils/writers/_html_base.py

  - Write footnote brackets and field term colons to HTML, so that
    they are present also without CSS and when copying text.
    Adapt ``minimal.css``.

  - Use semantic tags <aside> for footnote text, topics, admonitions,
    and system-messages and <nav> for the table of contents. Use <div>
    for citations.

  - Only specify table column widths, if the `"widths" option`_ is set
    and is not "auto" (fixes bug #426).
    The `table_style`_ setting "colwidths-grid" restores the current default.

    .. _"widths" option: docs/ref/rst/directives.html#column-widths

  - Use ARIA roles to enable accessible HTML for abstract, dedication,
    the table of contents, footnote, references, footnotes, citations,
    and backlinks.

  - Use "aria-level" attribute instead of invalid tags <h7>, <h8>, ...
    for headings of deeply nested sections.

  - Do not set classes "compound-first", "compound-middle", or
    "compound-last" to elements nested in a compound.
    Use class value "backrefs" instead of "fn-backref" for a span of
    back-references.

  - Do not write class values handled by the HTML writer ("colwidths-auto",
    "colwidths-given", "colwidths-grid") to the output.

  - Move space character between section number and heading into
    "sectnum" span.

  - Removed attribute `HTMLTranslator.topic_classes`

  - Items of a definition list with class argument "details" are
    converted to <details> disclosure elements.

* docutils/writers/html4css1/__init__.py

  - Overwrite methods in _html_base.HTMLTranslator that use HTML5 tags
    (details, aside, nav, ...) and attributes (role, aria-level).

* 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.

  - Fix newlines after/before `ids_to_labels()` (cf. patch #183).

  - Refactor/revise ToC writing.

  - Don't add ``\phantomsection`` to labels in math-blocks.

  - Improve spacing and allow customization of Docutils-generated table
    of contents.

  - New algorithm for table column widths. Fixes bug #422.
    New configuration setting `legacy_column_widths`_.

    `Table.set_table_style()` arguments changed.

    Only write "continued on next page..." if it fits
    without making the table columns wider.

    Table "width" option overrides conflicting "auto" column "widths".

* docutils/writers/latex2e/docutils.sty

  - Fix excessive padding above sidebar titles.

* docutils/writers/pseudoxml.py

  - Fix option `detailed`_ under Python 2.7.

* docutils/writers/s5_html/themes/default

  - Remove IE 6 compatibility workarounds ``iepngfix.htc`` and
    ``blank.gif`` (fixes bug #169).

* docutils/writers/manpage.py

  - Fix: double quotes need to be escaped on macro invocation.
    Done everywhere.


Release 0.17.1 (2021-04-16)
===========================

* docutils/utils/math/latex2mathml.py

  - Fix bug #406 (MathML translation of ``\mathbf``).

* docutils/writers/latex2e/__init__.py

  - Open ``docutils.sty`` with encoding set to "utf-8".
    Fixes bug #414: error with Py3k when locale encoding is "ascii".

* docutils/parsers/*.py, docutils/transforms/*.py

  - Provide fallbacks for parser config settings
    to facilitate programmatic use.

* docutils/writers/manpage.py

  - Apply patch #160: move macro defs above ``.TH``
    (thanks Willie and sorry for the delay).


Release 0.17 (2021-04-03)
=========================

* General

  - Installing with ``setup.py`` now requires `setuptools`.
    Alternatively, install with `pip`_ (or "manually").
  - Use `importlib.import_module()` to programmatically import modules.
  - Fix bug #385: Import of language modules.

  .. _pip: https://pypi.org/project/pip/

* docutils/MANIFEST.in

  - Exclude test outputs.

* docutils/__init__.py

  - VersionInfo:  `ValueError` for invalid values, fix comparison to tuples.

* docutils/languages/
  docutils/parsers/rst/languages/

  - Apply patch # 177 Arabic mappings by Shahin.
  - Apply patch for bug #399 Fixes in Korean translation by Shinjo Park.

* docutils/nodes.py

  - Apply patch #165 "Fix error when copying `system_message` node"
    by Takeshi KOMIYA.
  - Apply version of patch #167 "Let `document.set_id()` register all
    existing IDs". Thanks to Takeshi KOMIYA.
  - Fix bug #410: Use a "property" function to recursively fetch
    `Node.document` value from parent node.

* docutils/parsers/recommonmark_wrapper.py

  - New, **experimental** wrapper to integrate the
    `recommonmark`_ Markdown parser for use with Docutils.
    Currently only tested with `recommonmark` version 0.4.0.

    .. _recommonmark: https://pypi.org/project/recommonmark/

* docutils/parsers/rst/directives/body.py

  - Make the sidebar's "title" argument optional (feature request #69).

* docutils/parsers/rst/directives/html.py

  - Make `meta` elements available for "latex" and "odt" writers.

* docutils/parsers/rst/directives/misc.py

  - Prevent infinite inclusion loops.

* docutils/parsers/rst/roles.py

  - Apply patch #174 "Lowercase new role names on registration"
    by John Thorvald Wodder II.

* docutils/utils/smartquotes.py

  - Fix bug #383: Smart quotes around opening and separator characters.

* docutils/transforms/components.py

  - Allow a comma-separated list of formats for the Filter transform.

* docutils/writers/html*

  - Implement feature request #40 "Option to embed images as data URI".

* docutils/writers/html5_polyglot/__init__.py

  - Use the new semantic tags <main>, <section>, <header>,
    <footer>, <aside>, <figure>, and <figcaption>.
    See ``minimal.css`` and ``plain.css`` for styling rule examples.

    Change the `initial_header_level`_ setting default to "2", as browsers
    use the `same style for <h1> and <h2> when nested in a <section\>`__.

    __ https://stackoverflow.com/questions/39547412/same-font-size-for-h1-and-h2-in-article

  - Use HTML text-level tags <small>, <s>, <q>, <dfn>, <var>, <samp>, <kbd>,
    <i>, <b>, <u>, <mark>, and <bdi> if a unique, matching class value
    is found in `inline`__ and `literal`__ elements.
    Use <ins> and <del> if a unique matching class value
    is found in `inline`, `literal`, or `container` elements.
    Use <small> for generated code line numbers.

    __ docs/ref/doctree.html#inline
    __ docs/ref/doctree.html#literal

  - Fix bug #398: properly close link tag to "schema.dcterms".

  - Add a `viewport meta tag`__ to fix rendering in mobile browsers.

    __ https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag

  - Use <video> for images with video MIME types supported by HTML5.

* docutils/writers/html5_polyglot/minimal.css

  - Move non-essential styling to ``plain.css``.
    Small fixes and tweaks.

  - Support "captionbelow" class value for tables.

  - Display code line numbers as pseudo-elements which are skipped
    when copying text from code blocks. Solves feature request #32.

* docutils/writers/html5_polyglot/plain.css

  - Support numbered figures.

* docutils/writers/html5_polyglot/responsive.css

  - New optional style that adapts to different screen sizes.

* docutils/writers/latex2e/__init__.py

  - Use LaTeX environments for admonitions and "class wrappers" for styling
    admonitions and titles if the new configuration setting
    `legacy_class_functions`_ is False.

  - Remove backwards compatibility code for the deprecated
    `styling command`__ prefix ``\docutilsrole``.

    __ docs/user/latex.html#custom-interpreted-text-roles

  - Remove legacy LaTeX stylesheet ``docutils-05-compat.sty``.

  - Support the `memoir` LaTeX document class.
    Fixes bugs #390, #391, and #392. Thanks to John Thorvald Wodder II.

  - The special value "auto" for the `graphicx_option`_ setting
    is no longer supported (it never worked for xetex/luatex).

  - Most helper commands and element definitions are now defined in the
    LaTeX package `docutils.sty`_ and only inserted in the document
    preamble if the `stylesheet`__ setting does not list "docutils".

    .. _docutils.sty: https://ctan.org/pkg/docutils
    __ docs/user/config.html#stylesheet-latex-writers

  - Apply patch #173 "Make \*TeX writers convert nonstandard table
    classes to DUclass environments" by John Thorvald Wodder II.

  - Fix bug #408 "Incorrect assert in latex writer
    for multiple citation references".

  - Apply patch #175 "Fix alignment of nested tables"
    by John Thorvald Wodder II. Additional fixes to table alignment.

  - Do not write Docutils-generated ToC, when ``use_latex_toc == True``.
    (This did happen when publishing from a doctree.)

  - Set PDF document properties from "meta" directive content.

  - Apply version of patch #176 "LaTeX writer: Append ``\leavevmode`` to
    non-docinfo field names" by John Thorvald Wodder II.

* docutils/writers/manpage.py

  - Fix #394 fix missing new line after rubric.
  - Patch #168 fix crashing on empty citation (by Takeshi KOMIYA).
  - Fix #126 manpage title with spaces.
  - Fix #380 command line option problem in sphinx.

* docutils/writers/odf_odt/__init__.py

  - Fix/improve metadata handling:
    fix "keyword" splitting,
    allow generic fields (stored as "Custom Properties").

* docutils/writers/pseudoxml.py

  - New option `detailled`_.

* test/DocutilsTestSupport.py

  - Run python3 test like python2 against source not the build/-directory

* tools/docutils-cli.py

  - New generic command line front end that allows the free selection of
    reader, parser, and writer components.


Release 0.16 (2020-01-16)
=========================

* General

  - Dropped support for Python 2.6, 3.3 and 3.4
  - Docutils now supports Python 2.7 and Python 3.5+ natively
    (without conversion by `2to3`).
  - Keep `backslash escapes`__ in the document tree. Backslash characters in
    text are be represented by NULL characters in the `text` attribute of
    Doctree nodes and removed in the writing stage by the node's
    `astext()` method.

  __ https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#escaping-mechanism

* docutils/io.py

  - Remove the `handle_io_errors` option from io.FileInput/Output.

* docutils/nodes.py

  - Speed up Node.next_node().
  - If `auto_id_prefix`_ ends with "%", this is replaced with the tag name.
  - Warn about `Node.traverse()` returning an iterator instead of a list
    in future.

* docutils/statemachine.py

  - Patch [ 158 ]: Speed up patterns by saving compiled versions (eric89gxl)

* docutils/transforms/universal.py

  - Fix [ 332 ]: Standard backslash escape for smartquotes.
  - Fix [ 342 ]: No escape in roles descending from `inline literal`.

* docutils/utils/__init__.py

  - `unescape()` definition moved to `nodes` to avoid circular import
    dependency. Fixes [ 366 ].

* docutils/writers/latex2e/__init__.py

  - Fix topic subtitle.
  - Make "rubric" bold-italic and left aligned.
  - Fix [ 339 ] don't use "alltt" or literal-block-environment
    in admonitions and footnotes.
  - Deprecation warning for ``\docutilsrole``-prefixed styling commands.
  - Add "latex writers" to the `config_section_dependencies`.
  - Ignore classes for `rubric` elements
    (class wrapper interferes with LaTeX formatting).

* docutils/writers/manpage.py

  - Apply fix for [ 287 ] comma after option is bold.
  - Apply fix for [ 289 ], line starting with ``.`` in a text.

* docutils/writers/odf_odt/__init__.py

  - Fix: ElementTree.getchildren deprecated warning

* docutils/writers/xetex/__init__.py

  - Add "latex writers" to the `config_section_dependencies`.

* test/alltests.py

  - Fix: 377 ResourceWarning: unclosed file python3.8
    Close alltests.out with atexit.

* test/functional/*

  - Fix: 377 ResourceWarning: unclosed file python3.8
    Read defaults file with context.

  - Set `auto_id_prefix`_ to "%" (expands to tag-names).
    Results in descriptive links in HTML and more localized changes when
    editions to the input add or remove auto-ids.

* test/test_io.py

  - Apply patch #157: avoid test failure because of a `ResourceWarning`.

* test/test_writers/test_odt.py

  - Fix [ 359 ]: Test suite fails on Python 3.8. odt XML sorting.
    Use ElementTree instead of minidom.

* tools/buildhtml.py

  - New option `html_writer`_.


Release 0.15.1 (2019-07-24)
===========================

source: branches/rel-0.15

Bugs #366 fix release for python2 only.


Release 0.15 (2019-07-20)
=========================

* General

  - Dropped support for Python 2.4, 2.5, 3.1, and 3.2.
  - Infrastructure automation.

* docs/ref/rst/restructuredtext.txt

  - Document rST syntax change: Tokens like ``:this:example:`` are now valid
    field list names (instead of ordinary text).

* docutils/io.py

  - Fix [ 348 ] Since Python 3.4, the 'U' universal newlines mode has been
    deprecated. Thanks to hugovk.

* docutils/languages/ko.py, docutils/parsers/rst/languages/ko.py

  - Apply [ 153 ] Korean mappings by Thomas Sungjin Kang.

* docutils/nodes.py

  - Fix [ 251 ] `system_message.copy()`  `TypeError`.
  - `Element.copy()` also copies `document`, `line`, and `source` attributes.

* docutils/parsers/rst/__init__.py

  - Apply [ 152 ] reset `default role` at end of document.

* docutils/parsers/rst/states.py

  - Allow embedded colons in field list field names.

* docutils/parsers/rst/directives/html.py

  - Fix bug #281: Remove escaping backslashes in meta directive content.

* docutils/parsers/rst/directives/misc.py

  - Don't convert tabs to spaces, if `tab_width` is negative in
    "include" directive with "code" option.

* docutils/parsers/rst/directives/tables.py

  - Apply patch #121: Add "width" option for the table directives.

* docutils/transforms/frontmatter.py

  - Add field name as class argument to generic docinfo fields unconditionally.

* docutils/transforms/references.py

  - Fix bug #331: fixed the "trim" options of the "unicode" directive.

* docutils/utils/__init__.py

  - Deprecate `unique_combination()` (obsoleted by `itertools.combination()`.

* docutils/utils/smartquotes.py

  - Fix bug #332: use open quote after whitespace, ZWSP, and ZWNJ.

* docutils/writers/html5_polyglot/

  - automatically add HTML5-compatible meta tags for docinfo items
    "authors", "date", and "copyright".

* docutils/writers/_html_base.py

  - Fix bug #358: Non-breaking space removed from fixed-width literal.

* docutils/writers/latex2e/__init__.py

  - Fix bug #323: spurious ``\phantomsection`` and whitespace in
    ``parts['title']``.
  - Fix bug #324: Invalid LaTeX for table with empty multi-column cell.
  - Fixes to literal block handling.


Release 0.14 (2017-08-03)
=========================

* docs/ref/docutils.dtd

  - Enable validation of Docutils XML documents against the DTD:

    Use attribute type NMTOKEN instead of REFID for the `refid` attribute
    and NMTOKENS for `backrefs`: REFID refers to an ID type instance,
    however, the `ids` attribute cannot use the ID type because `XML only
    allows one ID per Element Type`__ and doesn't support a multiple-ID
    "IDS" attribute type.

  __ https://www.w3.org/TR/REC-xml/#sec-attribute-types

* docs/ref/rst/restructuredtext.txt

  - Added documentation for escaped whitespace in URI contexts.
  - Clarify use of Unicode character categories.

* docutils/parsers/rst/states.py

  - Added functionality: escaped whitespace in URI contexts.
  - Consistent handling of all whitespace characters in inline markup
    recognition. Fixes [ 307 ] and [ 3402314 ] (now [ 173 ]).

* docutils/parsers/rst/directives/images.py

  - Added support for escaped whitespace in URI contexts.

* docutils/parsers/rst/directives/tables.py

  - Rework patch [ 120 ] (revert change to Table.get_column_widths()
    that led to problems in an application with a custom table directive).

* docutils/transforms/frontmatter.py

  - Fix [ 320 ] Russian docinfo fields not recognized.

* docutils/transforms/references.py

  - Don't add a second ID to problematic references.

* docutils/transforms/universal.py

  Fix `SmartQuotes`: warn only once if language is unsupported,
  keep "rawsource" when "educating" quotes.

* docutils/utils/__init__.py

  - Added `split_escaped_whitespac()` function, support for escaped
    whitespace in URI contexts.

* docutils/utils/error_reporting.py

  - Fix [ 321 ] Import block might cause name error.

* docutils/utils/smartquotes.py

  - Update quote definitions for languages et, fi, fr, ro, sv, tr, uk.
  - New quote definitions for hr, hsb, hu, lv, sh, sl, sr.
  - Fix [ 313 ] Differentiate apostrophe from closing single quote
    (if possible).
