View changelog with links into the documentation on typst.app/docs
Command Line Interfacetypst watch
on Linux. Depending on the project size, CPU usage would spike for varying amounts of time. This bug appeared with 0.13.0 due to a behavioral change in the inotify file watching backend.<html>
and <body>
element within context<html>
and <body>
elementThanks to everyone who contributed to this release: @7ijme, @Andrew15-5, @Emm54321, @F2011, @MDLC01, @PgBiel, @SharzyL, @aodenis.
Version 0.13.0 (February 19, 2025)Read the announcement blog post
View changelog with links into the documentation on typst.app/docs
Highlightsoutline
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 paragraphspar[..]
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 guaranteesas
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 expressionslr
lr
editortype
s 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 WGSLView changelog with links into the documentation on typst.app/docs
Highlightsplace.scope
and figure.scope
. Two-column documents should now prefer set page(columns: 2)
over show: column.with(2)
(see the page setup guide).par.spacing
property for configuring paragraph spacing. This should now be used instead of show par: set block(spacing: ..)
(Breaking change)stroke
) rather than just spacing
(Breaking change)block.sticky
property which prevents a page break after a blockplace.flush
function which forces all floating figures to be placed before any further contentskew
functionauto
option for page.header
and page.footer
which results in an automatic header/footer based on the numbering (which was previously inaccessible after a change)gap
and justify
parameters to repeat
functionwidth
and height
parameters to the measure
function to define the space in which the content should be measured. Especially useful in combination with layout
.block
, image
, rect
, square
, ellipse
, or circle
can now be specified in fractional unitsscale
function now supports absolute lengths for x
, y
, factor
. This way an element of unknown size can be scaled to a fixed size.block.above
and block.below
can now be retrieved in context expressions.set block(spacing: x)
behaving differently from set block(above: x, below: x)
rotate
and scale
with reflow: true
align(horizon)
and v(1fr)
pagebreak.to
100%
text.costs
parameter for tweaking various parameters that affect the choices of the layout engine during text layouttypm
highlighting mode for math in raw blockssmallcaps
function is now an element function and can thereby be used in show(-set) rules.raw.theme
parameter can now be set to none
to disable highlighting even in the presence of a language tag, and to auto
to reset to the default#""
text.historical-ligatures
not working correctlyshow math.equation: set block(breakable: true)
.stretch
function for manually or automatically stretching characters like arrows or parentheses horizontally or vertically#let a0 = $a_0$; $a0^1$
floor
and ceil
functions in math are now callable symbols, such that $ floor(x) = lr(floor.l x floor.r) $
mat.delim
, vec.delim
, and cases.delim
parameters now allow any character that is considered a delimiter or "fence" (e.g. |) by Unicode. The delim: "||"
notation is not supported anymore and should be replaced by delim: bar.double
(Minor breaking change)vec.align
and mat.align
parametersunderparen
, overparen
, undershell
, and overshell
~
shorthand for tilde.op
in math mode (Minor breaking change)metadata
in mathlr.size
not affecting characters enclosed in mid
in some cases"bounds"
here().position()
when place
was used in a context expressionspacing
property of lists, enumerations, and term lists is now also respected for tight listsquote
element is now locatable (can be used in queries)depth
instead of level
so that its level can still be configured via a show-set rulehanging-indent
parameter to heading function to tweak the appearance of multi-line headings and improved default appearance of multi-line headingsSecurity
Bibliography
Text and Layout
first-line-indent
and outline
path
in explicitly sized containerraw
text in right-to-left paragraphsraw
text with language typ
or typc
raw
text enclosed by single backticksraw
blocksraw
text ends with a backtickMath
mid
for various charactersset align(..)
Export
Scripting
str.trim(regex, at: end)
when the whole string is matchedMiscellaneous
if
branch and the else
keywordtypst init
were not properly escapedThanks to everyone who contributed to this release: @Leedehai, @elegaanz, @frozolotl, @A-Walrus, @MDLC01, @Myriad-Dreamin, @3w36zj6, @Enter-tainer, @EpicEricEE, @Jocs, @PgBiel, @QuarticCat, @Tom4sCruz, @bluebear94, @etiennecollin, @gabriel-araujjo, @joserlopes, @rikhuijzer, @wrzian.
Version 0.11.0 (March 15, 2024)View changelog with more links on typst.app
Tables (thanks to @PgBiel)
table.cell
element for per-cell configurationalign
and inset
arguments of the table function now also take (x, y) => ..
functionstable.hline
and table.vline
for convenient line customizationtable.header
element for table headers that repeat on every pagetable.footer
element for table footers that repeat on every pageTemplates
typst init <template>
command in the CLI. You can browse the available templates here.Context
context text.lang
to access the language set via set text(lang: "..")
query
, locate
, measure
, counter.display
, counter.at
, counter.final
, state.at
, and state.final
counter.get
and state.get
to retrieve the value of a counter or state in the current contexthere
to retrieve the location of the current contextlocate
function now returns the location of a selector's unique match. Its old behavior has been replaced by context expressions and only remains temporarily available for compatibility.counter.at
and state.at
methods are now more flexible: They directly accept any kind of locatable selector with a unique match (e.g. a label) instead of just locationscounter.display
now directly returns the result of applying the numbering instead of yielding opaque content. It should not be used anymore without context. (Deprecation planned)state.display
function should not be used anymore, use state.get
instead (Deprecation planned)location
argument of query
, counter.final
, and state.final
should not be used anymore (Deprecation planned)styles
argument of the measure
function should not be used anymore (Deprecation planned)style
function should not be used anymore, use context instead (Deprecation planned)Styling
show heading.where(level: 1): set heading(numbering: "1.")
) now work properlyshow heading: it => { set heading(..); it }
) is not supported anymore (previously it also only worked sometimes); use show-set rules instead (Breaking change)show "cmd": `cmd`
)locate
Layout
reflow
argument to rotate
and scale
which lets them affect the layouthide
function didn't hide its contents properlyh
and v
in stacksText
stroke
property for textModel
depth
and offset
arguments to heading to increase or decrease the heading level for a bunch of content; the heading syntax now sets depth
rather than level
(Breaking change)quote
function now more robustly selects the correct quotes based on language and nestingMath
number-align
argument to equationssize
of accents relative to their basemath.primes
element which backs the $f'$
syntax in mathstrong
and emph
anymoreattach
under fractionsmath.class
did not affect smart limit placementlr
groupsSymbols
gradient
as an alias for nabla
partial
as an alias for diff
, diff
will be deprecated in the futurecolon.double
, gt.approx
, gt.napprox
, lt.approx
, and lt.napprox
arrow.r.tilde
and arrow.l.tilde
tilde.dot
forces
and forces.not
space.nobreak.narrow
lrm
(Left-to-Right Mark) and rlm
(Right-to-Left Mark)star.stroked
symbol (which previously had the wrong codepoint)Scripting
to-absolute
to lengthscalc.root
int.signum
and float.signum
methodsfloat.is-nan
and float.is-infinite
methodsint.bit-not
, int.bit-and
, int.bit-or
, int.bit-xor
, int.bit-lshift
, and int.bit-rshift
methodsarray.chunks
methodrow-type
argument to csv
function to configure how rows will be representedstr
and repr
.fields()
dictionariesrepr
output of strokesSyntax
context
is now a keyword and cannot be used as an identifier anymore (Breaking change)x.)
would be treated as a field accessTooling & Diagnostics
raw
textBibliography management
[1]-[3]
instead of [1], [2], [3]
) if requested by a CSL style.bib
files can now be arbitrary strings.bib
files are now parsed correctly.bib
files now allow more characters.bib
files.bib
files.bib
filesVisualization
alpha
parameter of the components
function on colors is now a named parameter (Breaking change)Text and Layout
*
and _
syntax even when there are no spaceslocate
callsMath
mid
function for scaling a delimiter up to the height of the surrounding lr
groupop
function can now take any content, not just stringspi(a,b,)
)Scripting
((key): value)
will create a dictionary with a dynamic keystroke
type now has a constructor that converts a value to a stroke or creates one from its partsarguments
typecalc.div-euclid
and calc.rem-euclid
functionsarguments
repr
of cmyk
colorsTooling and Diagnostics
Export
date
is set manuallyCommand line interface
typst watch
would confuse files and fail to pick up updatestypst update
now respects proxies--open
flag on Windows when the path contains a spaceTYPST_FONT_PATHS
environment variable can now contain multiple paths (separated by ;
on Windows and :
elsewhere)Miscellaneous Improvements
number-align
parameter on numbered lists now also accepts vertical alignments#return
expression in markupraw
blocksDevelopment
typst
and typst-library
and extracted typst-pdf
, typst-svg
, and typst-render
into separate cratestypst --version
Thanks to everyone who contributed to this release: @Dherse, @frozolotl, @Leedehai, @Andrew15-5, @MDLC01, @danieleades, @tingerrr, @Jollywatt, @cmoog, @peng1999, @Enter-tainer, @JakobSachs, @KronosTheLate, @MyrtleTurtle22, @T0mstone, @TheJosefOlsson, @antonWetzel, @denkspuren, @kokkonisd, @lihe07, @mattfbacon, @rezzubs, @samueltardieu, @xalbd.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4