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

API Reference

deixis-note-outline

Ready-made linked list over the annotation catalogue; custom callbacks can replace summaries or presentation.

Setup Required

Returns: content.

Task guide

Example

deixis-note-outline()

One entry per annotation, with links to all marked pages. Use query-notes for cards/tables or occurrence indexes. data can supply a custom title/status.

deixis-note-outline

deixis-note-outline(title: [List of Notes], heading-level: 1, target: auto, thread: auto, include-types: auto, exclude-types: (), series: auto, include-unpaired: false, after: none, before: none, group-by: none, fill: none, gap: auto, summary: auto, ..args)

A dynamically styled outline (Table of Contents) for your annotations.

The outline extracts static text from note bodies without executing them again. Each entry features a dynamic visual badge that inherits the styling of the specific note it represents. They act as clickable hyperlinks, returning the reader to the mark’s location. Entries follow original mark order, or body declaration order for standalone bodies. Bounds select those source locations; scope filters use body rendering ownership when a body exists. Target and thread filters combine. Reused marks stay in the same entry. Page links list distinct physical pages in mark source order and use native page numbering at each painted destination. Standalone bodies link to their live destination, or declaration if unprinted. For custom layouts or one row per occurrence, use deixis-query-notes.

#deixis-inset-note(dx: 10pt, dy: 0pt, stroke: red)[This is a note!]

#deixis-inset-note(dx: 10pt, dy: 0pt, stroke: green)[This is another note!]

#deixis-inset-note(dx: 10pt, dy: 0pt, stroke: blue)[This is yet another note!]
// `target: 0` restricts the search to notes inside this example block.
#deixis-note-outline(target: 0)
  • title (content, none): The heading content to display above the outline. Set to none to disable the heading.
  • heading-level (int): The heading level for the outline’s main title. Any dynamically generated group sub-headings will be rendered at heading-level + 1.
  • target (auto, label, str, int): Filters the outline to notes belonging to a specific target block or minipage.
  • thread (auto, str, label): Filters the outline to only show notes belonging to a specific thread of minipages.
  • include-types (auto, str, array): One note type or a union of types. Auto includes all; an empty array includes none.
  • exclude-types (str, array): One note type or a union of types to exclude.
  • series (auto, str, array): Filters the outline to notes belonging to a specific series or array of series.
  • include-unpaired (bool, str): Also include marks without bodies, standalone bodies, or both. Values: false, true, “mark”, “body”.
  • after (none, location, label, str, dictionary, selector, function): Exclusive source boundary: a native location/label/selector or a pin name/target.
  • before (none, location, label, str, dictionary, selector, function): Exclusive source boundary, with the same selection rules as after.
  • group-by (none, str, function): Categorizes the notes under sub-headings. Accepts "type" (e.g., “Margin Notes”), "series", or a custom function(note) => string.
  • fill (none, content): Fills the space between the excerpt and the page number. Commonly set to repeat[.] for standard TOC styling.
  • gap (auto, length): The vertical spacing between individual note rows in the outline.
  • summary (auto, function): A callback (note) => content for each excerpt. By default, extracts up to 160 characters of static text without executing contextual content.

Parameters

NameDefaultTypes
title[List of Notes]content, none
heading-level1int
targetautoauto, label, str, int
threadautoauto, str, label
include-typesautoauto, str, array
exclude-types()str, array
seriesautoauto, str, array
include-unpairedfalsebool, str
afternonenone, location, label, str, dictionary, selector, function
beforenonenone, location, label, str, dictionary, selector, function
group-bynonenone, str, function
fillnonenone, content
gapautoauto, length
summaryautoauto, function
..argsvariadicarguments

title

The heading content to display above the outline. Set to none to disable the heading.

#deixis-note-outline(target: 0, title: [Liste des Notes])

heading-level

The heading level for the outline’s main title. Any dynamically generated group sub-headings will be rendered at heading-level + 1.

#deixis-note-outline(target: 0, heading-level: 3)

target

Filters by rendering scope (body scope when attached, original scope for marks without bodies). Combines with thread if both are supplied.

thread

Filters the outline to only show notes belonging to a specific thread of minipages.

include-types

One note type or an array of types to include. Auto includes all; an empty array includes none. Unknown names select no matching records.

exclude-types

One note type or an array of types to exclude. An empty array excludes none.

series

Filters the outline to notes belonging to a specific series or array of series.

include-unpaired

Also include unpaired marks or bodies. False includes paired notes only; true includes both unpaired kinds; mark or body adds that kind.

after

Only includes notes after this location, label, pin name, or structured name/scope/select/page pin target. A pin boundary needs one occurrence. Native selectors use their first match, as native labels do.

before

Only includes notes before this location, label, pin name, or structured name/scope/select/page pin target. Forward pin declarations work. Native selectors use their first match, as native labels do.

group-by

Categorizes the notes under sub-headings. Accepts "type", "series", or a custom function(note) => string.

//| margin: (right: 0.6in, rest: 0.05in)
#deixis-footnote(stroke: red)[This is a footnote!]
#deixis-margin-note(stroke: green)[This is a margin note!]
#deixis-inset-note(dx: 10pt, dy: 0pt, stroke: blue)[This is an inset note!]

#deixis-note-outline(target: 0, group-by: "type")

fill

Fills the space between the excerpt and the page number. Commonly set to repeat[.] for standard TOC styling.

#deixis-inset-note(dx: 10pt, dy: 0pt, stroke: red)[This is a note!]

#deixis-inset-note(dx: 10pt, dy: 0pt, stroke: green)[This is another note!]

#deixis-inset-note(dx: 10pt, dy: 0pt, stroke: blue)[This is yet another note!]

#deixis-note-outline(target: 0, fill: repeat[.])

gap

The vertical spacing between individual note rows in the outline.

summary

A callback (note) => content for each excerpt. The default extracts static text without running the body; contextual-only notes get a placeholder. Receives the structured query record plus its presentation badge. Use note.summary for the safe default excerpt; note.body is a location record.

..args

Unknown options are rejected; include-celibates was renamed to include-unpaired.