mirror of
https://github.com/typst/typst
synced 2025-05-14 04:56:26 +08:00
310 lines
14 KiB
Markdown
310 lines
14 KiB
Markdown
---
|
|
title: Earlier
|
|
description: Changes in early, unversioned Typst
|
|
---
|
|
|
|
# Changes in early, unversioned Typst
|
|
|
|
## March 28, 2023
|
|
- **Breaking changes:**
|
|
- Enumerations now require a space after their marker, that is, `[1.ok]` must
|
|
now be written as `[1. ok]`
|
|
- Changed default style for [term lists]($terms): Does not include a colon
|
|
anymore and has a bit more indent
|
|
|
|
- Command line interface
|
|
- Added `--font-path` argument for CLI
|
|
- Embedded default fonts in CLI binary
|
|
- Fixed build of CLI if `git` is not installed
|
|
|
|
- Miscellaneous improvements
|
|
- Added support for disabling [matrix]($math.mat) and [vector]($math.vec)
|
|
delimiters. Generally with `[#set math.mat(delim: none)]` or one-off with
|
|
`[$mat(delim: #none, 1, 2; 3, 4)$]`.
|
|
- Added [`separator`]($terms.separator) argument to term lists
|
|
- Added [`round`]($math.round) function for equations
|
|
- Numberings now allow zeros. To reset a counter, you can write
|
|
`[#counter(..).update(0)]`
|
|
- Added documentation for `{page()}` and `{position()}` methods on
|
|
[`location`] type
|
|
- Added symbols for double, triple, and quadruple dot accent
|
|
- Added smart quotes for Norwegian Bokmål
|
|
- Added Nix flake
|
|
- 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`] is used in page with automatic width
|
|
- Fixed [matrices]($math.mat) with explicit delimiter
|
|
- Fixed [`indent`]($terms.indent) property of term lists
|
|
- Numerous documentation fixes
|
|
- Links in bibliographies are now affected by link styling
|
|
- Fixed hovering over comments in web app
|
|
|
|
<contributors from="v23-03-21" to="v23-03-28" />
|
|
|
|
## March 21, 2023
|
|
- Reference and bibliography management
|
|
- [Bibliographies]($bibliography) and [citations]($cite) (currently supported
|
|
styles are APA, Chicago Author Date, IEEE, and MLA)
|
|
- You can now [reference]($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`] 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`] 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`] 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`] 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`] function
|
|
- Measure the layouted size of elements
|
|
- To be used in combination with the new `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`]
|
|
- New [methods]($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`] function
|
|
- Added [`numbering`]($math.equation.numbering) parameter on equation function
|
|
- Added [`numbering`]($page.numbering) and
|
|
[`number-align`]($page.number-align) parameters on page function
|
|
- The page function's [`header`]($page.header) and [`footer`]($page.footer)
|
|
parameters do not take functions anymore. If you want to customize them
|
|
based on the page number, use the new [`numbering`]($page.numbering)
|
|
parameter or [`counter`] function instead.
|
|
- Added [`footer-descent`]($page.footer-descent) and
|
|
[`header-ascent`]($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`]($math.equation)
|
|
- Font family must be a named argument now: `[#set text(font: "..")]`
|
|
- Added support for [hanging indent]($par.hanging-indent)
|
|
- Renamed paragraph `indent` to [`first-line-indent`]($par.first-line-indent)
|
|
- More accurate [logarithm]($calc.log) when base is `2` or `10`
|
|
- Improved some error messages
|
|
- Fixed layout of [`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`] function
|
|
- Improved default spacing for headings
|
|
- Added [`panic`] function
|
|
- Added [`clusters`]($str.clusters) and [`codepoints`]($str.codepoints) methods
|
|
for strings
|
|
- Support for multiple authors in [`set document`]($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]($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`]($block.breakable) or not
|
|
- [Numbering style]($enum.numbering) can now be configured for nested enums
|
|
- [Markers]($list.marker) 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]($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`] 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`]($box.baseline) property on [`box`]
|
|
- Added [`tg`]($math.op) and [`ctg`]($math.op) operators in math
|
|
- Added delimiter setting for [`cases`]($math.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 hash
|
|
- More expressions available with hash, 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 hash) 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 hash
|
|
- 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
|