Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

One Body, Several Marks

Declare a note once, then use deixis-mark(of: ...) or the equivalent deixis-inline-mark(of: ...) where another passage needs the same annotation:

Source

#show: deixis-setup-notes
First#deixis-endnote(id: <shared>, backlink: "multiple")[One explanation.]
Again#deixis-mark(of: <shared>).
#deixis-print-endnotes()

Complete source and preview setup

Output · Click to zoom

The small shared-note example also decorates a repeated passage. The target is the annotation’s public ID. A repeated mark can appear before the original declaration, on a later page, or in another scope. It keeps the original number and series without advancing any counter. Defining an original mark twice with the same ID remains an error; repetition is explicit.

Both forms share one occurrence engine and support the same local appearance, forward targets, names, and backlinks. deixis-mark(id: ...) also creates originals; of: always means reuse. Identity arguments are named. See annotation identities and the mark/body example.

Compared With A Reference

Both @shared / deixis-ref(<shared>) and a repeat display the original number and register one return-link origin. For a bare number their visible result is often identical; a prose reference is usually enough. References also support lists, numeric ranges, supplements, and native page forms.

A reused mark uses the inline-mark interface by default for another annotated passage. It accepts passage content, marker overrides, marker position, and inline decoration such as underline/highlight/box. The content argument to deixis-ref is a supplement; the content argument to deixis-mark is the passage being marked. A repeat adds no connector automatically. An optionally named occurrence can now supply measured inline geometry for explicit connection selection.

Forward use is allowed with an annotation ID declared later:

Source

Earlier#deixis-mark(of: <later>).
Later#deixis-endnote(id: <later>)[The shared explanation.]
#deixis-print-endnotes()

Complete source and preview setup

Output · Click to zoom

The original declaration remains the counter owner regardless of source order. An occurrence does not become the primary mark because it appears first.

All Three Mark Forms

deixis-mark supports every current mark type. Bare calls remain inline, independently of the original’s type. Select another form explicitly:

Source

#deixis-mark(of: <shared>, mark-type: "region", inline: true,
  layer: "background")[$x^2 + y^2$]
#deixis-mark(of: <shared>, mark-type: "phantom", occurrence: <quiet>)

Complete source and preview setup

Output · Click to zoom

deixis-region-mark(of: ...) and deixis-phantom-mark(of: ...) are equivalent specialized forms using the same engine. All forms retain forward lookup, the original counter/scope/series, and one body. See the small example.

Regions require either a new passage or pins, never both. Supplied pins select region mode when mark-type is auto, matching the note wrappers. Content alone keeps the inline default. Automatic corners are private to each region occurrence, including unnamed and nested occurrences.

A region original supplies its captured shape, layer, padding, marker placement, and common styles beneath local overrides. Switching from an inline/phantom original inherits common stroke/fill/radius and marker style; region-specific defaults come from region configuration. Component dictionaries select the mark branch. Local marker/region changes never alter the shared body. Overlay region markers remain foreground, as for original regions.

Phantom repeats emit only a semantic origin. They accept no passage or appearance override and do not hide or renumber the shared body. Region-only options are rejected on other repeat types instead of being ignored.

Appearance

The default call displays the original marker and uses its marker-style function. It can repeat an inline, phantom, or region original as an inline marker. The surrounding text context belongs to this occurrence. Local decoration controls match inline marks:

Source

#deixis-mark(of: <shared>, inline-mode: "underline")[Another passage]
#deixis-mark(of: <shared>, marker-style: it => strong(it))
#deixis-mark(of: <shared>, marker: none)

Complete source and preview setup

Output · Click to zoom

marker overrides only this occurrence. With marker: none and no content, the call publishes an invisible return-link origin without adding an inline box or empty paragraph. It does not change the original mark or the body’s marker.

The original mark’s resolved stroke/fill/radius are retained even if defaults change before the repeat. Component dictionaries on supported styling parameters select the mark branch, with nodes/rest fallbacks as in ordinary marks:

