Ideas are designed so that you can always hatch new ones without ceremony. The #idea function at its most basic takes the content of an idea.
#import "@rheo/rookery:0.1.0": idea
#idea[Hatch a new idea.]By default, an idea will inherit its date from the document in which it was hatched, and will not show it explicitly. If you want to keep track of when you updated individual ideas, you can explicitly set it when hatching. You can also give it tags to associate it with other ideas.
#idea(
// if not specified, the ID will be auto-generated
<incremental-thought>,
// Link text when referenced
title: [On rookeries],
// defaults to #document.date
updated: datetime(year: 2026, month: 8, day: 16),
// Whether to show when idea is hatched
show-date: true,
// an arbitrary list of strings
tags: ("in-progress", "phd")
)[
// ...
]You can think of an idea as an evergreen note, an atomic unit of thought, or as a generalization of the Orgmode TODO. Ideas are intentially designed as very generic units of content that can cover both these encapsulations, as well as broader containers of writing such as blog posts or journal entries.
Rookery also provides syntactic sugar for ideas with common tags:
#import "@rheo/rookery:0.1.0": todo, note
#todo[A todo.] // #idea(..., tags: ("todo"))
#note[A note.] // #idea(..., tags: ("note"))A footnote belongs to the idea in which you write it in, just as citations do. So that rookery can track them correctly, you need to use the footnote function imported from rookery in ideas, rather than the Typst native function:
#import "@rheo/rookery:0.1.0": idea, footnote
#idea("etal")[
A claim#footnote[The evidence.] worth qualifying.
]Footnote numbering is idea-local. This means that there may be two footnotes labelled 1 on the same page, if two ideas with footnotes are hatched in that context.1
Footnote listings occur at the end of each idea.2 On a standalone page, footnotes appear before the context and backlinks listings.
A footnote written outside an idea’s context proxies the native Typst function so that it behaves normally.
A citation belongs to the idea in which you write it, just as footnotes do. Bibliographies, like footnotes, are produced at the end of an idea.
In contrast to footnotes, however, all citations in a rookery draw from a global bibliography that is configured once like so:
#show: rookery.with(bibliography: arguments(
bytes(read("references.bib")),
style: "chicago-author-date",
))You must use bytes(read(...)) rather than a path to pass a reference file, but rookery bibliographies otherwise work the same as Typst bibliographies.
Once a rookery is configured with a bibliography, you can cite as you naturally would in Typst (Mädje 2022).
Citation numbering is rookery-wide, which means that numeric styles will not be scoped to each idea. (An idea with one citation may show it as [7], for example, if it is the 7th citation in the rookery.) For this reason we recommend using citation styles that don’t employ numbers such as "author-date".