Citum

Harnessing YAML's expressive power for defining citation styles. A robust, Rust-powered evolution designed for modern publishing workflows.

$ cargo install --git https://github.com/citum/citum-core --bin citum

Requires Rust toolchain

citation_config.citum.yaml
info:
  title: "APA 7th Edition (Citum)"
  id: "https://www.zotero.org/styles/apa-7th-citum"
  link: "https://apastyle.apa.org/"
options:
  processing: author-date
  contributors:
    initialize-with: ". "
    and: !mode-dependent
      integral: text
      non-integral: symbol

Reimagined for the Web

Significant evolution over CSL 1.0, targeting modern scholarly needs.

description

Document Processing

Process full documents with native draft Djot syntax support. Scan markers and replace them with formatted citations and bibliographies.

auto_awesome

Advanced Citations

Sophisticated support for narrative citations, mid-citation "infix" text, and context-aware conjunctions (and vs &).

library_books

Bibliography Grouping

Configurable bibliography sections with per-group sorting. Essential for legal hierarchies, multilingual bibliographies, and primary/secondary source divisions.

translate

Multilingual Support

First-class support for multilingual citations, RTL languages, and locale-aware title casing and transliterations.

event

Advanced Dates

Handle complex historical ranges, uncertain dates, and non-Gregorian calendars with native EDTF precision.

tune

Smart Presets

Evolution of macros into reusable "presets" for common configuration patterns like APA or Chicago.

title

Title Formatting

Distinct title/subtitle formatting and declarative rules for text transformations and automatic linking.

sync_alt

Type Overrides

Declaratively render components differently for each reference type without procedural conditional logic.

html

Pluggable Output

Generate semantic output in Plain Text, HTML, Djot, or LaTeX. High-fidelity PDF publishing workflows via native LaTeX escaping.

settings_input_component

Universal C-FFI

Seamlessly integrate the Rust core into Python, Node.js, or Lua. A LuaLaTeX proof-of-concept lets you use \cite{key} backed by the Citum engine — no Biber required.

speed

Performance

Rust 2024 edition engine with binary CBOR support for near-instant loading of massive bibliographies. Zero-overhead processing with lazy iterator pipelines.

hub

JSON Server Mode Roadmap

Planned async service mode: a long-running background process that eliminates startup latency for interactive editors (Word, Zotero, web apps). Modelled on Haskell citeproc’s server design, powered by Tokio and axum.

mouse

Web Interactivity

Progressive enhancement for HTML citations. Add bidirectional navigation, hover tooltips, and responsive sidebars to any Citum-generated HTML view.

CLI First Workflow.

Designed for developers and automation. Generate citations directly from your terminal or integrate into your build pipeline.

Render references (HTML)

$ citum render refs -b tests/fixtures/references-expanded.json -s mla -f html

Render for static sites (Djot)

$ citum render refs -b tests/fixtures/references-expanded.json -s mla -f djot

Render for LaTeX (Native Escaping)

$ citum render refs -b tests/fixtures/references-expanded.json -s mla -f latex

Render full document (Djot draft syntax)

$ citum render doc examples/document.djot -b examples/document-refs.json -s mla

Use a builtin style (no file needed)

$ citum render refs -b refs.json -s apa

List all embedded styles

$ citum styles list

Convert to binary (Performance Mode)

$ citum convert styles/apa-7th.yaml --output /tmp/apa-7th.cbor
# Output Preview

Smith, J. A. (2023). The Future of Citations. Academic Press.

Doe, A., & Lee, B. (2024). Rust in Publishing. Journal of Open Source, 12(4), 45-67. https://doi.org/10.1234/jos.2024.12

... generated in 4ms

Current Status

Generated compatibility metrics are the source of truth for progress.

JSON Schemas

Validation tools for developers and style authors. Use these in your IDE for autocomplete and real-time validation.

Schema files on this site are published automatically by CI. The local CLI schema command is feature-gated to keep the default binary smaller.

tips_and_updates Editor Integration

To get real-time validation and autocomplete in editors with YAML language server support (including VS Code, Helix, Zed, and many others), add this comment as the first line of your YAML file:

# yaml-language-server: $schema=https://citum.github.io/citum-core/schemas/style.json

Note: Replace style.json with bib.json, locale.json, or citations.json depending on the file type.

Origins & Vision

Citum is a mission-driven project led by Bruce D'Arcus, who created the initial CSL prototype in 2005. While that vision successfully evolved into the CSL 1.0 standard through a significant community effort, Citum represents a "full-circle" return to the project's roots.

After two decades of observing the ecosystem, Citum was built to address the fundamental complexity of modern scholarly communication. By moving from procedural XML to declarative, type-safe YAML, we aim to make style authoring accessible to a new generation of researchers while providing the performance and precision required for the next 20 years of publishing.