mirror of
https://github.com/typst/typst
synced 2025-05-17 02:25:27 +08:00
303 lines
15 KiB
Markdown
303 lines
15 KiB
Markdown
---
|
|
description: |
|
|
Learn what has changed in the latest Typst releases and move your documents
|
|
forward.
|
|
---
|
|
|
|
# Changelog
|
|
## Unreleased
|
|
- **Breaking:** Enumerations now require a space after their marker, that is,
|
|
`[1.ok]` must now be written as `[1. ok]`
|
|
- **Breaking:** Changed default style for [term lists]($func/terms): Does not
|
|
include a colon anymore and has a bit more indent
|
|
- Fixed bibliography ordering in IEEE style
|
|
- Fixed parsing of decimals in math: `[$1.2/3.4$]`
|
|
- Fixed parsing of unbalanced delimiters in fractions: `[$1/(2 (x)$]`
|
|
- Fixed unexpected parsing of numbers as enumerations, e.g. in `[1.2]`
|
|
- Fixed combination of page fill and header
|
|
- Fixed compiler crash if [`repeat`]($func/repeat) is used in page with
|
|
automatic width
|
|
- Fixed [matrices]($func/mat) with explicit delimiter
|
|
- Fixed build of CLI if `git` is not installed
|
|
- Links in bibliographies are now affected by link styling
|
|
- Added support for disabling [matrix]($func/mat) and [vector]($func/vec)
|
|
delimiters. Generally with `[#set math.mat(delim: none)]` or one-off with
|
|
`[$mat(delim: #none, 1, 2; 3, 4)$]`.
|
|
- Added [`separator`]($func/terms.separator) argument to term lists
|
|
- Fixed [`indent`]($func/terms.indent) property of term lists
|
|
- Added [`round`]($func/round) function for equations
|
|
- Numberings now allow zeros. To reset a counter, you can write
|
|
`[#counter(..).update(0)]`
|
|
- Added `--font-path` argument for CLI
|
|
- Added Nix flake
|
|
- Numerous documentation fixes
|
|
- Added documentation for `{page()}` and `{position()}` methods on
|
|
[`location`]($func/locate) type
|
|
- Added symbols for double, triple, and quadruple dot accent
|
|
- Added smart quotes for Norwegian Bokmål
|
|
- Fixed hovering over comments in web app
|
|
|
|
## March 21, 2023
|
|
- Reference and bibliography management
|
|
- [Bibliographies]($func/bibliography) and [citations]($func/cite) (currently
|
|
supported styles are APA, Chicago Author Date, IEEE, and MLA)
|
|
- You can now [reference]($func/ref) sections, figures, formulas, and works
|
|
from the bibliography with `[@label]`
|
|
- You can make an element referenceable with a label:
|
|
- `[= Introduction <intro>]`
|
|
- `[$ A = pi r^2 $ <area>]`
|
|
|
|
- Introspection system for interactions between different parts of the document
|
|
- [`counter`]($func/counter) function
|
|
- Access and modify counters for pages, headings, figures, and equations
|
|
- Define and use your own custom counters
|
|
- Time travel: Find out what the counter value was or will be at some other
|
|
point in the document (e.g. when you're building a list of figures, you
|
|
can determine the value of the figure counter at any given figure).
|
|
- Counters count in layout order and not in code order
|
|
- [`state`]($func/state) function
|
|
- Manage arbitrary state across your document
|
|
- Time travel: Find out the value of your state at any position in the
|
|
document
|
|
- State is modified in layout order and not in code order
|
|
- [`query`]($func/query) function
|
|
- Find all occurrences of an element or a label, either in the whole document
|
|
or before/after some location
|
|
- Link to elements, find out their position on the pages and access their
|
|
fields
|
|
- Example use cases: Custom list of figures or page header with current
|
|
chapter title
|
|
- [`locate`]($func/locate) function
|
|
- Determines the location of itself in the final layout
|
|
- Can be accessed to get the `page` and `x`, `y` coordinates
|
|
- Can be used with counters and state to find out their values at that
|
|
location
|
|
- Can be used with queries to find elements before or after its location
|
|
|
|
- New [`measure`]($func/measure) function
|
|
- Measure the layouted size of elements
|
|
- To be used in combination with the new [`style`]($func/style) function that
|
|
lets you generate different content based on the style context something is
|
|
inserted into (because that affects the measured size of content)
|
|
|
|
- Exposed content representation
|
|
- Content is not opaque anymore
|
|
- Content can be compared for equality
|
|
- The tree of content elements can be traversed with code
|
|
- Can be observed in hover tooltips or with [`repr`]($func/repr)
|
|
- New [methods]($type/content) on content: `func`, `has`, `at`, and `location`
|
|
- All optional fields on elements are now settable
|
|
- More uniform field names (`heading.title` becomes `heading.body`,
|
|
`list.items` becomes `list.children`, and a few more changes)
|
|
|
|
- Further improvements
|
|
- Added [`figure`]($func/figure) function
|
|
- Added [`numbering`]($func/equation.numbering) parameter on equation function
|
|
- Added [`numbering`]($func/page.numbering) and
|
|
[`number-align`]($func/page.number-align) parameters on page function
|
|
- The page function's [`header`]($func/page.header) and
|
|
[`footer`]($func/page.footer) parameters do not take functions anymore. If
|
|
you want to customize them based on the page number, use the new
|
|
[`numbering`]($func/page.numbering) parameter or [`counter`]($func/counter)
|
|
function instead.
|
|
- Added [`footer-descent`]($func/page.footer-descent) and
|
|
[`header-ascent`]($func/page.header-ascent) parameters
|
|
- Better default alignment in header and footer
|
|
- Fixed Arabic vowel placement
|
|
- Fixed PDF font embedding issues
|
|
- Renamed `math.formula` to [`math.equation`]($func/equation)
|
|
- Font family must be a named argument now: `[#set text(font: "..")]`
|
|
- Added support for [hanging indent]($func/par.hanging-indent)
|
|
- Renamed paragraph `indent` to [`first-line-indent`]($func/par.first-line-indent)
|
|
- More accurate [logarithm]($category/calculate/log) when base is `2` or `10`
|
|
- Improved some error messages
|
|
- Fixed layout of [`terms`]($func/terms) list
|
|
|
|
- Web app improvements
|
|
- Added template gallery
|
|
- Added buttons to insert headings, equations, raw blocks, and references
|
|
- Jump to the source of something by clicking on it in the preview panel
|
|
(works for text, equations, images, and more)
|
|
- You can now upload your own fonts and use them in your project
|
|
- Hover debugging and autocompletion now takes multiple files into account and
|
|
works in show rules
|
|
- Hover tooltips now automatically collapse multiple consecutive equal values
|
|
- The preview now automatically scrolls to the right place when you type
|
|
- Links are now clickable in the preview area
|
|
- Toolbar, preview, and editor can now all be hidden
|
|
- Added autocompletion for raw block language tags
|
|
- Added autocompletion in SVG files
|
|
- New back button instead of four-dots button
|
|
- Lots of bug fixes
|
|
|
|
## 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`]($func/smallcaps) function
|
|
- Improved default spacing for headings
|
|
- Added [`panic`]($func/panic) function
|
|
- Added [`clusters`]($type/string.clusters) and [`codepoints`]($type/string.codepoints)
|
|
methods for strings
|
|
- Support for multiple authors in [`set document`]($func/document.author)
|
|
- 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]($func/box) and [block]($func/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`]($func/block.breakable) or not
|
|
- [Numbering style]($func/enum.numbering) can now be configured for nested enums
|
|
- [Markers]($func/list.marker) can now be configured for nested lists
|
|
- The [`eval`]($func/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`]($func/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]($func/text.dir) 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`]($func/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`]($func/box.baseline) property on [`box`]($func/box)
|
|
- Added [`tg`]($func/op) and [`ctg`]($func/op) operators in math
|
|
- Added delimiter setting for [`cases`]($func/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.](https://typst.app/blog/2023/january-update)
|
|
- 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
|
|
- 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")]`
|
|
- 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)}`.
|
|
- 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
|