Body & detail
The two slots every construct may carry, and the policies that say what is legal in each.
#Two slots
A construct may carry two bracketed slots after its head: a { } body and a [ ] detail. Most elements use only the body. The scene is the one place the distinction carries the document's architecture — its body is the narrative the reader reads, its detail is the canvas they look at.
scene{
The narrative — prose, headings, callouts.
}[
canvas.graph{
curve(expression: x^2)
}
]#Containment policies
What is legal inside each slot is declared per element, and every reference page prints it under Allowed content. A policy is one of three things: a list of element ids, a prose description of what the slot accepts, or nothing at all when the element takes no such slot.
- A list of ids — only those elements compile there. A
canvas.graphbody accepts marks and cues, nothing else. - Prose — the slot takes content rather than elements, like a paragraph's rich text or a
lineschunk's literal code. - Nothing — marks take no body; a mark's text is its
label:attribute.
#Rich text is not a body policy
Where a page says a slot takes inline Chalk, the contents are prose with micronodes — **bold**, $maths$, !teal{…} — not block elements. The same is true of attributes typed rich-text: a mark's label: renders formatting and maths, but cannot hold a paragraph.
#Where an element may be written
Every block element's page carries an Allowed in section — the reverse of the policy, computed across the whole reference: which elements name this one in their body or detail. It answers the question a policy list cannot, which is where a thing you have just found is actually allowed to go.