0.15.0 - Typst Documentation
Changelog
0.15.0<br>Typst 0.15.0 (June 15, 2026)<br>This section documents all changes to the Typst language and compiler between Typst 0.14.2 and 0.15.0. If you are migrating an existing document to Typst 0.15, make sure to check out the Migration guide. It walks you through changes you may need to make to your existing documents to ensure compatibility with Typst 0.15.<br>Highlights<br>Typst now supports variable fonts<br>HTML export now supports equations out of the box via MathML<br>With the new, experimental bundle export target, a single Typst project can output multiple files (e.g. a multi-page website)<br>A single document can now contain multiple bibliographies<br>Typst can now target multiple PDF standards at once<br>The new within selector simplifies many introspection use cases<br>The new divider element represents a thematic break that templates can style<br>Spot colors enable use of custom pigments in offset printing<br>With the new file path type, project-relative paths can be passed to packages<br>The new, more general typst eval CLI subcommand supersedes typst query<br>Layout convergence issues now result in detailed diagnostics<br>Two long-standing list layout issues with marker alignment and centering were fixed<br>Paragraph handling in HTML export is improved, preventing unexpected paragraphs from appearing<br>This documentation now has a print version<br>Language<br>Syntax<br>File paths (e.g. in imports or image function calls) may not contain backslashes anymore; instead forward slashes must be used (Breaking change)<br>Added hints for invalid characters in code mode<br>Added hint when trying to use a unary operator directly in an embedded expression using a hash (e.g. #-30deg)<br>Fixed potential stack overflow crashes by enforcing a maximum parsing depth<br>Fixed incremental parsing of unclosed strings<br>Styling<br>Text show rules now have tracebacks that include the matched text<br>Fixed a crash with text show rules that match on multi-character symbols<br>Scripting<br>Extended hint when built-in definitions are shadowed to set and show rules<br>Added hint when trying to spread one or multiple dictionaries into an array<br>Improved diagnostics for invalid method calls<br>Improved hint for unknown variables in math that are available in std<br>Fixed a misleading error message when trying to assign to a temporary return value<br>Library<br>Foundations<br>Added file path type that is now accepted in all places where paths were previously only represented as strings<br>A path constructed in one file can be used in another file, but will be resolved relative to its original file<br>Likewise, paths can be passed across package boundaries<br>The initial path type is very minimal, but additional features like file existence checks or directory walking are planned
Collections<br>Added map and filter functions on dictionaries and arguments<br>Named arguments on arguments values are now accessible with field access syntax<br>The slice functions on strings and arrays will now error if passing both an end and a count (Minor breaking change)<br>Added inclusive parameter to range function
Calculation<br>Added asinh, acosh, atanh, and erf functions to calc module<br>Added int.min and int.max constants for the minimum and maximum representable integer, respectively<br>Fixed behavior of quo for negative integers<br>Fixed potential overflows in norm, abs, gcd, and lcm<br>Floating-point calculations are now consistently deterministic across platforms
Date & time handling<br>The offset parameter of datetime.today now accepts durations as an alternative to integers, allowing for sub-hour precision offsets<br>Addition and subtraction of datetimes and durations now retains precision instead of clamping to full days in some cases<br>The datetime constructor now emits more precise errors when components are missing
Conversions<br>Added base parameter to int constructor to configure in which base to parse a string<br>Fixed that the base parameter of the str constructor was accepted for non-integer values if its value was 10 (Minor breaking change)<br>Added hint when trying to construct a string with base 1
The panic function now displays strings as-is instead of showing their repr, making it more suitable for friendly, user-facing messages<br>Changed repr of styles and locations to be more distinct<br>Model<br>Added divider element representing a thematic break that templates can style<br>Bundle-related elements<br>The document element can now be constructed to produce individual documents in bundle export<br>Added path and format parameters to document element<br>Added experimental asset element
Bibliography management<br>A single document can now contain multiple bibliographies<br>Added target parameter to bibliography element to configure which citation is picked up by which bibliography<br>Added group parameter to bibliography element to configure how numbers are shared/reset across bibliographies<br>Added support for numeric values for the month key in .bib files<br>Added support for BibLaTeX name options in .bib files<br>Added support for propagating non-numeric...