Source

#deixis-mark(of: <shared>,
  stroke: (mark: blue, body: red),
  marker-style: (mark: it => strong(it), body: it => emph(it)),
)[Another passage]

Complete source and preview setup

Output · Click to zoom

Here blue and strong affect this occurrence. The body branches do not change the shared note body, and a body-only override leaves the occurrence’s inherited mark styling intact. These rules also apply to fill, radius, inline-mode, and marker-position. The hardcoded marker itself is a scalar content value, rather than a component dictionary. Relative em lengths and marker callbacks still use this occurrence’s typography.

Passage content is not a second note-body component. Body-only and connector options are rejected. Layer/padding/shape options apply only in region mode. A bare repeat of a region or phantom original remains inline; choose its other form explicitly.

Repeated markers link to the body when it has been painted. Until then they show their marker without a dead link. backlink: true / "always" adds a return hook for the original mark, every repeated-mark call, and every ordinary reference call. "multiple" enables hooks once the original has at least one other origin. Repeated marks and references retain their source order after the original’s return link. Built-in measurement includes the resulting hook dimensions.

Footnote, endnote, margin, inset, and inline bodies remain single bodies. Nested repeated marks do not print another explanation or replay body state. Outlines continue to show one entry for each annotation. A standalone body with no original mark has no counter owner; use deixis-ref for it. To make it a numbered annotation, declare the original with id: and attach the body with of:.

The original mark remains the implicit placement anchor and connector source. Repetition does not move a margin/inset body, create another reservation, or draw an additional connector, even when the body has connector: enabled. Placing copies of a body on several pages remains a separate extension. Ordinary @label / deixis-ref calls remain the simplest choice for prose references.

Named Occurrence Frames

Give an occurrence a name when it needs a stable identity and a measured frame:

Source

#deixis-mark(of: <shared>, occurrence: <later-use>)[Another short passage]

Complete source and preview setup

Output · Click to zoom

Names are nonempty strings or labels scoped to the annotation. Two different annotations can both have an occurrence named later-use. Reusing a name for the same annotation is an error, including when selecting its ID as a string or label. Forward targets work, and naming an occurrence does not advance counters or add another body/backlink origin. These names are not new note aliases or native reference labels: @later-use does not refer to the shared annotation.

A visible named inline occurrence wraps its formatted marker and optional passage in one native inline box. Its four measured corners supply a page-space envelope and four candidate ports, including under native transforms. This box does not break across lines/pages: use short passages. Its bounds are the native content frame, not a glyph-ink or decoration-outset measurement. Unnamed repeats retain their existing wrapping behavior. With no passage and marker: none, even a named occurrence remains invisible and flow-neutral; it has an origin but no drawable frame or routing ports.

Live backlinks to a visible named occurrence target its painted frame. The early origin still counts hooks during measurement, so an inline box wrapping to the next line cannot leave the return destination on the preceding line.

A named region uses its own pin bounds. Connections select its fragment on the destination body’s page, or the nearest first/last fragment outside that range, matching original-region selection. Return links target the first painted frame of the whole region, even for an unnamed region declared far from its pins. A hidden region marker still has region geometry and a return destination.

A named phantom supplies a zero-size point at its native source metadata and can be an explicit connection source. Hiding an inline repeat with marker: none still supplies no drawable frame. Region/phantom calls add one return origin, regardless of fragment or edge count. Names are shared across all repeat types.

Reuse retains the region limits, including page-based fragments and one-page immediate regions. Immediate regions now preserve their native flow footprint during detached note measurement while painting only in live output. The example uses a flow-region repeat in a margin body and a block region in an inset body.

Select a named frame with deixis-connect(from: (mark: <shared>, occurrence: <later-use>), to: <shared>). Naming a repeat does not itself draw a line, change the original mark’s routing geometry, or move the shared body. See independent connections.

Body connector options remain the simple shorthand; independent edges select their own source occurrences.