API Reference
deixis-block
Creates local annotation rendering/settings/counter scope around native content.
Setup Required
Returns: content.
Example
deixis-block(id: <section>)[Local content.]
Minipage maps margin to internal inset and fixes outset at 0pt. Named IDs are unique; automatic scopes stay private. Breakable blocks use per-page margin frames and collect local footnotes at the block end. Page-local numbering restarts displayed markers at each original page, including inside multi-page blocks. HTML prints local footnote lists where their block ends.
deixis-block
deixis-block(id: auto, thread: none, sync-counters-with: auto, width: auto, height: auto, breakable: auto, fill: auto, stroke: auto, radius: auto, inset: auto, outset: auto, spacing: auto, above: auto, below: auto, clip: auto, sticky: auto, ..args)
Creates an isolated, self-contained layout environment for notes.
A minipage provides a separate rendering and counter scope. Margin notes use its insets; footnotes are collected after all main content, with native pagination for long collections. They are not per-page block footers. A single-column breakable block has a margin frame on each physical page, with normal overflow limits when space runs out. Overlay packing does not subtract native page-footer reservations or create more pages. Counters are independent by default and can be shared or synchronized explicitly. With page-local numbering, displayed markers restart on each original mark page even when the block spans pages; its footnotes still collect at the end.
//| sandbox-mode: "page"
#deixis-footnote[This is a page footnote.]
#deixis-block(inset: 5pt, fill: gray.lighten(90%))[
Inside a `#deixis-block`, notes have their own counters and layout.
#deixis-footnote[This is a block-level footnote.]
]
Experiment.
Nested blocks keep independent counters and rendering scopes. Breakable and threaded layouts should be checked against the available page/block space.
//| sandbox-mode: "page"
#deixis-block(inset: 5pt, fill: red.lighten(90%))[
#deixis-footnote[Level 1.]
#deixis-block(inset: 5pt, fill: orange.lighten(90%))[
#deixis-footnote[Level 2.]
#deixis-block(inset: 5pt, fill: yellow.lighten(90%))[
#deixis-footnote[Level 3.]
#deixis-block(inset: 5pt, fill: green.lighten(90%))[
You are wandering into the unknown#deixis-footnote[Level 4.].
]
]
]
]
- id (auto, str, label): A unique nonempty public block name;
"page"is reserved.autocreates a private instance. - thread (none, str, label): A nonempty name sharing rendering and, by default, counters between distinct blocks. Matching strings/labels select the same thread.
- sync-counters-with (auto, int, label, str): Synchronize internal counters with another
#deixis-blockor the global document counters rather than starting from 1. - width (auto, length, relative): See
std.block.width. - height (auto, length, relative): See
std.block.height. - breakable (auto, bool): See
std.block.breakable. - fill (auto, color, none): See
std.block.fill. - stroke (auto, stroke, none): See
std.block.stroke. - radius (auto, length, dictionary): See
std.block.radius. - inset (auto, length, dictionary): See
std.block.inset. - outset (auto, length, dictionary): See
std.block.outset. - spacing (auto, length): See
std.block.spacing. - above (auto, length): See
std.block.above. - below (auto, length): See
std.block.below. - clip (auto, bool): See
std.block.clip. - sticky (auto, bool): See
std.block.sticky. - ..args (arguments): Accepts at most 1 positional argument:
[body], the content of the minipage.
Parameters
| Name | Default | Types |
|---|---|---|
id | auto | auto, str, label |
thread | none | none, str, label |
sync-counters-with | auto | auto, int, label, str |
width | auto | auto, length, relative |
height | auto | auto, length, relative |
breakable | auto | auto, bool |
fill | auto | auto, color, none |
stroke | auto | auto, stroke, none |
radius | auto | auto, length, dictionary |
inset | auto | auto, length, dictionary |
outset | auto | auto, length, dictionary |
spacing | auto | auto, length |
above | auto | auto, length |
below | auto | auto, length |
clip | auto | auto, bool |
sticky | auto | auto, bool |
..args | variadic | arguments |
id
A nonempty string/label name for this block. Names must be unique; page is reserved. Auto creates a private instance without a public name.
thread
Allows separate blocks to share rendering/counters through a nonempty string or label name. Equivalent strings/labels select the same thread.
//| sandbox-mode: "page"
#deixis-block(thread: "green", inset: 5pt, fill: green.lighten(90%))[
#deixis-footnote[This block belongs to the `"green"` thread.]
]
#deixis-block(inset: 5pt, fill: red.lighten(90%))[
#deixis-footnote[This block does not, hence, its notes count from 1.]
]
#deixis-block(thread: "green", inset: 5pt, fill: green.lighten(90%))[
#deixis-footnote[This block also belongs to the `"green"` thread.]
]
Tip.
thread cannot be used to sync counters with the "page".
For that purpose, use deixis-block.sync-counters-with.
sync-counters-with controls numbering; thread controls rendering ownership.
Each block still owns its collected footnotes independently.
sync-counters-with
Synchronize internal counters with another #deixis-block or the global document counters rather than starting from 1.
- Accepts
intfor going up in the stack level, and"page"for the document global.
//| sandbox-mode: "page"
#deixis-block(sync-counters-with: "page", inset: 5pt, fill: red.lighten(90%))[
#deixis-footnote[This block shares its counters with the document.]
]
#deixis-block(sync-counters-with: -1, inset: 5pt, fill: orange.lighten(90%))[
#deixis-footnote[Same for this block.]
]
- Also accepts
labelorstrfor targetting another#deixis-block.
//| sandbox-mode: "page"
#deixis-block(id: <blue-block>, inset: 5pt, fill: blue.lighten(90%))[
#deixis-footnote[This block is given an `id: <blue-block>`.]
]
#deixis-block(sync-counters-with: <blue-block>, inset: 5pt, fill: teal.lighten(90%))[
#deixis-footnote[This block shares its counters with `<blue-block>`.]
]
Tip.
To sync counters of multiple blocks, it is more convenient to use deixis-block.thread.
width
See std.block.width.
height
See std.block.height.
breakable
See std.block.breakable.
fill
See std.block.fill.
stroke
See std.block.stroke.
radius
See std.block.radius.
inset
See std.block.inset.
Info.
The left and right inset of a #deixis-block is where block-level deixis-margin-note-body are rendered.
outset
See std.block.outset.
spacing
See std.block.spacing.
above
See std.block.above.
below
See std.block.below.
clip
See std.block.clip.
sticky
See std.block.sticky.
..args
Accepts at most 1 positional argument: [body], the content of the minipage.
See std.block.body.
deixis-minipage
deixis-minipage(id: auto, thread: none, sync-counters-with: auto, width: auto, height: auto, breakable: auto, fill: auto, stroke: auto, radius: auto, margin: auto, spacing: auto, above: auto, below: auto, clip: auto, sticky: auto, ..args)
Creates an isolated layout environment for notes, utilizing margin instead of inset/outset.
This is just a convenience wrapper around #deixis-block.
It calls #deixis-block with inset: margin and outset: 0pt by default.
See #deixis-block for details about parameters.
- id (auto, str, label): A unique nonempty public block name;
"page"is reserved.autocreates a private instance. - thread (none, str, label): A nonempty name sharing rendering and, by default, counters between distinct blocks. Matching strings/labels select the same thread.
- sync-counters-with (auto, int, label, str): Synchronize internal counters with another
#deixis-blockor the global document counters rather than starting from 1. - width (auto, length, relative): See
std.block.width. - height (auto, length, relative): See
std.block.height. - breakable (auto, bool): See
std.block.breakable. - fill (auto, color, none): See
std.block.fill. - stroke (auto, stroke, none): See
std.block.stroke. - radius (auto, length, dictionary): See
std.block.radius. - margin (auto, length, dictionary): Internal padding, forwarded to
deixis-block.inset; reserves space for local margin notes. - spacing (auto, length): See
std.block.spacing. - above (auto, length): See
std.block.above. - below (auto, length): See
std.block.below. - clip (auto, bool): See
std.block.clip. - sticky (auto, bool): See
std.block.sticky. - ..args (arguments): Accepts at most 1 positional argument:
[body], the content of the minipage.
Parameters
| Name | Default | Types |
|---|---|---|
id | auto | |
thread | none | |
sync-counters-with | auto | |
width | auto | |
height | auto | |
breakable | auto | |
fill | auto | |
stroke | auto | |
radius | auto | |
margin | auto | auto, length, dictionary |
spacing | auto | |
above | auto | |
below | auto | |
clip | auto | |
sticky | auto | |
..args | variadic |
margin
Internal padding between the block boundary and its content.
Forwarded to deixis-block(inset: margin, outset: 0pt); its left and right
padding also provide space for local margin notes.