[idea:hyperlink-reference]reference2026-08-20

#hyperlink

A plain link to an idea, and the renderer behind every @idea:etal in your prose. For how a hyperlink reads alongside a window, see hyperlinks.

#import "@rookery/core:0.1.0": hyperlink
#hyperlink("etal")[see this]
#hyperlink(<etal>, hyperlink-target-minted: false)[see this, in context]
ArgumentTypeDescription
namestr | labelThe idea to link to, written bare ("etal") or in full, as a string or a label. Positional, and required in a direct call.
bodycontentThe link text. Positional, and required: an explicit call has no title to fall back on, where @idea:etal does.
hyperlink-target-mintedboolWhere the link lands: true, the default, on the idea’s own minted page, false on the anchor where it was hatched.

The same function is @idea:etal’s renderer, installed as a show ref: rule. An idea’s label lives on a hidden anchor, so without the rule a bare reference resolves to that anchor and renders as a figure number — #show: rookery installs it for you, and refs: false declines it.

#show ref: hyperlink                                         // the minted page
#show ref: hyperlink.with(hyperlink-target-minted: false)    // the anchor

In reference mode the link names its target: the idea’s title, or the name derived from its first line where it has none, or its bare name as a last resort — the same name an index row and a search hit call it by, so the three cannot disagree. @idea:etal[custom text] overrides that.

Existence is checked at the call site, so a typo fails the build rather than shipping a dangling link. An idea excluded from the build is a different matter: the body stays and only the link goes, since a hyperlink sits inside a sentence you wrote and deleting it would break the grammar around it.