citum-engine 0.53.0

Citum citation and bibliography processor
Documentation

Citum Engine

The core citation and bibliography processing engine for Citum.

Document Input Formats

The engine supports two document input formats for the process_document pipeline. These are independent from the document output format (such as HTML, Plain, LaTeX, Typst, Djot, Markdown) and from reference field inline markup (Djot inline in title, annotation, and note fields via render_djot_inline).

Djot

Full-featured adapter. In addition to citation parsing, the Djot adapter supports:

  • YAML frontmatter (bibliography groups, integral-name overrides)
  • Manual footnotes (note-style placement into authored [^label]: blocks)
  • Inline bibliography blocks (:::bibliography)
  • Djot-to-HTML finalization via jotdown

Citation Syntax

Syntax Description Example (APA)
[@key] Basic parenthetical citation (Smith, 2023)
[@key1; @key2] Multiple citations (Smith, 2023; Jones, 2022)
[prefix ; @key1; @key2] Global prefix (see Smith, 2023; Jones, 2022)
[@key1; @key2 ; suffix] Global suffix (Smith, 2023; Jones, 2022 for more)
[prefix ; @key1; @key2 ; suffix] Both global affixes (see Smith, 2023; Jones, 2022 for more)

Note on Semicolons: Global affixes must be separated from cite keys by a semicolon ;.

Narrative (Integral) Citations

Narrative citations are integrated into the text flow using the + mode modifier. For numeric styles, these render as Author [1].

Syntax Description Example
[+@key] Explicit narrative Smith (2023)

Modifiers

Modifiers appear immediately before the @ symbol.

Modifier Type Description Syntax Result
- Visibility Suppress Author [-@key] (2023)
+ Mode Integral / Narrative [+@key] Smith (2023)
! Visibility Hidden (Nocite) [!@key] bibliography only

Locators (Pinpoints)

Locators follow a comma after the citekey.

Type Syntax Result
Page [@key, 45] or [@key, p. 45] (Smith, 2023, p. 45)
Chapter [@key, ch. 5] (Smith, 2023, ch. 5)
Structured [@key, chapter: 2, page: 10] (Smith, 2023, chap. 2, p. 10)

Bare locator values default to page.

Complex Examples

  • Explicit narrative: [+@smith2023] → Smith (2023)
  • Mixed visibility: [see ; -@smith2023, p. 45; @jones2022] → (see 2023, p. 45; Jones, 2022)
  • Global affixes: [compare ; @kuhn1962; @watson1953 ; for discussion] → (compare Kuhn, 1962; Watson & Crick, 1953 for discussion)

Markdown (Pandoc-style)

Lightweight adapter for Markdown documents that use Pandoc-style citation markers. Supports inline prose citations only. Frontmatter, manual footnotes, and inline bibliography blocks are not supported in this adapter (v1).

HTML output is not post-processed by this adapter — the caller receives the citation-substituted Markdown markup and is responsible for any subsequent CommonMark-to-HTML conversion.

Citation Syntax

Syntax Description
[@key] Parenthetical citation
[@key1; @key2] Multi-cite cluster
[-@key] Suppress-author citation
@key Textual (narrative/integral) citation
@key [p. 45] Textual citation with bracketed locator
[@key, p. 45] Parenthetical citation with locator

The Pandoc citation syntax is syntactically very similar to Djot's — both formats share @key as the citation token and [...] for grouping. The Markdown adapter intentionally supports the common subset; Djot-specific modifiers (+, !) are not part of Pandoc syntax and are not supported here.


Reference Field Inline Markup

Inline markup in bibliographic data fields (title, annotation, note) is a separate concern from document input format. Field markup uses Djot inline syntax via render_djot_inline, regardless of which document input format is in use.

See docs/architecture/DJOT_RICH_TEXT.md for details.