Version 0.9.0 (October 31, 2023)
Bibliography management
- New bibliography engine based on CSL (Citation
Style Language). Ships with about 100 commonly used citation styles and can
load custom
.csl
files. - Added new
form
argument to thecite
function to produce different forms of citations (e.g. for producing a citation suitable for inclusion in prose) - The
cite
function now takes only a single label/key instead of allowing multiple. Adjacent citations are merged and formatted according to the citation style's rules automatically. This works both with the reference syntax and explicit calls to thecite
function. (Breaking change) - The
cite
function now takes a label instead of a string (Breaking change) - Added
full
argument to bibliography function to print the full bibliography even if not all works were cited - Bibliography entries can now contain Typst equations (wrapped in
$..$
just like in markup), this works both for.yml
and.bib
bibliographies - The hayagriva YAML format was improved. See its changelog for more details. (Breaking change)
- A few bugs with
.bib
file parsing were fixed - Removed
brackets
argument ofcite
function in favor ofform
Visualization
- Gradients and colors (thanks to @Dherse)
- Added support for gradients on shapes and text
- Supports linear, radial, and conic gradients
- Added support for defining colors in more color spaces, including Oklab, Linear RGB(A), HSL, and HSV
- Added
saturate
,desaturate
, androtate
functions on colors - Added
color.map
module with predefined color maps that can be used with gradients - Rename
kind
function on colors tospace
- Removed
to-rgba
,to-cmyk
, andto-luma
functions in favor of a newcomponents
function
- Improved rendering of rectangles with corner radius and varying stroke widths
- Added support for properly clipping boxes and blocks with a border radius
- Added
background
parameter tooverline
,underline
, andstrike
functions - Fixed inaccurate color embedding in PDFs
- Fixed ICC profile handling for images embedded in PDFs
Text and Layout
- Added support for automatically adding proper spacing between CJK and Latin text (enabled by default)
- Added support for automatic adjustment of more CJK punctuation
- Added
quote
element for inserting inline and block quotes with optional attributions - Added
raw.line
element for customizing the display of individual lines of raw text, e.g. to add line numbers while keeping proper syntax highlighting - Added support for per-side inset customization to table function
- Added Hungarian and Romanian translations
- Added support for Czech hyphenation
- Added support for setting custom smart quotes
- The default figure separator now reacts to the currently set language and region
- Improved line breaking of links / URLs (especially helpful for bibliographies with many URLs)
- Improved handling of consecutive hyphens in justification algorithm
- Fixed interaction of justification and hanging indent
- Fixed a bug with line breaking of short lines without spaces when justification is enabled
- Fixed font fallback for hyphen generated by hyphenation
- Fixed handling of word joiner and other no-break characters during hyphenation
- Fixed crash when hyphenating after an empty line
- Fixed line breaking of composite emoji like 🏳️🌈
- Fixed missing text in some SVGs
- Fixed font fallback in SVGs
- Fixed behavior of
to
argument onpagebreak
function - Fixed
set align(..)
for equations - Fixed spacing around placed elements
- Fixed coalescing of
above
andbelow
spacing if given in em units and the font sizes differ - Fixed handling of
extent
parameter ofunderline
,overline
, andstrike
functions - Fixed crash for floating placed elements with no specified vertical alignment
- Partially fixed a bug with citations in footnotes
Math
- Added
gap
argument forvec
,mat
, andcases
function - Added
size
argument forabs
,norm
,floor
,ceil
, andround
functions - Added
reverse
parameter to cases function - Added support for multinomial coefficients to
binom
function - Removed
rotation
argument oncancel
function in favor of a new and more flexibleangle
argument (Breaking change) - Added
wide
constant, which inserts twice the spacing ofquad
- Added
csch
andsech
operators ↼
,⇀
,↔
, and⟷
can now be used as accents- Added
integral.dash
,integral.dash.double
, andintegral.slash
symbols - Added support for specifying negative indices for augmentation lines to position the line from the back
- Fixed default color of matrix augmentation lines
- Fixed attachment of primes to inline expressions
- Math content now respects the text baseline setting
Performance
- Fixed a bug related to show rules in templates which would effectively disable incremental compilation in affected documents
- Micro-optimized code in several hot paths, which brings substantial performance gains, in particular in incremental compilations
- Improved incremental parsing, which affects the whole incremental compilation pipeline
- Added support for incremental parsing in the CLI
- Added support for incremental SVG encoding during PDF export, which greatly improves export performance for documents with many SVG
Tooling and Diagnostics
- Improved autocompletion for variables that are in-scope
- Added autocompletion for package imports
- Added autocompletion for labels
- Added tooltip that shows which variables a function captures (when hovering over the equals sign or arrow of the function)
- Diagnostics are now deduplicated
- Improved diagnostics when trying to apply unary
+
or-
to types that only support binary+
and-
- Error messages now state which label or citation key isn't present in the document or its bibliography
- Fixed a bug where function argument parsing errors were shadowed by function
execution errors (e.g. when trying to call
array.sorted
and passing the key function as a positional argument instead of a named one).
Export
- Added support for configuring the document's creation
date
. If thedate
is set toauto
(the default), the PDF's creation date will be set to the current date and time. - Added support for configuring document
keywords
- Generated PDFs now contain PDF document IDs
- The PDF creator tool metadata now includes the Typst version
Web app
- Added version picker to pin a project to an older compiler version (with support for Typst 0.6.0+)
- Fixed desyncs between editor and compiler and improved overall stability
- The app now continues to highlight the document when typing while the document is being compiled
Command line interface
- Added support for discovering fonts through fontconfig
- Now clears the screen instead of resetting the terminal
- Now automatically picks correct file extension for selected output format
- Now only regenerates images for changed pages when using
typst watch
with PNG or SVG export
Miscellaneous Improvements
- Added
version
type andsys.version
constant specifying the current compiler version. Can be used to gracefully support multiple versions. - The U+2212 MINUS SIGN is now used when displaying a numeric value, in the
repr
of any numeric value and to replace a normal hyphen in text mode when before a digit. This improves, in particular, how negative integer values are displayed in math mode. - Added support for specifying a default value instead of failing for
remove
function in array and dictionary - Simplified page setup guide examples
- Switched the documentation from using the word "hashtag" to the word "hash" where appropriate
- Added support for
array.zip
without any further arguments - Fixed crash when a plugin tried to read out of bounds memory
- Fixed crashes when handling infinite lengths
- Fixed introspection (mostly bibliography) bugs due to weak page break close to the end of the document
Development
- Extracted
typst::ide
into separatetypst_ide
crate - Removed a few remaining
'static
bounds on&dyn World
- Removed unnecessary dependency, which reduces the binary size
- Fixed compilation of
typst
by itself (withouttypst-library
) - Fixed warnings with Nix flake when using
lib.getExe