Menu

#101 New "doctree" element for hard line breaks.

Default
pending-moreinfo
nobody
None
5
2025-04-28
2023-12-12
No

Not providing for "hard line break elements" in the Docutils document model and reStructuredText syntax was a deliberate decision at the time these two were devised.

However, times have changed and there are new arguments and use-cases for hard line breaks.
(cf. the comments in #85).
Something like a <br> inline node or special handling of <inline class=line-break> inline nodes may be considered. The latter would not change the document model and could be implemented at the writer level or via stylesheet rules.

Whether to add a reStructuredText syntax for hard line breaks can be decided independently.
The current rules require a non-white character in a role defined with .. role:: line-break.

Related

Feature Requests: #85

Discussion

  • Günter Milde

    Günter Milde - 2025-04-28
    • status: open --> pending-moreinfo
     
  • Günter Milde

    Günter Milde - 2025-04-28

    Instead of relying on a "magic" class value, we may also allow the "xml:space" attribute for <inline> elements and represent a hard line break in the Document Tree as space-preserving inline element containing a newline character.
    Markup parsers (like MyST and pycmark) could translate an end-of-line backslash to

        <inline xml:space=preserve>\n</inline>
    

    Writers would need to check inline elements for xml:space and translate it accordingly (e.g. HTML may use <span style="white-space:pre-wrap;">...<\span> in the general case and <br> if the content is just one newline character.)

    The advantage it that there is a precedence: the "xml:space" attribute is defined by the XML standard "to signal an intention that in that element, white space should be preserved by applications." https://www.w3.org/TR/REC-xml/#sec-white-space

    The Doctree uses the "xml:space" attribute already for the <address>, <comment>, <doctest_block>, <literal_block>, <math_block>, and <raw> elements.
    https://docutils.sourceforge.io/docs/ref/doctree.html#xml-space

     
  • Günter Milde

    Günter Milde - 2025-04-28

    -1 for backslash at line-end as "hard line break" in reStructuredText. This would not fit nice with

    Escaped whitespace characters are removed from the output document together with the escaping backslash. This allows for character-level inline markup.
    https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#escaping-mechanism

    Rather, I suggest "backslash + newline" as a line continuation syntax for, e.g. wrapping long section titles.

    +1 for a representation of hard line breaks in the Docutils Document Model ("doctree") for use in generated content or markup parsers.
    Open question: should we introduce
    * a new <br> element,
    * a "magic" class value like "pre-wrap" (or "line-break"), or
    * an "xml:space" attribute for <inline> elements.

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.