Skip to content

Undeclared mark

A set names a running-header mark that was never declared. set requires a mark and has no default, so the build stops.

What it looks like

The current author is [John Keats]{.set mark="ghost"}.
ERROR: shortcut 'set' rejects mark 'ghost'
  │ [John Keats]{.set mark="ghost"}
  It takes a declared mark.
  The attribute is required, and nothing stands in for the value.
  Add it to marks: in pandoc.yaml.
  See https://keystone.knight-owl.dev/errors/undeclared-mark/

What it means

Running-header marks are declared up front under marks: in your metadata; set then writes a value into one of them for the running header to read back. A set pointing at an undeclared mark has no channel to write to, so Keystone stops rather than emit output that references a mark the document never created. The check is the same in every format, so building EPUB first won't let it through.

A shortcut of your own over set that supplies a mark of its own — a default, or one its template writes — falls back to that mark with a warning instead, as any invalid value does.

Declare the mark before you reference it

Add it under marks: in pandoc.yaml. See Running headers & footers for how a mark feeds a running header.

marks:
  - ghost