#outlineA contents list over the ideas in your rookery, derived from how you nest them. See outlining ideas for what it lists and what it leaves out.
Typst’s own idiom for an outline over something other than headings is a target: argument, so rookery overloads that call rather than asking you to remember a second name:
#import "@rookery/core:0.1.0": idea, outline
#outline(target: idea, scope: "page", depth: 2) // the ideas on this page
#outline() // Typst's own, over headingstarget: idea takes the arguments below; every other target proxies straight through to Typst’s #outline, unchanged. Passing tagged, match, filter or scope without target: idea is refused by name, rather than forwarded into Typst’s outline to be rejected there with a message about an argument you did not think you were writing.
| Argument | Type | Description |
|---|---|---|
title | content | auto | none | The label above the list. auto prints ‘Contents’, matching Typst’s own #outline; none omits it; any other content replaces it. Rendered as a real heading that neither self-lists in a later outline nor takes the document’s heading numbering. |
depth | int | none | How many levels of nesting to show, counted as Typst counts heading levels: a top-level idea is 1. Levels of containment, not of pages. |
scope | str | How wide to cast: "rookery", the default, lists every idea in the rookery as one tree in spine order; "page" narrows to the ideas written on this page. The whole spine compiles as one document, so the wider reading costs nothing extra. |
tagged | str | array | dictionary | none | The tags to restrict the outline to. |
match | str | Whether a listed idea has to carry "any" of those tags — the default — or "all" of them. |
filter | function | none | A predicate over the idea’s tag dictionary, ANDed with the two above. The same trio #window and #ideas take. |
Filtering happens before depth is applied, and that order is the point: depth: 1 means the top level of what you asked for, not whatever survived from the top level of everything. An idea whose parent was filtered out is promoted to its nearest surviving ancestor’s level rather than left dangling.
Rows are not grouped under per-page headings. An idea’s name is flat and travels between files precisely so a reader never has to know which file holds it; an index that led with filenames would put that back.
The same function is exported as #ideas-outline as well, taking the same six arguments with no target: to write:
#import "@rookery/core:0.1.0": ideas-outline
#ideas-outline(scope: "page", depth: 2)Prefer #outline. Reach for #ideas-outline where you would rather not shadow Typst’s own #outline at all — a project that imports this package with *, or one with show outline: rules of its own to keep clear of. Nothing is lost by the shadow itself, since every non-idea target proxies through untouched; what you are choosing is whether the name in your file is Typst’s or rookery’s.