ADR-01: Typst as the document formatΒΆ

ContextΒΆ

TINO needed a document format that could produce professional, print-ready output while being suitable for automation and accessible to non-technical contributors. The candidates were:

  • Markdown

  • reStructuredText

  • LaTeX

  • Typst

DecisionΒΆ

TINO is built around Typst exclusively, using the official Rust-based compiler β€” not any third-party TypeScript reimplementation. The Typst CLI is invoked as a subprocess for compilation to PDF and SVG (preview).

ConsequencesΒΆ

PositiveΒΆ

  • Typographic control
    Typst produces publication-quality output β€” page layout, headers and footers, tables, math, citations β€” without the complexity of LaTeX.
  • Approachable syntax
    The learning curve is shallow enough for the whole team, not just developers.
  • Fast compilation
    Typst’s incremental compiler is significantly faster than LaTeX, making live preview practical.
  • Package ecosystem
    Typst Universe provides reusable templates.
    TINO also supports local packages for templates, corporate design, and much more.
  • AI-friendly target
    Typst’s clean, structured syntax makes it a practical output format for language-model-driven document generation (see πŸ€·πŸ»β€β™‚οΈ Rationale).

NegativeΒΆ

  • CLI coupling
    TINO is tightly coupled to the Typst CLI binary β€” a breaking change in its interface requires a TINO update.
  • No migration path
    Teams already invested in LaTeX or Markdown cannot reuse existing documents without conversion.
  • Younger ecosystem
    Typst is younger than LaTeX. Some specialised packages available in TeX do not yet have equivalents.