# Changelog

## February 25, 2023

- Font changes
- New default font: Linux Libertine
- New default font for raw blocks: DejaVu Sans Mono
- New default font for math: Book weight of New Computer Modern Math
- Lots of new math fonts available
- Removed Latin Modern fonts in favor of New Computer Modern family
- Removed unnecessary smallcaps fonts which are already accessible through
the corresponding main font and the
`smallcaps`

function

- Improved default spacing for headings
- Added
`panic`

function - Added
`clusters`

and`codepoints`

methods for strings - Support for multiple authors in
`set document`

- Fixed crash when string is accessed at a position that is not a char boundary
- Fixed semicolon parsing in
`#var ;`

- Fixed incremental parsing when inserting backslash at end of
`#"abc"`

- Fixed names of a few font families (including Noto Sans Symbols and New Computer Modern families)
- Fixed autocompletion for font families
- Improved incremental compilation for user-defined functions

## February 15, 2023

- Box and block have gained
`fill`

,`stroke`

,`radius`

, and`inset`

properties - Blocks may now be explicitly sized, fixed-height blocks can still break across pages
- Blocks can now be configured to be
`breakable`

or not - Numbering style can now be configured for nested enums
- Markers can now be configured for nested lists
- The
`eval`

function now expects code instead of markup and returns an arbitrary value. Markup can still be evaluated by surrounding the string with brackets. - PDFs generated by Typst now contain XMP metadata
- Link boxes are now disabled in PDF output
- Tables don't produce small empty cells before a pagebreak anymore
- Fixed raw block highlighting bug

## February 12, 2023

- Shapes, images, and transformations (move/rotate/scale/repeat) are now
block-level. To integrate them into a paragraph, use a
`box`

as with other elements. - A colon is now required in an "everything" show rule: Write
`show: it => ..`

instead of`show it => ..`

. This prevents intermediate states that ruin your whole document. - Non-math content like a shape or table in a math formula is now centered vertically
- Support for widow and orphan prevention within containers
- Support for RTL in lists, grids, and tables
- Support for explicit
`auto`

sizing for boxes and shapes - Support for fractional (i.e.
`1fr`

) widths for boxes - Fixed bug where columns jump to next page
- Fixed bug where list items have no leading
- Fixed relative sizing in lists, squares and grid auto columns
- Fixed relative displacement in
`place`

function - Fixed that lines don't have a size
- Fixed bug where
`set document(..)`

complains about being after content - Fixed parsing of
`not in`

operation - Fixed hover tooltips in math
- Fixed bug where a heading show rule may not contain a pagebreak when an outline is present
- Added
`baseline`

property on`box`

- Added
`tg`

and`ctg`

operators in math - Added delimiter setting for
`cases`

function - Parentheses are now included when accepting a function autocompletion

## February 2, 2023

- Merged text and math symbols, renamed a few symbols
(including
`infty`

to`infinity`

with the alias`oo`

) - Fixed missing italic mappings
- Math italics correction is now applied properly
- Parentheses now scale in
`$zeta(x/2)$`

- Fixed placement of large root index
- Fixed spacing in
`$abs(-x)$`

- Fixed inconsistency between text and identifiers in math
- Accents are now ignored when positioning superscripts
- Fixed vertical alignment in matrices
- Fixed
`text`

set rule in`raw`

show rule - Heading and list markers now parse consistently
- Allow arbitrary math directly in content

## January 30, 2023

Go to the announcement blog post.

- New expression syntax in markup/math
- Blocks cannot be directly embedded in markup anymore
- Like other expressions, they now require a leading hashtag
- More expressions available with hashtag, including literals
(
`#"string"`

) as well as field access and method call without space:`#emoji.face`

- New import syntax
`#import "module.typ"`

creates binding named`module`

`#import "module.typ": a, b`

or`#import "module.typ": *`

to import items`#import emoji: face, turtle`

to import from already bound module

- New symbol handling
- Removed symbol notation
- Symbols are now in modules:
`sym`

,`emoji`

, and`math`

- Math module also reexports all of
`sym`

- Modified through field access, still order-independent
- Unknown modifiers are not allowed anymore
- Support for custom symbol definitions with
`symbol`

function - Symbols now listed in documentation

- New
`math`

module- Contains all math-related functions
- Variables and function calls directly in math (without hashtag) access this module instead of the global scope, but can also access local variables
- Can be explicitly used in code, e.g.
`#set math.vec(delim: "[")`

- Delimiter matching in math
- Any opening delimiters matches any closing one
- When matched, they automatically scale
- To prevent scaling, escape them
- To forcibly match two delimiters, use
`lr`

function - Line breaks may occur between matched delimiters
- Delimiters may also be unbalanced
- You can also use the
`lr`

function to scale the brackets (or just one bracket) to a specific size manually

- Multi-line math with alignment
- The
`\`

character inserts a line break - The
`&`

character defines an alignment point - Alignment points also work for underbraces, vectors, cases, and matrices
- Multiple alignment points are supported

- The
- More capable math function calls
- Function calls directly in math can now take code expressions with hashtag
- They can now also take named arguments
- Within math function calls, semicolons turn preceding arguments to arrays to
support matrices:
`$mat(1, 2; 3, 4)$`

- Arbitrary content in math
- Text, images, and other arbitrary content can now be embedded in math
- Math now also supports font fallback to support e.g. CJK and emoji

- More math features
- New text operators:
`op`

function,`lim`

,`max`

, etc. - New matrix function:
`mat`

- New n-ary roots with
`root`

function:`$root(3, x)$`

- New under- and overbraces, -brackets, and -lines
- New
`abs`

and`norm`

functions - New shorthands:
`[|`

,`|]`

, and`||`

- New
`attach`

function, overridable attachments with`script`

and`limit`

- Manual spacing in math, with
`h`

,`thin`

,`med`

,`thick`

and`quad`

- Symbols and other content may now be used like a function, e.g.
`$zeta(x)$`

- Added Fira Math font, removed Noto Sans Math font
- Support for alternative math fonts through
`#show math.formula: set text("Fira Math")`

- New text operators:
- More library improvements
- New
`calc`

module,`abs`

,`min`

,`max`

,`even`

,`odd`

and`mod`

moved there - New
`message`

argument on`assert`

function - The
`pairs`

method on dictionaries now returns an array of length-2 arrays instead of taking a closure - The method call
`dict.at("key")`

now always fails if`"key"`

doesn't exist Previously, it was allowed in assignments. Alternatives are`dict.key = x`

and`dict.insert("key", x)`

.

- New
- Smarter editor functionality
- Autocompletion for local variables
- Autocompletion for methods available on a value
- Autocompletion for symbols and modules
- Autocompletion for imports
- Hover over an identifier to see its value(s)

- Further editor improvements
- New Font menu with previews
- Single projects may now be shared with share links
- New dashboard experience if projects are shared with you
- Keyboard Shortcuts are now listed in the menus and there are more of them
- New Offline indicator
- Tooltips for all buttons
- Improved account protection
- Moved Status indicator into the error list button

- Further fixes
- Multiple bug fixes for incremental parser
- Fixed closure parameter capturing
- Fixed tons of math bugs
- Bugfixes for performance, file management, editing reliability
- Added redirection to the page originally navigated to after signin