docs/changelog/0.13.0.md
outline] has a better out-of-the-box look and is more customizablecurve] function (that supersedes the path function) provides a
simpler and more flexible interface for creating Bézier curvesimage function now supports raw pixel raster formats
for generating images from within Typst[$"a"$])
would be displayed in italicspdf.embed function lets you embed arbitrary files in the
exported PDFfirst-line-indent.par now only affect proper paragraphsfirst-line-indent and hanging-indent properties also only affect
proper paragraphs{par[..]} with body content that is not fully inline-level will
result in a warningoutline.indent]outline] function was fully reworked to improve its out-of-the-box
behavior (Breaking change)
{auto} indentation mode now aligns numberings and titles outline-wide
for a grid-like lookfill parameter was moved from outline to
outline.entry and can thus be configured through show-set rulesbody and page fields from outline entryindented, prefix, inner, body, and page methods on outline
entries to simplify writing of show rulespar.first-line-indent] for indenting all paragraphs
instead of just consecutive onesform parameter to ref function. Setting the form to
{"page"} will produce a page reference instead of a textual one.document.description] field, which results in corresponding PDF and
HTML metadataenum.reversed] parameterlink] function wraps around a container like a [block], it will
now generate only one link for the whole block instead of individual links for
all the visible leaf elements. This significantly reduces PDF file sizes when
combining link and [repeat].link] function will now only strip one prefix (like mailto: or
tel:) instead of multiplecurve] function that supersedes the path function and provides
a simpler and more flexible interface. The path function is now deprecated.image function now supports raw pixel raster formats.
This can be used to generate images from within Typst without the need for
encoding in an image exchange format.image.scaling] parameter for configuring how an image is scaled by
PNG export and PDF viewers (smooth or pixelated)image.icc] parameter for providing or overriding the ICC profile of
an imagepattern to [tiling]. The name pattern remains as a deprecated
alias.gradient.center], [gradient.radius], [gradient.focal-center], and
[gradient.focal-radius] methodsbox] and [block]path of infinite lengthgradient.repeat]image], [cbor], [csv], [json], [toml], [xml], and [yaml] now
support a path string or bytes and their .decode variants are deprecatedplugin], [bibliography], [bibliography.style], [cite.style],
[raw.theme], and [raw.syntaxes] now accept bytes in addition to path
strings. These did not have .decode variants, so this adds new
flexibility.path argument/field of [image] and [bibliography] was renamed to
source and sources, respectively (Minor breaking change)plugin type is replaced by a plugin function that returns
a [module] containing normal Typst functions. This module can be used with
import syntax. (Breaking change)plugin.transition] API is introduced which allows plugins to run
impure initialization in a way that doesn't break Typst's purity guarantees{as} renaming (e.g.
{import "ot" + "her.typ"}) are a hard error (Breaking change)arguments] type can now be added with + and
joined in curly-braced code blocksoutline.entry]
as no other element function defines methods.calc.norm] functionfloat.from-bytes] and [float.to-bytes]decimal] constructor now also accepts decimal valuesrepr of symbols, [arguments], and types[$"a"$]) would be displayed
in italicsflac (Flattened Accent
Forms) and dtls (Dotless Forms) OpenType featureslcm text operatorbold function now works with ϝ and Ϝitalic function now works with ħlr and [context] expressionslrlreditortypes like producer,
writer, scriptwriter, and none (defined by widespread style
biblatex-chicago to mean performers within music and video entries) are
now recognizedeprinttype = {pubmed}, the PubMed ID will now be
correctly processedall parameter to smallcaps function that also
enables small capitals on uppercase lettersraw] syntax highlighting for a few new languages: CFML,
NSIS, and WGSLsquare] and [circle])block.sticky] not working properly at the top of a containeralign] not becoming their own paragraph0b100000pt is
not allowed anymore. Previously, it was syntactically allowed but always
resolved to a value of zero. (Minor breaking change)is as an identifier will now warn as it might become a keyword in the
future#! at the very start of a file is now ignoredpdf.embed function for embedding arbitrary files in the
exported PDFNote: HTML export is currently under active development. The feature is still very incomplete, but already available for experimentation behind a feature flag.
html.elem] function for outputting an arbitrary HTML elementhtml.frame] function for integrating content that requires layout
into HTML (by embedding an SVG)target] function which returns either {"paged"} or {"html"}
depending on the export target{rect(fill: |)} will now
only show variables which contain a valid fill (either directly or nested,
e.g. a dictionary containing a valid fill)cite function--features argument and TYPST_FEATURES environment variable for
opting into experimental features. The only feature so far is html.typst watch when targeting HTMLtypst fonts output to another command--make-deps output--make-deps output--make-deps outputinter, inter.and, inter.big, inter.dot, inter.double, inter.sq,
inter.sq.big, inter.sq.double, integral.interasymp, asymp.notmapsto, mapsto.longdivides.not.rev, divides.struckinterleave, interleave.big, interleave.struckeq.triple.not, eq.dots, eq.dots.down, eq.dots.upsmt, smt.eq, lat, lat.eqcolon.tri, colon.tri.opdagger.triple, dagger.l, dagger.r, dagger.invhourglass.stroked, hourglass.filleddie.six, die.five, die.four, die.three, die.two, die.oneerrorbar.square.stroked, errorbar.square.filled,
errorbar.diamond.stroked, errorbar.diamond.filled,
errorbar.circle.stroked, errorbar.circle.fillednumeroohm.inv to Omega.invangle.l.double from 《 to ⟪angle.r.double from 》 to ⟫angstrom from U+212B (Å) to U+00C5 (Å)sect and all its variants in favor of interintegral.sect in favor of integral.interdegree.c in favor of °C ([$upright(°C)$] or [$upright(degree C)$] in math)degree.f in favor of °F ([$upright(°F)$] or [$upright(degree F)$] in math)kelvin in favor of just K ([$upright(K)$] in math)ohm in favor of Omegapath function in favor of the [curve] functionpattern for tiling patterns in favor of the new name [tiling]image.decode], [cbor.decode], [csv.decode], [json.decode],
[toml.decode], [xml.decode], [yaml.decode] in favor of the top-level
functions directly accepting both paths and bytessect and its variants in favor of inter, and integral.sect in favor
of integral.inter{int == "integer"})
which was temporarily introduced in Typst 0.8 now emits warnings. It will be
removed in Typst 0.14.style function and styles argument of [measure], use a [context]
expression instead (Breaking change)state.display function, use [state.get] instead
(Breaking change)location argument of [state.at], [counter.at], and [query]
(Breaking change)counter.display] worked without
[context] (Breaking change)locate] (Breaking change)typst::compile function is now generic and can return either a
PagedDocument or an HtmlDocumenttypst-timing now supports WebAssembly targets via web-sys when the wasm
feature is enabled