The body of the document begins after the last line which begins with
the string `%%`, or after the shebang line if none exists.
+Multiple documents can be catenated into a single file; a new document
+ is begun on any line which starts with `#!lesml` or `##`.
+Documents in the later case inherit the latest preceding `#!lesml`
+ declaration.
+`##` may be followed by other text; this is treated as an interdocument
+ comment.
+
Documents are broken into paragraphs by blank lines.
Empty paragraphs are ignored.
Non·empty paragraphs are classified as follows :—
| Character | Codepoint | Unicode Name |
| --------- | --------- | ------------ |
- | `#` | `U+0023` | `NUMBER SIGN` |
| `*` | `U+002A` | `ASTERISK` |
| `-` | `U+002D` | `HYPHEN-MINUS` |
| `.` | `U+002E` | `FULL STOP` |
There is only one level of paragraph quoting; quoted paragraphs may
not be quoted again.
+- If every line in the paragraph begins with zero or more white·space
+ characters followed by `|`, it is a “preformatted” paragraph and
+ white·space is not collapsed (`<html:pre>`).
+ A paragraph may be both quoted and preformatted.
+
- Otherwise, the paragraph is unquoted.
After this classification, each quoted or unquoted paragraph is further
classified by type based on its first character (which is must be
- followed by white·space to be recognized) :—
+ followed by white·space, or else the only thing on the line) :—
+
+- If the paragraph is preformatted, it is an ordinary paragraph.
- If the paragraph begins with `⁌`, it is a chapter heading
(`<html:h1>`).
- If the paragraph begins with `⚠︎`, it is a warning note
(`<html:div role="note" class="warn">`).
+- If the paragraph begins with `#`, it is a comment.
+ Comments produce X·M·L comment nodes and can be used to break up list
+ items into separate lists.
+
- If the paragraph begins with `⋯`, it is a continuation paragraph
(`<html:div class="continuation">`).
Continuation paragraphs may be used to continue a preceding list item
- Successive list items of the same level and class are joined into
a single list.
+- Linebreaks in preformatted paragraphs are replaced with `<html:br>`.
+
Finally, any character can be escaped by instead providing its Unicode
codepoint in the form `<U+NNNN>`, where `NNNN` is one or more
hexadecimal digits.