Skip to content

Improve template styling via overridable Typst functions #92

Merged
istathar merged 11 commits intotechnique-lang:mainfrom
istathar:template-styling
Mar 14, 2026
Merged

Improve template styling via overridable Typst functions #92
istathar merged 11 commits intotechnique-lang:mainfrom
istathar:template-styling

Conversation

@istathar
Copy link
Copy Markdown
Member

@istathar istathar commented Mar 13, 2026

Redesign the rendering pipeline so that Rust walks the domain model and emits calls to thin, individually overridable Typst functions. This replaces the previous code which produced a single large Typst literal and then required the user's template code to process that data structure into markup.

This involved making a change to where the tree-walk of that structure happened. While we were able to do so in Typst (#91) the result was that iterating on the default template was difficult and providing for user overrides of style elements necessitated the user to clone the default template containing machinery that really should have been internal.

Instead we further strengthen the idea of domain to include both the domain model created by the Adapter and the Renderer able to walk such a domain model on the Rust side. Rather than emitting a data dictionary literal, or finished Typst markup, we instead emit a stream of function calls: #render-description("Hello")#render-structure(":") and so on, with the function names matching the entities the domain's object model.

The functions are initially defined in a built-in template that is copied to .domain.typ in the directory containing the document to be rendered. If a custom user-defined template is provided via --template then an #include * directive for it is added to the top of the generated document, allowing that template to selectively override any of the individual render functions without having to reimplement the entire rendering pipeline.

@istathar istathar self-assigned this Mar 13, 2026
@istathar istathar merged commit 4b2a733 into technique-lang:main Mar 14, 2026
1 check passed
@istathar istathar deleted the template-styling branch March 14, 2026 08:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant