pub enum Block {
Heading {
level: u8,
lemma: String,
},
Paragraph {
text: String,
},
Text {
text: String,
},
Open {
kind: Container,
lemma: Option<String>,
},
Close {
hypograph: Option<String>,
},
Verbatim {
lang: Option<String>,
text: String,
},
NoteRef {
onym: String,
family: Option<NoteFamily>,
margin: bool,
},
IndexMark {
term: String,
},
Verse {
lemma: Option<String>,
strophes: Vec<Vec<String>>,
hypograph: Option<String>,
},
Table {
lemma: Option<String>,
headers: Option<Vec<String>>,
rows: Vec<Vec<Cell>>,
},
}Expand description
A block-level event in the text-level vocabulary — what a format adapter emits. Headings arrive flat; the section tree is derived here, once, for every adapter.
Variants§
Heading
A flat heading: level is the source level (h2 → 2, a
LaTeX \section → its depth), lemma its text.
Paragraph
A plain paragraph — the implicit, lemma-less block.
Text
Inline content belonging directly to the open container (a list item’s own text, a bare-text blockquote). With no open container it is read as a paragraph.
Open
Open a nesting container. Items take their unordered- /
ordered- flavor (and taxis) from the enclosing list.
Close
Close the innermost open container, optionally with its hypograph (footer or attribution).
Verbatim
A verbatim block — code or other preformatted lines, kept as authored.
NoteRef
An in-text note callout (the deixis, ruling #35): onym
names the body it cites within its family. Emitted after
the flow block it sits in; it becomes that block’s child,
in order, and the block’s own text stays clean of markers.
family: None means the source declares none (an HTML
noteref): the callout takes its resolved body’s family,
and a dangling one defaults to footnote.
Fields
family: Option<NoteFamily>IndexMark
An index mark (ruling #36): an invisible anchor declaring
this place concerns term. The back-of-book index is a
query over these, never a stored structure.
Verse
A verse block (ruling #37 — litogramma’s stichoi model):
strophes of lines, denormalized like Block::Table.
Lines arrive flattened by the adapter and are kept as
authored; the stichos ::taxis numbers lines 1-based,
CONTINUOUSLY across strophes — the citation coordinate.
Table
A table, denormalized here into nested lists (rows =
ordered items with the <row> trait, cells = unordered
items with the <cell> trait and the column name as
::lemma). Header detection is the adapter’s job; the
lowering rule lives here. A cell’s own label (a row’s
th) wins over the positional headers entry.