Version 0.7.0 (August 7, 2023)
Text and Layout
- Added support for floating figures through the
placement
argument on the figure function - Added support for arbitrary floating content through the
float
argument on the place function - Added support for loading
.sublime-syntax
files as highlighting syntaxes for raw blocks - Added support for loading
.tmTheme
files as highlighting themes for raw blocks - Added bounds option to
top-edge
andbottom-edge
arguments of text function for tight bounding boxes - Removed nonsensical top- and bottom-edge options, e.g. ascender for the bottom edge (Breaking change)
- Added
script
argument to text function - Added
alternative
argument to smart quote function - Added basic i18n for Japanese
- Added hyphenation support for
nb
andnn
language codes in addition tono
- Fixed positioning of placed elements in containers
- Fixed overflowing containers due to optimized line breaks
Export
- Greatly improved export of SVG images to PDF. Many thanks to @LaurenzV for their work on this.
- Added support for the alpha channel of RGBA colors in PDF export
- Fixed a bug with PPI (pixels per inch) for PNG export
Math
- Improved layout of primes (e.g. in
$a'_1$
) - Improved display of multi-primes (e.g. in
$a''$
) - Improved layout of roots
- Changed relations to show attachments as limits by default
(e.g. in
$a ->^x b$
) - Large operators and delimiters are now always vertically centered
- Boxes in equations now sit on the baseline instead of being vertically centered by default. Notably, this does not affect blocks because they are not inline elements.
- Added support for weak spacing
- Added support for OpenType character variants
- Added support for customizing the math class of content
- Fixed spacing around
.
,\/
, and...
- Fixed spacing between closing delimiters and large operators
- Fixed a bug with math font weight selection
- Symbols and Operators (Breaking changes)
- Added
id
,im
, andtr
text operators - Renamed
ident
toequiv
with aliaseq.triple
and removedident.strict
in favor ofeq.quad
- Renamed
ast.sq
toast.square
andintegral.sq
tointegral.square
- Renamed
.eqq
modifier to.equiv
(and.neqq
to.nequiv
) fortilde
,gt
,lt
,prec
, andsucc
- Added
emptyset
as alias fornothing
- Added
lt.curly
andgt.curly
as aliases forprec
andsucc
- Added
aleph
,beth
, andgimmel
as alias foralef
,bet
, andgimel
- Added
Scripting
- Fields
- Added
abs
andem
field to lengths - Added
ratio
andlength
field to relative lengths - Added
x
andy
field to 2d alignments - Added
paint
,thickness
,cap
,join
,dash
, andmiter-limit
field to strokes
- Added
- Accessor and utility methods
- Added
dedup
method to arrays - Added
pt
,mm
,cm
, andinches
method to lengths - Added
deg
andrad
method to angles - Added
kind
,hex
,rgba
,cmyk
, andluma
method to colors - Added
axis
,start
,end
, andinv
method to directions - Added
axis
andinv
method to alignments - Added
inv
method to 2d alignments - Added
start
argument toenumerate
method on arrays
- Added
- Added
color.mix
function - Added
mode
andscope
arguments toeval
function - Added
bytes
type for holding large byte buffers- Added
encoding
argument to read function to read a file as bytes instead of a string - Added
image.decode
function for decoding an image directly from a string or bytes - Added
bytes
function for converting a string or an array of integers to bytes - Added
array
function for converting bytes to an array of integers - Added support for converting bytes to a string with the
str
function
- Added
Tooling and Diagnostics
- Added support for compiler warnings
- Added warning when compilation does not converge within five attempts due to intense use of introspection features
- Added warnings for empty emphasis (
__
and**
) - Improved error message for invalid field assignments
- Improved error message after single
#
- Improved error message when a keyword is used where an identifier is expected
- Fixed parameter autocompletion for functions that are in modules
- Import autocompletion now only shows the latest package version until a colon is typed
- Fixed autocompletion for dictionary key containing a space
- Fixed autocompletion for
for
loops
Command line interface
- Added
typst query
subcommand to execute a query on the command line - The
--root
and--font-paths
arguments cannot appear in front of the command anymore (Breaking change) - Local and cached packages are now stored in directories of the form
{namespace}/{name}/{version}
instead of{namespace}/{name}-{version}
(Breaking change) - Now prioritizes explicitly given fonts (via
--font-paths
) over system and embedded fonts when both exist - Fixed
typst watch
not working with some text editors - Fixed displayed compilation time (now includes export)
Miscellaneous Improvements
- Added
bookmarked
argument to heading to control whether a heading becomes part of the PDF outline - Added
caption-pos
argument to control the position of a figure's caption - Added
metadata
function for exposing an arbitrary value to the introspection system - Fixed that a
state
was identified by the pair(key, init)
instead of just itskey
- Improved indent logic of enumerations. Instead of requiring at least
as much indent as the end of the marker, they now require only one more space
indent than the start of the marker. As a result, even long markers like
12.
work with just 2 spaces of indent. - Fixed bug with indent logic of
raw
blocks - Fixed a parsing bug with dictionaries
Development
- Extracted parser and syntax tree into
typst-syntax
crate - The
World::today
implementation of Typst dependents may need fixing if they have the same bug that the CLI world had