API Reference
deixis-footnote
Allocates a native footer slot at the body declaration, even when its original mark is on another page.
Setup Required
Returns: content.
Example
deixis-footnote[An explanation.]
Native flow (the default) paginates long bodies and uses the footer’s typography; separator/gap are native footnote.entry settings. Overlay footnotes reserve space but paint whole units. Local block footnotes collect at the block end. numbering: (restart: “page”, pattern: “1”) restarts displayed markers on each original page; assigned counts stay stable. HTML uses the native footnote section for every layer. Notes nested in Deixis footnote bodies exceed the HTML layout-pass budget.
deixis-footnote
deixis-footnote(..args, mark-type: auto, id: none, data: (:), of: none, numbering: auto, marker: auto, target: auto, series: auto, marker-style: auto, marker-position: auto, stroke: auto, fill: auto, radius: auto, z-index: auto, inline-mode: auto, pins: (), padding: auto, region-shape: auto, layer: auto, inline: false, backlink: auto, render-single: auto, container-func: auto, container-args: (:))
A wrapper for generating footnotes.
This function creates a mark in the text and delegates the body to deixis-footnote-body.
The library’s atmosphere was defined by a subtle
#deixis-footnote[bibliosmia][The smell of old books.]
that seemed to settle on the skin like a light dust.
- ..args (arguments): Accepts up to two positional arguments:
[mark][body]. All named arguments are forwarded todeixis-footnote-body. - mark-type (auto, str): The type of mark to render in the text. Choices:
"inline"|"region"|"phantom". - id (none, str, label): Names the original annotation created by this wrapper. Without id, its identity is private.
- data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.
- numbering (auto, none, str, function, dictionary): The numbering style for the footnote marker.
- marker (auto, content): A hardcoded marker to use instead of the automatic counter.
- target (auto, int, label, str): Creation uses the current scope; of inherits the original’s rendering instance. Explicit values override the body scope.
- series (auto, str): Original counter series, defaulting to
"default". Omit with of; attachments inherit. - marker-style (auto, function): A custom styling function
(string) => contentfor the footnote marker. - marker-position (auto, alignment, dictionary): Mark marker placement.
- stroke (auto, stroke, none): The border stroke.
- fill (auto, color, none): The background fill color.
- radius (auto, length, dictionary): The border radius.
- inline-mode (auto, str): The visual decoration applied to the marked inline text. Choices:
"highlight"|"box"|"parentheses"|"underline"|"text-fill"|"none". - pins (array): Array of pin names for the region mark.
- padding (auto, length, str): Internal padding for the region mark.
- region-shape (auto, function): Shape drawing function for the region mark.
- layer (auto, str): Rendering layer for the region mark. Choices:
"flow"|"foreground"|"background". - inline (bool): If
true, force the region mark into an inline box. - backlink (auto, bool, str): Whether to generate a clickable backlink returning to the mark. Choices:
bool|"always"|"none"|"never"|"multiple". - render-single (auto, function): A custom render function for the inner layout of the body.
- container-func (auto, str, function): A custom container wrapper for the body block, or a preset name (“plain”, “rect”, “alert”, “stripe”, “tinted”).
Parameters
| Name | Default | Types |
|---|---|---|
..args | variadic | arguments |
mark-type | auto | auto, str |
id | none | none, str, label |
data | (:) | dictionary |
of | none | none, str, label |
numbering | auto | auto, none, str, function, dictionary |
marker | auto | auto, content |
target | auto | auto, int, label, str |
series | auto | auto, str |
marker-style | auto | auto, function |
marker-position | auto | auto, alignment, dictionary |
stroke | auto | auto, stroke, none |
fill | auto | auto, color, none |
radius | auto | auto, length, dictionary |
z-index | auto | auto, int, dictionary |
inline-mode | auto | auto, str |
pins | () | array |
padding | auto | auto, length, str, dictionary |
region-shape | auto | auto, function |
layer | auto | auto, str |
inline | false | bool |
backlink | auto | auto, bool, str |
render-single | auto | auto, function |
container-func | auto | auto, str, function |
container-args | (:) | dictionary |
..args
Accepts up to two positional arguments: [mark][body].
With of, accepts only [body] and body options. Configure the original
mark separately; non-default mark-only options are rejected.
mark-type
The type of mark to render in the text. Choices: "inline" | "region" | "phantom".
id
Names the original annotation created by this wrapper. Without id, its identity is private.
data
Custom annotation fields for creation or a standalone body. Omit with of.
of
Existing original annotation to attach this body to, instead of declaring a new note.
numbering
The numbering style for the marker.
A record (restart: "page", pattern: "1") restarts displayed markers per original page; assigned counters stay unchanged.
none disables automatic markers and counter allocation.
marker
A hardcoded marker override.
target
Auto uses the current scope for creation and inherits the original’s exact rendering instance with of. Explicit values override the body scope when attached, without moving the original counter.
series
Original counter series, defaulting to "default" for creation.
Omit with of; an attachment inherits and cannot redefine the series.
marker-style
A custom styling function for the marker.
marker-position
Mark marker placement.
See deixis-inline-mark.marker-position and deixis-region-mark.marker-position.
stroke
The border stroke.
fill
The background fill color.
radius
The border radius.
z-index
Overlay paint priority; higher integers paint later within a layer. Native flow retains its order. Component dictionaries are supported.
inline-mode
The visual decoration applied to the marked inline text. Choices: "highlight" | "box" | "parentheses" | "underline" | "text-fill" | "none".
See deixis-inline-mark.inline-mode.
pins
Array of pin names for the region mark.
See deixis-region-mark.pins.
padding
Internal padding for the region mark.
See deixis-region-mark.padding.
region-shape
Shape drawing function for the region mark.
See deixis-region-mark.region-shape.
layer
Rendering layer for the region mark. Choices: "flow" | "foreground" | "background".
See deixis-region-mark.layer.
inline
If true, force the region mark into an inline box.
See deixis-region-mark.inline.
backlink
Whether to generate a clickable backlink returning the reader to the mark. Choices: bool | "always" | "none" | "never" | "multiple".
render-single
A custom render function for the inner layout of the body.
container-func
A body wrapper function or preset name: “plain”, “rect”, “alert”, “stripe” or “tinted”. Forward wrapper options through container-args.
container-args
Native/custom options forwarded only to the body container.
deixis-footnote-body
deixis-footnote-body(body, id: none, data: (:), of: none, target: auto, series: auto, marker-style: auto, backlink: auto, stroke: auto, fill: auto, radius: auto, z-index: auto, layer: auto, render-single: auto, container-func: auto, container-args: (:), ..args)
A standalone body content of a footnote.
Page-targeted bodies use the native page footer. Block-targeted bodies collect
after all main content of their owning block, including a multi-page block.
The collection can paginate; every valid layer resolves to native flow there.
Use an explicit target: "page" to allocate a page footer from inside a block.
Info.
Native #std.footnote owns page allocation. The flow body layer uses native
pagination; overlay layers reserve geometry and paint short complete bodies.
Empty overlay markers need a following visible layout anchor. A dropped
native allocation is diagnosed: put the declaration before visible text in
the same paragraph, or use layer: "flow". Flow calls within prose preserve
the surrounding paragraph and spaces. An isolated body-only declaration can still create a native empty paragraph.
Source indentation is folded by native layout; explicit initial paragraph
breaks and line breaks are preserved. Breakable containers are required for
long bodies: use block with container-args: (breakable: true); rect and
the alert container are unbreakable, just as in native Typst.
Parent-scope floats cannot allocate page footnotes in any layer. Keep the
mark in that float and declare its body in main flow. Ordinary column-scope
floats support native allocation.
The evening sky was painted in a deep, haunting
#deixis-inline-mark(id: <smalt>)[smalt]
that made the first stars appear like diamonds on velvet.
#deixis-footnote-body(of: <smalt>)[A deep blue pigment made from powdered glass colored with cobalt oxide.]
- body (content): The actual text or content of the note.
- id (none, str, label): Names a standalone body. Use of to attach this body to an original mark.
- data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.
- target (auto, int, label, str): Body rendering scope. Auto inherits the original mark’s exact instance, or uses the current scope for standalone bodies.
- series (auto, str): Collection series for a standalone body. Omit with of; attachments inherit the original’s series.
- marker-style (auto, function): A custom styling function for the marker.
- backlink (auto, bool, str): Whether to generate a clickable backlink returning the reader to the mark. Choices:
bool|"always"|"none"|"never"|"multiple". - stroke (auto, stroke, none): The border stroke.
- fill (auto, color, none): The background fill color.
- radius (auto, length, dictionary): The border radius.
- render-single (auto, function): A custom render function for the inner layout of the body.
- container-func (auto, str, function): A custom container wrapper for the body block, or a preset name (“plain”, “rect”, “alert”, “stripe”, “tinted”).
- ..args (arguments): Additional arguments are rejected; put custom container options in
container-args.
Parameters
| Name | Default | Types |
|---|---|---|
body | required | content |
id | none | none, str, label |
data | (:) | dictionary |
of | none | none, str, label |
target | auto | auto, int, label, str |
series | auto | auto, str |
marker-style | auto | auto, function |
backlink | auto | auto, bool, str |
stroke | auto | auto, stroke, none |
fill | auto | auto, color, none |
radius | auto | auto, length, dictionary |
z-index | auto | auto, int, dictionary |
layer | auto | auto, str, dictionary |
render-single | auto | auto, function |
container-func | auto | auto, str, function |
container-args | (:) | dictionary |
..args | variadic | arguments |
body
The actual text or content of the note.
id
Names a standalone body. Use of to attach this body to an original mark.
data
Custom annotation fields for creation or a standalone body. Omit with of.
of
Existing original annotation to attach this body to, instead of declaring a new note.
target
Body rendering scope. Auto inherits the original mark’s exact instance, or uses the current scope for a standalone body. An explicit override changes body rendering without moving the original counter.
series
Collection series for a standalone body. Omit with of; attachments inherit their original’s series and reject explicit series arguments.
marker-style
A custom styling function for the marker.
backlink
Whether to generate a clickable backlink returning the reader to the mark. Choices: bool | "always" | "none" | "never" | "multiple".
stroke
The border stroke.
fill
The background fill color.
radius
The border radius.
z-index
Overlay paint priority; higher integers paint later within a layer. Native flow retains its order. Component dictionaries are supported.
layer
Page bodies: flow uses native pagination; overlays reserve space. Block bodies collect in native flow for every valid layer request.
render-single
A custom render function for the inner layout of the body.
container-func
A body wrapper function or preset name: “plain”, “rect”, “alert”, “stripe” or “tinted”. Forward wrapper options through container-args.
container-args
Native/custom options forwarded only to the body container.
..args
Additional arguments are rejected; put custom container options in container-args.