.. include:: docs/header0.rst ================== Docutils History ================== :Author: David Goodger; open to all Docutils developers :Contact: docutils-develop@lists.sourceforge.net :Date: $Date: 2025年08月19日 22:28:48 +0200 (Di, 19. Aug 2025) $ :Revision: $Revision: 10211 $ :Web site: https://docutils.sourceforge.io/ :Copyright: This document has been placed in the public domain. .. contents:: Release 0.23b0 (unpublished) ============================ * docutils/frontend.py, docutils/writers/ - More consistent and concise command line help. * docutils/nodes.py - `nodes.Element.section_hierarchy()` now returns only elements with non-empty "parent" attribute. * docutils/parsers/rst/states.py - Relax "section title" system messages from SEVERE to ERROR. - Ensure new "current node" is valid when switching section level (cf. bugs #508 and #509). - Use a `separate title style hierarchy for nested parsing`__. - Better error messages for grid table markup errors (bug #504), based on patch #214 by Jynn Nelson. __ RELEASE-NOTES.html#nested-parsing * docutils/transforms/references.py - Better error reports for hyperlinks with embedded URI or alias. Release 0.22 (2026年07月29日) ========================= * General - We have started to add type hints to Docutils (feature-request #87). This will be a complex programme of work and as such, for the time being, these type hints are "provisional" and should not be relied upon. By default, the Python interpreter treats type hints as annotations. Python>= 3.10 is required with active type hints (``typing.TYPE_CHECKING == True``). * docs/ref/docutils.dtd - Allow multiple elements in a . Fixes feature-request #60 - The first element in a
may also be a (with nested "clickable" ). * docutils/core.py - Removed `Publisher.setup_option_parser()` (internal, obsolete). - Allow a string value (component name or alias) in the "reader", "parser", and "writer" arguments of `Publisher.__init__()` and the `publish_*()` convenience functions. * docutils/frontend.py - Drop short options ``-i`` and ``-o`` for ``--input-encoding`` and ``--output-encoding``. - Change the default input encoding from ``None`` (auto-detect) to "utf-8". - Change the default value of the root_prefix_ setting to the empty string (no change to the behaviour). * docutils/io.py - Change the default input encoding from ``None`` (auto-detect) to "utf-8". * docutils/nodes.py - Raise TypeError if the "rawsource" argument in `Element.__init__()` is an `Element` instance. Catches errors like ``nodes.hint(nodes.paragraph())``. - New element category classes `SubStructural` and `PureTextElement`. - Fix element categories. - New method `Element.validate()`: raise `nodes.ValidationError` if the element does not comply with the "Docutils Document Model". Provisional. - New "attribute validating functions" convert string representations to correct data type, normalize values, and raise ValueError for invalid attribute names or values. - New function `parse_measure()`. - Removed `Element.set_class()`. - Downgrade "duplicate ID" message level from SERIOUS to ERROR. - Fix recursion in `Element.get_language_code()`. - Do not insert elements for duplicate explicit targets if this results in an invalid doctree (cf. bug #489). - Don't include a "backlink" reference in system messages, if the referenced element is an external target (not visible in the output). - Don't invalidate indirect targets with duplicate name, if they refer to the same refname (similar to external targets refering to the same URI). * docutils/parsers/docutils_xml.py - New parser for Docutils XML sources. Provisional. * docutils/parsers/recommonmark_wrapper.py - New method `Parser.finish_parse()` to clean up (before validating). * docutils/parsers/rst/languages/ - Remove mistranslations of the "admonition" directive name. * docutils/parsers/rst/languages/en.py - Add alias "rst-class" for the "class" directive to improve the compatibility with Sphinx. * docutils/parsers/rst/directives/__init__.py - Support CSS3 `length units`_. Fixes feature-request #57. * docutils/parsers/rst/directives/images.py - New option "figname" for the "figure" directive. Fixes feature-request #44. * docutils/parsers/rst/directives/misc.py - Pass the included file's path to the parser when the "include" directive is used with :parser: option. Enables system messages with correct source/line info. - Pass default settings to custom parser for included file. * docutils/parsers/rst/directives/references.py - Remove "name" from `TargetNotes.option_spec`. The "target-notes" directive generates one footnote element per external target but "name" must be unique across the document. So far, the name was silently dropped. * docutils/parsers/rst/directives/tables.py - Removed `CSVTable.decode_from_csv()` and `CSVTable.encode_from_csv()`. Not required with Python 3. * docutils/parsers/rst/roles.py - Renamed `normalized_role_options()` to `normalize_options()` (it is now also used for directive options). * docutils/parsers/rst/states.py - Raise warning for empty footnotes and citations. - Add source and line info to elements. Fix line number of "start value not ordinal-1" INFO message. - Change section handling to not rely on exceptions and reparsing. Based on patch #213 by Arne Skjærholt. Fixes bug #346 (duplicate System Messages). - Use `types.SimpleNamespace` instead of a local definition for the auxilliary class `states.Struct`. - Warn about duplicate name in references with embedded internal targets. Fixes bug #502. - "Downgrade" targets generated from hyperlink references with embedded URI or alias from explicit to implicit (cf. bug #502). * docutils/readers/__init__.py: - Deprecate "parser_name" argument of `Reader.__init__()`. * docutils/transforms/frontmatter.py - Update `DocInfo` to work with corrected element categories. * docutils/transforms/misc.py: - Fix for `misc.Transitions`: report an error if a element follows a or element as this is invalid according to ``docutils.dtd``. * docutils/transforms/references.py - New transform `CitationReferences`. Marks citation_references as resolved if BibTeX is used by the backend (LaTeX). * docutils/transforms/writer_aux.py - Removed `Compound` transform. * docutils/transforms/references.py - Make `AnonymousHyperlinks` transform idempotent. * docutils/transforms/universal.py - `Messages` transform now also handles "loose" system messages generated by the parser. * docutils/utils/__init__.py - Removed `Reporter.set_conditions()`. Set attributes via configuration settings or directly. * docutils/utils/_roman_numerals.py - New implementation or Roman numeral support. Replaces the local copy of the roman.py package. * docutils/utils/error_reporting.py - Removed. Obsolete in Python 3. * docutils/writers/docutils-xml.py - Do not increase indentation of follow-up lines inside inline elements. when formatting with `indents`_. * docutils/writers/__init__.py - New base class `writers.DoctreeTranslator` with auxiliary method `uri2path()`. * docutils/writers/_html_base.py - Make MathML the default math_output_. - Revise image size handling methods, use "width" and "height" attributes for unitless values. - Add "px" to unitless table "width" values. - Fix error when determining the document metadata title from the source path and the internal `source` attribute is None. * docutils/writers/html4css1/__init__.py - Keep default math_output_ value "HTML math.css". - Add "px" to unitless table "width" values. * docutils/writers/latex2e/__init__.py - `LaTeXTranslator.to_latex_length()`: Handle CSS3 `length units`_. Remove optional argument `pxunit` (ignored since at least 2012). Drop trailing zeroes from length values. Move XeTeX-specific code to the "xetex" writer. - Don't wrap references with custom reference-label_ in a ``\hyperref`` command. - Mark the main language when loading "babel". - Provide an "unknown_references_resolver" (cf. `docutils/TransformSpec`) for citation references resolved with BibTeX (cf. `use_bibtex`_ setting). - Support SVG image inclusion with the "svg" LaTeX package (see the `stylesheet`__ configuration setting). Solves feature-request #83 - Add "template" to the parts returned by `Writer.assemble_parts()`. - Use standard `dict` for `LaTeXTranslator.requirements` and `LaTeXTranslator.fallbacks`. - Use "title" attribute in pdfinfo. - Encode element content in pdfinfo. - Improve formatting of docinfo fields. - `LaTeXTranslator.pop_output_collector()` now returns the popped list. - Replace `Writer.bibtex_reference_resolver()` with a transform. - `LaTeXTranslator.visit_inline()` now inserts labels for the node's IDs. - Disable footnote handling by the "hyperref" LaTeX package (Docutils' ``\DUfootnotemark`` and ``\DUfootnotetext`` macros implement hyperlinks and backlinks). Avoids "empty anchor" warnings. - Fix target position and re-style system messages. - Don't merge paragraphs if there is a target between them. .. _reference-label: docs/user/config.html#reference-label __ docs/user/config.html#stylesheet-latex-writers * docutils/writers/latex2e/docutils.sty - Replace use of ``\ifthenelse{\isundefined...`` (from "ifthen.sty") with the eTeX primitive ``\ifdefined``. - Add macros to emulate CSS3 `length units`_ unknown to LaTeX. * docutils/writers/manpage.py - Remove code for unused emdash bullets. - Print Docutils version in header comment (feature-request #105). - Stop converting text to full capitals (bug #481). - Fix reference output (bug #497). - Use macros .UR/.UE for hyperlink references unless the new configuration setting text_references_ is True. The current default is True (text references), it will change to False (macro references) in Docutils 1.0. - Do not drop text of internal targets. * docutils/writers/null.py - `null.Writer.translate()` sets `self.output` to the empty string. * docutils/writers/odf_odt/__init__.py - Use "px" as fallback unit for unitless image size attributes. - Fix conversion factor of "pc" (pica) to "cm". - Fix conversion of image width in "%" if the height is specified. - Adjust fallback DPI value (currently not used) to match CSS units. - Fix errors with ``*.xml`` style files (bug #494). - Use "title" attribute in document metadata. * pyproject.toml - Add tox.ini to the "include" list (fixes bug #486). * tools/rst2odt.py - Use `core.publish_file()` instead of `core.publish_file_to_binary()`. * tools/rst2odt_prepstyles.py - Removed. Use ``python -m docutils.writers.odf_odt.prepstyles``. .. _length units: docs/ref/rst/restructuredtext.html#length-units Release 0.21.2 (2024年04月23日) =========================== * Declare support for languages Georgian and Catalan (Valencian). * docs/ref/docutils.dtd - Remove declaration of element . - Remove from content declaration of
elements. * Fix test failures. Release 0.21.1 (2024年04月10日) =========================== * Add missing files in Docutils 0.21 source distribution (sdist). Release 0.21 (2024年04月09日) ========================= * General - Drop support for Python 3.7 and 3.8. - Updated build system to use Flit_ (patch #186 by Adam Turner). Removed ``setup.py``. - Provide ``rst2*`` "console_scripts" `entry points`_ (without the ``.py`` extension) instead of installing the ``rst2*.py`` front end tools in the binary PATH. .. _Flit: https://github.com/pypa/flit/ * docs/ref/docutils.dtd - The element accepts a new attribute "loading". - Fix definitions (no change to actual behaviour): * The element uses the attribute "xml:space". * The element may contain text only (no inline elements). * The element uses the "depth" and "local" attributes to store "contents" directive options when used as placeholder for a generated table of contents (LaTeX writers with `use_latex_toc`_ setting). - Documentation fix: Reference names (``%refname.type`` and ``%refnames.type``) are whitespace-normalized but **not** always downcased. * docutils/frontend.py - Allow `validate_*()` functions to be called with just the "value" argument but keep the legacy interface for use with optparse. - New function `frontend.validate_math_output()`. * docutils/io.py - Simpler and more secure `input encoding`_ default behaviour: Do not use the locale encoding as fallback if Python is started in `UTF-8 mode`_. Stop using "latin1" as second fallback. Remove BOM (U+FEFF ZWNBSP at start of data) only if the "input_encoding" configuration setting is None, '', 'utf-8-sig', 'utf-16', or 'utf-32'. Do not remove other ZWNBSPs. .. _UTF-8 mode: https://docs.python.org/3/library/os.html#utf8-mode .. _input encoding: docs/api/publisher.html#encodings - Auto-close `FileInput.source` in case of reading/decoding errors. * docutils/languages/, docutils/parsers/rst/languages/ - Mark/Fix mistranslated localizations of the "admonition" directive name. In Docutils, "admonition" is used as a generic term for "advice"/"advisory"/"remark", not a reprimand. - Add support for Georgian language (patch #204 by Temuri Doghonadze). - Update/complete Catalan translations (patch #203 by Antoni Bella Pérez). * docutils/nodes.py - Remove compatibility hacks `nodes.reprunicode` and `nodes.ensure_str()`. * docutils/parsers/rst/directives/images.py - New "image" directive option "loading". * docutils/parsers/rst/directives/tables.py - Use the same CSV format for the ``:header:`` option and the main data of the "csv-table" directive. - Move `parsers.rst.directives.Table.process_header_option()` method to `parsers.rst.directives.CSVTable`. * docutils/parsers/rst/states.py - Don't split inside "" when parsing "option groups" (fixes bug #474). * docutils/parsers/rst/directives/misc.py, docutils/parsers/rst/directives/tables.py - Consider the new root_prefix_ setting when including files with "include", "raw", or "csv-table" directives. * docutils/utils/math/* - Use custom exception `utils.math.MathError` instead of abusing `SyntaxError` for LaTeX math syntax errors. - Unify interface of LaTeX -> MathML conversion functions. Improve error reporting. - Sort ħ (`\hslash`) as "mathord", not "mathalpha". * docutils/utils/math/latex2mathml.py - Generate "MathML Core" to fix rendering with Chromium/Android. Use CSS rules instead of the deprecated "columnalign" attribute to style as "align" environment. Use Mathematical Alphanumeric Symbols instead of with "mathvariant" attribute. - Use instead of for character class "mathord". - Support "aligned" environment. - Eliminate side-effect on later import of "tex2unichar". * docutils/utils/math/mathml_elements.py - New module defining MathML element classes (outsourced from latex2mathml.py). - Base MathML element classes on `xml.etree.ElementTree`. * docutils/utils/roman.py - Update to version `1.4 `__. Fixes feature-request #95 (license is now ZPL 2.1). * docutils/utils/smartquotes.py - Pre-compile regexps once, not with every call of `educateQuotes()` (patch #206 by Chris Sewell). - Simplify regexps; skip replacement rules if there is nothing to replace. * docutils/writers/html4css1/__init__.py - Support video inclusion via ```` tags. * docutils/writers/html5_polyglot/\*.css - Move MathML styles to "minimal.css" (required for correct rendering). - Highlight heading of target section also with explicit hyperlink target. - No additional margins for line-blocks. * docutils/writers/_html_base.py - Stop setting the "footnote-reference" class value for footnote references. Since 0.18, you can use the CSS selector ``[role="doc-noteref"]``. - Support reading/embedding images also with "file:" URI. - Warn, if image scaling fails because the image file cannot be read. - Support video inclusion via ``