Quills define document presentation and schema. Use a quill to generate a formatted document from markdown or code.
Maintained by borb-sh.
UNDER DEVELOPMENT: APIs may change.
- User Guide - Tutorials, concepts, and bindings
- Rust API Reference - Rust crate docs
- Changelog - Release notes and version history (GitHub Releases)
cargo add quillmarkuse quillmark::{quill_from_path, OutputFormat, Quillmark, RenderOptions};
// A `Quill` is declarative data: no engine needed to load it.
let quill = quill_from_path("path/to/quill")?;
let engine = Quillmark::new();
let markdown = r#"~~~
$quill: my_quill
$kind: main
title: Example
~~~
# Hello World
"#;
// The bound door: parse and conform against the quill that will render it.
let doc = quill.parse(markdown)?.document;
let result = engine.render(
&quill,
&doc,
&RenderOptions::default().with_output_format(OutputFormat::Pdf),
)?;
let pdf_bytes = &result.artifacts[0].bytes;cargo run --example usaf_memo
cargo run --example taro- crates/core - Core parsing, schema, and backend traits
- crates/content - Document content model
- crates/quillmark - Rust orchestration API
- crates/backends/typst - Typst backend
- crates/quillmark-pdf - Typst-free AcroForm PDF-stamping spine
- crates/backends/pdfform - Typst-free PDF-form backend (built on quillmark-pdf)
- crates/bindings/python - Python bindings
- crates/bindings/wasm - WebAssembly bindings
- crates/bindings/cli - Command-line interface
- crates/fixtures - Test fixtures and sample Quill templates
- crates/fuzz - Property-based fuzzing tests
- prose/canon - Design documentation
See CONTRIBUTING.md.
Licensed under the Apache License, Version 2.0. See LICENSE.