docs/changelog/0.14.0.md
html.div]) with individually typed attributestitle] element for displaying the document titlefrac.style property for producing skewed and inline fractionsPDF export was fully rewritten to use the new krilla library, fixing various bugs and enabling many improvements. Known fixes are listed below, but there will likely be other changes in how the output behaves. If you spot any regressions, please report them on GitHub. (Thanks to @LaurenzV for creating krilla!) [#5420]
pdf.artifact] function for marking content as not semantically meaningful [#6619]pdf.header-cell], [pdf.data-cell], and [pdf.table-summary] functions for enhancing accessibility of documents with complex tables. These functions are guarded by the a11y-extras feature. They do not have a final interface and will be removed in the future, either through integration into table functions or through full removal. [#6619]pdf.embed to [pdf.attach] (the old name will remain as a deprecated alias until Typst 0.15) [#6705]mime property of pdf.attach is now checked for syntactical correctness (Minor breaking change)data argument of pdf.attach [#6435]image] element [#6578]footnote] and [footnote.entry] element [#6917]outline] and [outline.entry] element [#6606]bibliography] element [#6952]smartquote] element [#6710]sub] and [super] elements [#6422]underline], [overline], [strike], and [highlight] elements [#6510]smallcaps] element [#6600]lower] and [upper] functions [#6585]html.div]) with individually typed attributes [#6476]
video element you can now write [#html.video(width: 400, src: "sunrise.mp4")] instead of [#html.elem("video", attrs: (width: "400", src: "sunrise.mp4"))]. Note how the width attribute takes an integer instead of a string.link] targets [#6602]raw] element
raw elements now emit both a <code> and a <pre> tag [#6701]raw elements is now preserved as a data-lang attribute on the <code> tag [#6702]authors and keywords properties of the document function now yield corresponding HTML <meta> tags [#6134]html.elem] function now supports custom HTML element names [#6676]html.frame] [#6605]<div hidden></div>) [#6479]{h(0pt, weak: true)}) does not cause a "was ignored during HTML export" warning anymore, so it can be used to destruct surrounding spaces without producing any output, as in paged export [#6917]<pre> and <textarea> elements that start with a newline [#6487] [#6497]html.frame] [#6505]measure] in HTML export [#7186]html.frames [#6509]box] without a body was ignored in HTML export [#6709]<g> grouping elements that are generated [#6247]hayro library. PDFs will be embedded directly in PDF export, rasterized in PNG export, and turned into SVGs in SVG and HTML export. (Thanks to @LaurenzV for creating hayro!) [#6623]curve.line] [#6647]par.justification-limits] property. This is an impactful microtypographical technique that can significantly improve the appearance of justified text. [#6161]frac.style property with new options for skewed and inline fractions [#6672]math.equation.alt] property for setting an alternative description for an equation [#6619]√ produced by sqrt) can now be targeted by text show rules [#6365]scr function for roundhand script font style [#6309]dotless parameter to accent (typically for rendering a dotless accented i or j) [#5939]text.stroke] in math [#6243]augment line can now exist at the start and end of a matrix, not only in between columns and rows [#5806][$x>=(y)/z$] [#5925] [#5996] (Minor breaking change)mid element does not force the {"large"} math class upon its contents anymore and instead defaults to {"relation"} [#5980].. isn't followed by anything [#7105]Thanks to @mkorje for his work on math!
title] element for displaying the document title [#5618]figure.alt] property for setting an alternative description for a figure [#6619]link] function will now produce an error when passed an empty string as a URL [#7049] (Minor breaking change)number argument of enum.item now takes {auto} instead of {none} for automatic numbering [#6609] (Minor breaking change){quotes: false} was ignored for inline-level quotes [#5991]footnote.entry] show rules breaking links from footnote to entry [#6912]Built-in styles
{"chicago-fullnotes"} to {"chicago-notes"} (the old name remains as a deprecated alias) [#6920]{"modern-humanities-research-association"} to {"modern-humanities-research-association-notes"} (the old name remains as a deprecated alias) [#6994]Hayagriva format
chapter field corresponding to CSL chapter-number and BibLaTeX chapter [typst/hayagriva#383]BibLaTeX format
% comment syntax [typst/biblatex#80]language field [typst/hayagriva#317]genre and serial-number [typst/hayagriva#296] [typst/hayagriva#369]CSL handling
strong], [emph], and [smallcaps] to express CSL font styling instead of directly adjusting the [text] style, making styling easier [#6984]ibid and ibid-with-locator positions [#6171]ibid and ibid-with-locator positions in styles [typst/hayagriva#301]location conditional in CSL styles for citations with no locator [typst/hayagriva#399]<number> elements [typst/hayagriva#289]sub] and [super] functions now use the subs and sups OpenType font features instead of special Unicode characters for typographic scripts, fixing semantical, sizing, and positioning issues [#5777]raw] element
raw] text to make the colors more accessible [#6754]raw syntax highlighting theme [#6873]raw syntax contains an unescaped trailing backslash [#6883]raw] text with CRLF line terminators [#6961]text.font] [#6049] (Minor breaking change){in} operator can now be used to check whether a definition is present in a module [#6498]default parameter to [array.first], [array.last] [#5970], [array.join] [#6932], [str.first], and [str.last] [#6554] methodsby parameter to [array.sorted] for sorting with a comparison function [#5627]str.normalize] function for Unicode normalization [#5631]from, to, and sign methods to direction type [#5893]plugin] system was updated and now supports SIMD [#6997]toml] function is now guaranteed to return a [dictionary] and [toml.encode] must receive a dictionary (it already errored before when passed something else, but the new function signature makes the error clearer) [#6743]bytes] in human-readable formats now uses [repr] [#6743]count parameter [#6838]{context} expression is an anonymous function [#6975]raw.line] elements [#6560]repr] of labels being potentially syntactically invalid [#6456]repr] of functions modified through with [#6773]query], [locate], etc. without having a label): par, table, enum, list, terms, title, figure.caption, footnote.entry, outline.entry, image, emph, strong, link, cite, raw, underline, overline, strike, and highlight [#6619]grid] [#6232]grid] cells that span multiple pages [#7198]typst info subcommand for emitting build and environment information [#6761]typst completions subcommand for retrieving shell completions [#6568]TYPST_IGNORE_SYSTEM_FONTS environment variable [#6092]--ignore-embedded-fonts flag and TYPST_IGNORE_EMBEDDED_FONTS environment variable for disabling the use of fonts embedded into the Typst binary [#7037]--no-pdf-tags flag for disabling the automatic generation of accessibility tags. These are emitted when no particular standard like PDF/UA-1 is selected to provide a baseline of accessibility. [#6619]--target parameter to typst query [#6405]--deps and --deps-format parameters for emitting a list of files compilation depends on. Supports the three formats json, zero, and make. [#7022]--make-deps flag in favor of --deps with --deps-format make [#7022]page.fill) [#6810]eval] are now correctly emitted [#6100]calc.round) [#6234]× instead of x to indicate a repeated value [#6163]sym or emoji. That said, they still don't render consistently in Typst due to how font fallback works. [typst/codex#114]symbol] function can now be used to create symbols that comprise not just one character, but one full grapheme cluster [#6489]pdf.embed in favor of the new name [pdf.attach] [#6705]{"chicago-fullnotes"} bibliography style in favor of {"chicago-notes"} [#6920]{"modern-humanities-research-association"} bibliography style in favor of {"modern-humanities-research-association-notes"} [#6994]--make-deps CLI flag in favor of --deps with --deps-format make [#7022]{int == "integer"}), which was temporarily introduced in Typst 0.8 and deprecated in Typst 0.13 (Breaking change)Default impl for Library had to be removed for crate splitting and trait coherence reasons, but you can get a drop-in replacement via use typst::LibraryExt [#6576]PdfOptions struct has a new tagged field, which defaults to {true} [#6619] [#7046]World::font implementations. Downstream World implementations might need to apply the same fix. [#6117]typst [#7058]