Skip to main content

document

Macro document 

Source
document!() { /* proc-macro */ }
Expand description

Creates a Document with embedded templates, fonts, and packages.

§Usage

let doc = typst_bake::document!("main.typ");

// Output formats
let pdf = doc.to_pdf()?;
let svgs = doc.to_svg()?;
let pngs = doc.to_png(144.0)?; // 144 DPI

// Page selection (0-indexed)
let cover_pdf = doc.select_pages([0]).to_pdf()?;
let body_pdf = doc.select_pages(1..5).to_pdf()?;

// Page count
let total = doc.page_count()?;
let last_page = doc.select_pages([total - 1]).to_png(72.0)?;

§Configuration

Add to your Cargo.toml:

[package.metadata.typst-bake]
template-dir = "./templates"
fonts-dir = "./fonts"

§What Gets Embedded

  • Templates: All files in template-dir are embedded and accessible from .typ files. Paths resolve relative to the referring .typ file.
  • Fonts: Only supported font formats (TTF, OTF, TTC) are embedded. At least one font is required; without fonts, Typst produces invisible text.
  • Packages: Using packages requires no manual setup. Just use #import "@preview/..." or #import "@local/..." as you normally would in Typst. The macro scans for package imports and recursively resolves all dependencies at compile time. Shares Typst’s own package directories, so locally installed packages are picked up automatically.