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

Revealing Annotations

To remove editorial notes from a final copy while preserving their marked text, use series-based omission. Native hiding below keeps annotation identities and counter values.

With the Touying setup, ordinary pause and uncover work around complete annotations:

Source

#slide[
  First idea.
  #pause
  Second idea#deixis-footnote[Its note appears with its mark.]
]

Complete source and preview setup

Output · Click to zoom

See the small two-frame example. It reveals a highlighted passage, inset body, connector, and page footnote together. Both Touying 0.6.3 and 0.8.0 support this setup.

Native Hiding

Deixis follows native hide(...), including the default cover produced by Touying. Setup follows native hiding scope so page overlays and collected notes cannot escape their covered declaration. Independent foreground and footer content stays visible when a hidden main-flow passage crosses a page break.

Component inside native hideResult
Inline mark, passage, or inline bodyNative hiding preserves its flow footprint and execution
Immediate margin/inset bodyNative hiding covers the local body; native placement behavior remains
Region drawing and markerNo visible shape or marker; geometric return anchors remain
Overlay margin/inset bodyNo live body, packing slot, or body-renderer callback
Page/block footnoteNo queued/collected entry or footer reservation
Endnote declarationIts printer omits the covered entry
ConnectionNo edge when its declaration or either selected endpoint is covered

Covered numbered originals still advance their Deixis counter; originals with numbering: none take no value. Reused marks retain the original marker. Native Typst footnote numbering stays independent. Native queries can still see hidden metadata and semantic identities; hiding does not remove declarations from the document. Flow bodies also keep native state effects while covered, whereas omitted deferred bodies do not execute their live callbacks. Immediate flow region callbacks can also execute under native hide; deferred region shape/marker callbacks are omitted. Hiding an endnote printer covers its native output and suppresses connections to those hidden bodies, while retaining native execution and print-once ownership.

Use Touying only when the complete annotation should be absent from other frames, including its declaration and counter increment:

Source

#only("2-")[Text#deixis-footnote[Present from frame two onward.]]

Complete source and preview setup

Output · Click to zoom

Each Component Owns Its Declaration Context

A creating wrapper normally puts its mark and body in the same cover. With separate calls, a covered mark does not automatically hide a body declared outside that cover:

Source

#hide[#deixis-mark(id: <shared>)[Covered passage]]
#deixis-inset-note-body(of: <shared>, layer: "foreground")[Visible explanation.]

Complete source and preview setup

Output · Click to zoom

Both shorthand and explicit connections to the covered mark are omitted. A visible reused occurrence can independently connect to that same visible body. Covered regions retain their location anchors so separately visible bodies can still position and link correctly. Covering only a connection leaves its nodes visible. These rules apply to foreground and background connections equally.

A pin used as a connection endpoint follows its own declaration’s hiding context. A pin used only as a waypoint, socket, or region boundary supplies geometry; its hiding context does not implicitly cover the consuming component.

Other Cover Effects And Frame Identity

This integration follows native hide. A non-hiding cover stays visible; ordinary inherited text color is captured with declaration typography by margin, inset, inline and endnote bodies. Page footnotes use the native footer typography, so a tinting cover leaves their bodies untinted, as it does std.footnote entries. Arbitrary fading, opacity, clipping, or custom cover functions are not automatically transplanted onto independent page-overlay drawings.

Touying resolves its animation markers before layout. Markers generated later inside opaque contextual note content still need Touying’s supported callback forms; capturing hide does not run the host parser inside a live note body.

Use wrapper-created private identities in repeated frames. Literal explicit IDs remain document-wide: copying the same original id: into several frames is still a duplicate declaration. For shared marks, decoupled components, and local references, the frame-local label recipe uses Touying’s pre-layout callback and ordinary native labels. The meaning of id and of stays the same.