Footnotes

~2 min read

Footnotes

Lettuce supports CommonMark-style footnotes with backlinks.

Inline reference, named definition

Here's a claim that needs sourcing.[^source]

Another claim here.[^source2]

[^source]: Smith, J. (2025). *On Claims*. Journal of Things.
[^source2]: <https://example.com/proof>

Renders both inline and at the bottom of the note, with a tiny ↩ back-link from each definition to its reference.

Inline footnotes (Lettuce extension)

For short footnotes you don’t want to define separately:

This is a fact.^[Source: <https://example.com>, retrieved 2026-05-28.]

The ^[...] syntax expands to an auto-numbered footnote at render time. Useful when you have lots of small citations and don’t want to manage labels.

Multi-paragraph footnotes

Indent continuation lines by 4 spaces (or one tab):

[^longer]: This is a longer footnote.

    It can span multiple paragraphs as long as you indent.

    - Lists work too
    - Like this

Ordering

Footnote definitions can appear anywhere in the file — Lettuce gathers them and renders them in order of first reference at the bottom of the page. You don’t have to keep them at the end of the file.

Cross-note footnotes

Footnotes are local to each note. A [^foo] in note A and [^foo] in note B are independent. To share footnotes, define them in a single “References” note and link to it.

Programmatic access

read_outline returns only the heading outline — a flat array of {level, title, id}; it does not expose footnotes. To audit citations, read_note the file and parse the footnote definitions ([^label]: … lines) out of the returned content yourself.