Skip to content

Releases: typst/typst

Version 0.13.1 (March 7, 2025)

07 Mar 12:50
Compare
Choose a tag to compare

View changelog with links into the documentation on typst.app/docs

Command Line Interface

  • Fixed high CPU usage for typst watch on Linux. Depending on the project size, CPU usage would spike for varying amounts of time. This bug appeared with 0.13.0 due to a behavioral change in the inotify file watching backend.

HTML export

  • Fixed export of tables with gutters
  • Fixed usage of <html> and <body> element within context
  • Fixed querying of metadata next to <html> and <body> element

Visualization

  • Fixed curves with multiple non-closed components

Introspection

  • Fixed a regression where labelled symbols could not be queried by label

Deprecations

  • Fixed false positives in deprecation warnings for type/str comparisons

Contributors

Thanks to everyone who contributed to this release: @7ijme, @Andrew15-5, @Emm54321, @F2011, @MDLC01, @PgBiel, @SharzyL, @aodenis.

Version 0.13.0 (February 19, 2025)

19 Feb 16:25
Compare
Choose a tag to compare

Read the announcement blog post

View changelog with links into the documentation on typst.app/docs

Highlights

  • There is now a distinction between proper paragraphs and just inline-level content. This is important for future work on accessibility and means that first line indent can now be enabled for all paragraphs instead of just consecutive ones.
  • The outline has a better out-of-the-box look and is more customizable
  • The new curve function (that supersedes the path function) provides a simpler and more flexible interface for creating Bézier curves
  • The image function now supports raw pixel raster formats for generating images from within Typst
  • Functions that accept file paths now also accept raw bytes, for full flexibility
  • WebAssembly plugins are more flexible and automatically run multi-threaded
  • Fixed a long-standing bug where single-letter strings in math ($"a"$) would be displayed in italics
  • You can now specify which charset should be covered by which font family
  • The pdf.embed function lets you embed arbitrary files in the exported PDF
  • HTML export is currently under active development. The feature is still very incomplete, but already available for experimentation behind a feature flag.

Model

  • There is now a distinction between proper paragraphs and just inline-level content (Breaking change)
    • All text at the root of a document is wrapped in paragraphs. Meanwhile, text in a container (like a block) is only wrapped in a paragraph if the container holds any block-level content. If all of the content is inline-level, no paragraph is created.
    • In the laid-out document, it's not immediately visible whether text became part of a paragraph. However, it is still important for accessibility, HTML export, and for properties like first-line-indent.
    • Show rules on par now only affect proper paragraphs
    • The first-line-indent and hanging-indent properties also only affect proper paragraphs
    • Creating a par[..] with body content that is not fully inline-level will result in a warning
    • The default show rules of various built-in elements like lists, quotes, etc. were adjusted to ensure they produce/don't produce paragraphs as appropriate
    • Removed support for booleans and content in outline.indent
  • The outline function was fully reworked to improve its out-of-the-box behavior (Breaking change)
    • Outline entries are now blocks and are thus affected by block spacing
    • The auto indentation mode now aligns numberings and titles outline-wide for a grid-like look
    • Automatic indentation now also indents entries without a numbering
    • Titles wrapping over multiple lines now have hanging indent
    • The page number won't appear alone on its own line anymore
    • The link now spans the full entry instead of just the title and page number
    • The default spacing between outline leader dots was increased
    • The fill parameter was moved from outline to outline.entry and can thus be configured through show-set rules
    • Removed body and page fields from outline entry
    • Added indented, prefix, inner, body, and page methods on outline entries to simplify writing of show rules
  • Added configuration to par.first-line-indent for indenting all paragraphs instead of just consecutive ones
  • Added form parameter to ref function. Setting the form to "page" will produce a page reference instead of a textual one.
  • Added document.description field, which results in corresponding PDF and HTML metadata
  • Added enum.reversed parameter
  • Added support for Greek numbering
  • When the link function wraps around a container like a block, it will now generate only one link for the whole block instead of individual links for all the visible leaf elements. This significantly reduces PDF file sizes when combining link and repeat.
  • The link function will now only strip one prefix (like mailto: or tel:) instead of multiple
  • The link function now suppresses hyphenation via a built-in show-set rule rather than through its default show rule
  • Displaying the page counter without a specified numbering will now take the page numbering into account

Visualization

  • Added new curve function that supersedes the path function and provides a simpler and more flexible interface. The path function is now deprecated.
  • The image function now supports raw pixel raster formats. This can be used to generate images from within Typst without the need for encoding in an image exchange format.
  • Added image.scaling parameter for configuring how an image is scaled by PNG export and PDF viewers (smooth or pixelated)
  • Added image.icc parameter for providing or overriding the ICC profile of an image
  • Renamed pattern to tiling. The name pattern remains as a deprecated alias.
  • Added gradient.center, gradient.radius, gradient.focal-center, and gradient.focal-radius methods
  • Fixed interaction of clipping and outset on box and block
  • Fixed panic with path of infinite length
  • Fixed non-solid (e.g. tiling) text fills in clipped blocks
  • Fixed a crash for images with a DPI value of zero
  • Fixed floating-point error in gradient.repeat
  • Auto-detection of image formats from a raw buffer now has support for SVGs

Scripting

  • Functions that accept file paths now also accept raw bytes
    • image, cbor, csv, json, toml, xml, and yaml now support a path string or bytes and their .decode variants are deprecated
    • plugin, bibliography, bibliography.style, cite.style, raw.theme, and raw.syntaxes now accept bytes in addition to path strings. These did not have .decode variants, so this adds new flexibility.
    • The path argument/field of image and bibliography was renamed to source and sources, respectively (Minor breaking change)
  • Improved WebAssembly plugins
    • The plugin type is replaced by a plugin function that returns a module containing normal Typst functions. This module can be used with import syntax. (Breaking change)
    • Plugins now automatically run in multiple threads without any changes by plugin authors
    • A new plugin.transition API is introduced which allows plugins to run impure initialization in a way that doesn't break Typst's purity guarantees
  • The variable name bound by a bare import (no renaming, no import list) is now determined statically and dynamic imports without as renaming (e.g. import "ot" + "her.typ") are a hard error (Breaking change)
  • Values of the arguments type can now be added with + and joined in curly-braced code blocks
  • Functions in an element function's scope can now be called with method syntax, bringing elements and types closer (in anticipation of a future full unification of the two). Currently, this is only useful for outline.entry as no other element function defines methods.
  • Added calc.norm function
  • Added support for 32-bit floats in float.from-bytes and float.to-bytes
  • The decimal constructor now also accepts decimal values
  • Improved repr of symbols, arguments, and types
  • Duplicate symbol variants and modifiers are now a hard error (Breaking change)

Math

  • Fixed a bug where single letter strings in math ($"a"$) would be displayed in italics
  • Math function calls can now have hyphenated named arguments and support argument spreading
  • Better looking accents thanks to support for the flac (Flattened Accent Forms) and dtls (Dotless Forms) OpenType features
  • Added lcm text operator
  • The bold function now works with ϝ and Ϝ
  • The italic function now works with ħ
  • Fixed a bug where the extent of a math equation was wrongly affected by internal metadata
  • Fixed interaction of lr and context expressions
  • Fixed weak spacing being unconditionally ignored in lr
  • Fixed sub/superscripts sometimes being in the wrong position with lr
  • Fixed multi-line annotations (e.g. overbrace) changing the math baseline
  • Fixed merging of attachments when the base is a nested equation
  • Fixed resolving of contextual (em-based) text sizes within math
  • Fixed spacing around up tacks (⊥)

Bibliography

  • Prose and author-only citations now use editor names if the author names are unavailable
  • Some non-standard but widely used BibLaTeX editortypes like producer, writer, scriptwriter, and none (defined by widespread style biblatex-chicago to mean performers within music and video entries) are now recognized
  • CSL styles can now render affixes around the bibliography
  • For BibTeX entries with eprinttype = {pubmed}, the PubMed ID will now be correctly processed
  • Whitespace handling for strings delimiting initialized names has been improved
  • Uppercase spelling after apostrophes used as quotation marks is now possible
  • Fixed bugs around the handling of CSL delimiting characters
  • Fixed a problem with parsing multibyte characters in page ranges that could prevent Hayagriva from parsing some BibTeX page ranges
  • Updated CSL APA style
  • Updated CSL locales for Finnish, Swiss German, Austrian German, German, and Arabic

Text

  • Added support for specifying which charset should be covered by which font family
  • Added all parameter to smallcaps function that also enables small capitals on uppercase letters
  • Added basic i18n for Basque and Bulgarian
  • Justification does not affect raw blocks anymore
  • CJK-Latin-spacing does not affect raw text anymore
  • Fixed wrong language codes being used for Greek and Ukrainian
  • Fixed default quotes for Croatian and Bulgarian
  • Fixed crash in RTL text handling
  • Added support for raw syntax highlighting for a few new languages: CFML, NSIS, and WGSL
  • New font metadata exception for New Computer Modern Sans Math
  • Updated bu...
Read more

Version 0.13.0, Release Candidate 1 (February 5, 2025)

05 Feb 17:31
Compare
Choose a tag to compare

Version 0.12.0 (October 18, 2024)

18 Oct 21:41
Compare
Choose a tag to compare

View changelog with links into the documentation on typst.app/docs

Highlights

  • Added support for multi-column floating placement and figures
  • Added support for automatic line numbering (often used in academic papers)
  • Typst's layout engine is now multithreaded. Typical speedups are 2-3x for larger documents. The multithreading operates on page break boundaries, so explicit page breaks are necessary for it to kick in.
  • Paragraph justification was optimized with a new two-pass algorithm. Speedups are larger for shorter paragraphs and go up to 6x.
  • Highly reduced PDF file sizes due to better font subsetting (thanks to @LaurenzV)
  • Emoji are now exported properly in PDF
  • Added initial support for PDF/A. For now, only the PDF/A-2b profile is supported, but more is planned for the future.
  • Added various options for configuring the CLI's environment (fonts, package paths, etc.)
  • Text show rules now match across multiple text elements
  • Block-level equations can now optionally break over multiple pages
  • Fixed a bug where some fonts would not print correctly on professional printers
  • Fixed a long-standing bug which could cause headings to be orphaned at the bottom of the page

Layout

  • Added support for multi-column floating placement and figures via place.scope and figure.scope. Two-column documents should now prefer set page(columns: 2) over show: column.with(2) (see the page setup guide).
  • Added support for automatic line numbering (often used in academic papers)
  • Added par.spacing property for configuring paragraph spacing. This should now be used instead of show par: set block(spacing: ..) (Breaking change)
  • Block-level elements like lists, grids, and stacks now show themselves as blocks and are thus affected by all block properties (e.g. stroke) rather than just spacing (Breaking change)
  • Added block.sticky property which prevents a page break after a block
  • Added place.flush function which forces all floating figures to be placed before any further content
  • Added skew function
  • Added auto option for page.header and page.footer which results in an automatic header/footer based on the numbering (which was previously inaccessible after a change)
  • Added gap and justify parameters to repeat function
  • Added width and height parameters to the measure function to define the space in which the content should be measured. Especially useful in combination with layout.
  • The height of a block, image, rect, square, ellipse, or circle can now be specified in fractional units
  • The scale function now supports absolute lengths for x, y, factor. This way an element of unknown size can be scaled to a fixed size.
  • The values of block.above and block.below can now be retrieved in context expressions.
  • Increased accuracy of conversions between absolute units (pt, mm, cm, in)
  • Fixed a bug which could cause headings to be orphaned at the bottom of the page
  • Fixed footnotes within breakable blocks appearing on the page where the breakable block ends instead of at the page where the footnote marker is
  • Fixed numbering of nested footnotes and footnotes in floats
  • Fixed empty pages appearing when a context expression wraps whole pages
  • Fixed set block(spacing: x) behaving differently from set block(above: x, below: x)
  • Fixed behavior of rotate and scale with reflow: true
  • Fixed interaction of align(horizon) and v(1fr)
  • Fixed various bugs where floating placement would yield overlapping results
  • Fixed a bug where widow/orphan prevention would unnecessarily move text into the next column
  • Fixed weak spacing not being trimmed at the start and end of lines in a paragraph (only at the start and end of paragraphs)
  • Fixed interaction of weak page break and pagebreak.to
  • Fixed compilation output of a single weak page break
  • Fixed crash when padding by 100%

Text

  • Tuned hyphenation: It is less eager by default and hyphenations close to the edges of words are now discouraged more strongly (May lead to larger layout reflows)
  • New default font: Libertinus Serif. This is the maintained successor to the old default font Linux Libertine. (May lead to smaller reflows)
  • Setting the font to an unavailable family will now result in a warning
  • Implemented a new smart quote algorithm, fixing various bugs where smart quotes weren't all that smart
  • Added text.costs parameter for tweaking various parameters that affect the choices of the layout engine during text layout
  • Added typm highlighting mode for math in raw blocks
  • Added basic i18n for Galician, Catalan, Latin, Icelandic, Hebrew
  • Implemented hyphenation duplication for Czech, Croatian, Lower Sorbian, Polish, Portuguese, Slovak, and Spanish.
  • The smallcaps function is now an element function and can thereby be used in show(-set) rules.
  • The raw.theme parameter can now be set to none to disable highlighting even in the presence of a language tag, and to auto to reset to the default
  • Multiple stylistic sets can now be enabled at once
  • Fixed the Chinese translation for "Equation"
  • Fixed that hyphenation could occur outside of words
  • Fixed incorrect layout of bidirectional text in edge cases
  • Fixed layout of paragraphs with explicit trailing whitespace
  • Fixed bugs related to empty paragraphs created via #""
  • Fixed accidental trailing spaces for line breaks immediately preceding an inline equation
  • Fixed text.historical-ligatures not working correctly
  • Fixed accidental repetition of Thai characters around line breaks in some circumstances
  • Fixed smart quotes for Swiss French
  • New font metadata exceptions for Archivo, Kaiti SC, and Kaiti TC
  • Updated bundled New Computer Modern fonts to version 6.0

Math

  • Block-level equations can now break over multiple pages if enabled via show math.equation: set block(breakable: true).
  • Matrix and vector sizing is now more consistent across different cell contents
  • Added stretch function for manually or automatically stretching characters like arrows or parentheses horizontally or vertically
  • Improved layout of attachments on parenthesized as well as under- or overlined expressions
  • Improved layout of nested attachments resulting from code like #let a0 = $a_0$; $a0^1$
  • Improved layout of primes close to superscripts
  • Improved layout of fractions
  • Typst now makes use of math-specific height-dependent kerning information in some fonts for better attachment layout
  • The floor and ceil functions in math are now callable symbols, such that $ floor(x) = lr(floor.l x floor.r) $
  • The mat.delim, vec.delim, and cases.delim parameters now allow any character that is considered a delimiter or "fence" (e.g. |) by Unicode. The delim: "||" notation is not supported anymore and should be replaced by delim: bar.double (Minor breaking change)
  • Added vec.align and mat.align parameters
  • Added underparen, overparen, undershell, and overshell
  • Added ~ shorthand for tilde.op in math mode (Minor breaking change)
  • Fixed baseline alignment of equation numbers
  • Fixed positioning of corner brackets (⌜, ⌝, ⌞, ⌟)
  • Fixed baseline of large roots
  • Fixed multiple minor layout bugs with attachments
  • Fixed that alignment points could affect line height in math
  • Fixed that spaces could show up between text and invisible elements like metadata in math
  • Fixed a crash with recursive show rules in math
  • Fixed lr.size not affecting characters enclosed in mid in some cases
  • Fixed resolving of em units in sub- and superscripts
  • Fixed bounding box of inline equations when a text edge is set to "bounds"

Introspection

  • Implemented a new system by which Typst tracks where elements end up on the pages. This may lead to subtly different behavior in introspections. (Breaking change)
  • Fixed various bugs with wrong counter behavior in complex layout situations, through a new, more principled implementation
  • Counter updates can now be before the first, in between, and after the last page when isolated by weak page breaks. This allows, for instance, updating a counter before the first page header and background.
  • Fixed logical ordering of introspections within footnotes and figures
  • Fixed incorrect here().position() when place was used in a context expression
  • Fixed resolved positions of elements (in particular, headings) whose show rule emits an invisible element (like a state update) before a page break
  • Fixed behavior of stepping a counter at a deeper level than its current state has
  • Fixed citation formatting not working in table headers and a few other places
  • Displaying the footnote counter will now respect the footnote numbering style

Model

  • Document set rules do not need to be at the very start of the document anymore. The only restriction is that they must not occur inside of layout containers.
  • The spacing property of lists, enumerations, and term lists is now also respected for tight lists
  • Tight lists now only attach (with tighter spacing) to preceding paragraphs, not arbitrary blocks
  • The quote element is now locatable (can be used in queries)
  • The bibliography heading now uses depth instead of level so that its level can still be configured via a show-set rule
  • Added support for more numbering formats: Devanagari, Eastern Arabic, Bengali, and circled numbers
  • Added hanging-indent parameter to heading function to tweak the appearance of multi-line headings and improved default appearance of multi-line headings
  • Improved handling of bidirectional text in outline entry
  • Fixed document set rules being ignored in an otherwise empty document
  • Fixed document set rules not being usable in context expressions
  • Fixed bad interactio...
Read more

Version 0.12.0, Release Candidate 2 (October 15, 2024)

15 Oct 14:28
Compare
Choose a tag to compare

View changes since RC1.

Version 0.12.0, Release Candidate 1 (October 3, 2024)

03 Oct 21:52
Compare
Choose a tag to compare

For a preliminary 0.12 changelog, see https://staging.typst.app/docs/changelog

Version 0.11.1 (May 17, 2024)

17 May 15:33
Compare
Choose a tag to compare
  • Security

    • Fixed a vulnerability where image files at known paths could be embedded into the PDF even if they were outside of the project directory
  • Bibliography

    • Fixed et-al handling in subsequent citations
    • Fixed suppression of title for citations and bibliography references with no author
    • Fixed handling of initials in citation styles without a delimiter
    • Fixed bug with citations in footnotes
  • Text and Layout

    • Fixed interaction of first-line-indent and outline
    • Fixed compression of CJK punctuation marks at line start and end
    • Fixed handling of rectangles with negative dimensions
    • Fixed layout of path in explicitly sized container
    • Fixed broken raw text in right-to-left paragraphs
    • Fixed tab rendering in raw text with language typ or typc
    • Fixed highlighting of multi-line raw text enclosed by single backticks
    • Fixed indentation of overflowing lines in raw blocks
    • Fixed extra space when raw text ends with a backtick
  • Math

    • Fixed broken equations in right-to-left paragraphs
    • Fixed missing blackboard bold letters
    • Fixed error on empty arguments in 2D math argument list
    • Fixed stretching via mid for various characters
    • Fixed that alignment points in equations were affected by set align(..)
  • Export

    • Fixed smart quotes in PDF outline
    • Fixed patterns with spacing in PDF
    • Fixed wrong PDF page labels when page numbering was disabled after being previously enabled
  • Scripting

    • Fixed overflow for large numbers in external data files (by converting to floats instead)
    • Fixed str.trim(regex, at: end) when the whole string is matched
  • Miscellaneous

    • Fixed deformed strokes for specific shapes and thicknesses
    • Fixed newline handling in code mode: There can now be comments within chained method calls and between an if branch and the else keyword
    • Fixed inefficiency with incremental reparsing
    • Fixed autocompletions for relative file imports
    • Fixed crash in autocompletion handler
    • Fixed a bug where the path and entrypoint printed by typst init were not properly escaped
    • Fixed various documentation errors

Thanks to everyone who contributed to this release: @Leedehai, @elegaanz, @frozolotl, @A-Walrus, @MDLC01, @Myriad-Dreamin, @3w36zj6, @Enter-tainer, @EpicEricEE, @Jocs, @PgBiel, @QuarticCat, @Tom4sCruz, @bluebear94, @etiennecollin, @gabriel-araujjo, @joserlopes, @rikhuijzer, @wrzian.

Version 0.11.0 (March 15, 2024)

15 Mar 18:05
Compare
Choose a tag to compare

View changelog with more links on typst.app

  • Tables (thanks to @PgBiel)

    • Tables are now much more flexible, read the new table guide to get started
    • Added table.cell element for per-cell configuration
    • Cells can now span multiple columns or rows
    • The stroke of individual cells can now be customized
    • The align and inset arguments of the table function now also take (x, y) => .. functions
    • Added table.hline and table.vline for convenient line customization
    • Added table.header element for table headers that repeat on every page
    • Added table.footer element for table footers that repeat on every page
    • All the new table functionality is also available for grids
    • Fixed gutter-related bugs
  • Templates

    • You can now use template packages to get started with new projects. Click Start from template on the web app's dashboard and choose your preferred template or run the typst init <template> command in the CLI. You can browse the available templates here.
    • Switching templates after the fact has become easier. You can just import a styling function from a different template package.
    • Package authors can now submit their own templates to the package repository. Share a template for a paper, your institution, or an original work to help the community get a head start on their projects.
    • Templates and packages are now organized by category and discipline. Filter packages by either taxonomy in the Start from template wizard. If you are a package author, take a look at the new documentation for categories and disciplines.
  • Context

    • Added context expressions: Read the chapter on context to get started
    • With context, you can access settable properties, e.g. context text.lang to access the language set via set text(lang: "..")
    • The following existing functions have been made contextual: query, locate, measure, counter.display, counter.at, counter.final, state.at, and state.final
    • Added contextual methods counter.get and state.get to retrieve the value of a counter or state in the current context
    • Added contextual function here to retrieve the location of the current context
    • The locate function now returns the location of a selector's unique match. Its old behavior has been replaced by context expressions and only remains temporarily available for compatibility.
    • The counter.at and state.at methods are now more flexible: They directly accept any kind of locatable selector with a unique match (e.g. a label) instead of just locations
    • When context is available, counter.display now directly returns the result of applying the numbering instead of yielding opaque content. It should not be used anymore without context. (Deprecation planned)
    • The state.display function should not be used anymore, use state.get instead (Deprecation planned)
    • The location argument of query, counter.final, and state.final should not be used anymore (Deprecation planned)
    • The styles argument of the measure function should not be used anymore (Deprecation planned)
    • The style function should not be used anymore, use context instead (Deprecation planned)
    • The correct context is now also provided in various other places where it is available, e.g. in show rules, layout callbacks, and numbering functions in the outline
  • Styling

    • Fixed priority of multiple show-set rules: They now apply in the same order as normal set rules would
    • Show-set rules on the same element (e.g. show heading.where(level: 1): set heading(numbering: "1.")) now work properly
    • Setting properties on an element within a transformational show rule (e.g. show heading: it => { set heading(..); it }) is not supported anymore (previously it also only worked sometimes); use show-set rules instead (Breaking change)
    • Text show rules that match their own output now work properly (e.g. show "cmd": `cmd`)
    • The elements passed to show rules and returned by queries now contain all fields of their respective element functions rather than just specific ones
    • All settable properties can now be used in where selectors
    • And and or selectors can now be used with show rules
    • Errors within show rules and context expressions are now ignored in all but the last introspection iteration, in line with the behavior of the old locate
    • Fixed a bug where document set rules were allowed after content
  • Layout

    • Added reflow argument to rotate and scale which lets them affect the layout
    • Fixed a bug where floating placement or floating figures could end up out of order
    • Fixed overlap of text and figure for full-page floating figures
    • Fixed various cases where the hide function didn't hide its contents properly
    • Fixed usage of h and v in stacks
    • Invisible content like a counter update will no longer force a visible block for just itself
    • Fixed a bug with horizontal spacing followed by invisible content (like a counter update) directly at the start of a paragraph
  • Text

    • Added stroke property for text
    • Added basic i18n for Serbian and Catalan
    • Added support for contemporary Japanese numbering method
    • Added patches for various wrong metadata in specific fonts
    • The text direction can now be overridden within a paragraph
    • Fixed Danish smart quotes
    • Fixed font fallback next to a line break
    • Fixed width adjustment of JIS-style Japanese punctuation
    • Fixed Finnish translation of "Listing"
    • Fixed Z-ordering of multiple text decorations (underlines, etc.)
    • Fixed a bug due to which text features could not be overridden in consecutive set rules
  • Model

    • Added depth and offset arguments to heading to increase or decrease the heading level for a bunch of content; the heading syntax now sets depth rather than level (Breaking change)
    • List markers) now cycle by default
    • The quote function now more robustly selects the correct quotes based on language and nesting
    • Fixed indent bugs related to the default show rule of terms
  • Math

    • Inline equations now automatically linebreak at appropriate places
    • Added number-align argument to equations
    • Added support for adjusting the size of accents relative to their base
    • Improved positioning of accents
    • Primes are now always attached as scripts by default
    • Exposed math.primes element which backs the $f'$ syntax in math
    • Math mode is not affected by strong and emph anymore
    • Fixed attach under fractions
    • Fixed that math.class did not affect smart limit placement
    • Fixed weak spacing in lr groups
    • Fixed layout of large operators for Cambria Math font
    • Fixed math styling of Hebrew symbol codepoints
  • Symbols

    • Added gradient as an alias for nabla
    • Added partial as an alias for diff, diff will be deprecated in the future
    • Added colon.double, gt.approx, gt.napprox, lt.approx, and lt.napprox
    • Added arrow.r.tilde and arrow.l.tilde
    • Added tilde.dot
    • Added forces and forces.not
    • Added space.nobreak.narrow
    • Added lrm (Left-to-Right Mark) and rlm (Right-to-Left Mark)
    • Fixed star.stroked symbol (which previously had the wrong codepoint)
  • Scripting

    • Arrays can now be compared lexicographically
    • Added contextual method to-absolute to lengths
    • Added calc.root
    • Added int.signum and float.signum methods
    • Added float.is-nan and float.is-infinite methods
    • Added int.bit-not, int.bit-and, int.bit-or, int.bit-xor, int.bit-lshift, and int.bit-rshift methods
    • Added array.chunks method
    • A module can now be converted to a dictionary with the dictionary constructor to access its contents dynamically
    • Added row-type argument to csv function to configure how rows will be represented
    • XML parsing now allows DTDs (document type definitions)
    • Improved formatting of negative numbers with str and repr
    • For loops can now iterate over bytes
    • Fixed a bug with pattern matching in for loops
    • Fixed a bug with labels not being part of .fields() dictionaries
    • Fixed a bug where unnamed argument sinks wouldn't capture excess arguments
    • Fixed typo in repr output of strokes
  • Syntax

    • Added support for nested destructuring patterns
    • Special spaces (like thin or non-breaking spaces) are now parsed literally instead of being collapsed into normal spaces (Breaking change)
    • Korean text can now use emphasis syntax without adding spaces (Breaking change)
    • The token context is now a keyword and cannot be used as an identifier anymore (Breaking change)
    • Nested line comments aren't allowed anymore in block comments (Breaking change)
    • Fixed a bug where x.) would be treated as a field access
    • Text elements can now span across curly braces in markup
    • Fixed silently wrong parsing when function name is parenthesized
    • Fixed various bugs with parsing of destructuring patterns, arrays, and dictionaries
  • Tooling & Diagnostics

    • Click-to-jump now works properly within raw text
    • Added suggestion for accessing a field if a method doesn't exist
    • Improved hint for calling a function stored in a dictionary
    • Improved errors for mutable accessor functions on arrays and dictionaries
    • Fixed error message when calling constructor of type that doesn't have one
    • Fixed confusing error message with nested dictionaries for strokes on different sides
    • ...
Read more

Version 0.11.0, Release Candidate 1 (March 9, 2024)

09 Mar 18:29
Compare
Choose a tag to compare

For a preliminary 0.11 changelog, see https://staging.typst.app/docs/changelog

Version 0.10.0 (December 4, 2023)

04 Dec 15:51
Compare
Choose a tag to compare
  • Bibliography management

    • Added support for citation collapsing (e.g. [1]-[3] instead of [1], [2], [3]) if requested by a CSL style
    • Fixed bug where an additional space would appear after a group of citations
    • Fixed link show rules for links in the bibliography
    • Fixed show-set rules on citations
    • Fixed bibliography-related crashes that happened on some systems
    • Corrected name of the GB/T 7714 family of styles from 7114 to 7714
    • Fixed missing title in some bibliography styles
    • Fixed printing of volumes in some styles
    • Fixed delimiter order for contributors in some styles (e.g. APA)
    • Fixed behavior of alphanumeric style
    • Fixed multiple bugs with GB/T 7714 style
    • Fixed escaping in Hayagriva values
    • Fixed crashes with empty dates in Hayagriva files
    • Fixed bug with spacing around math blocks
    • Fixed title case formatting after verbatim text and apostrophes
    • Page ranges in .bib files can now be arbitrary strings
    • Multi-line values in .bib files are now parsed correctly
    • Entry keys in .bib files now allow more characters
    • Fixed error message for empty dates in .bib files
    • Added support for years of lengths other than 4 without leading zeros in .bib files
    • More LaTeX commands (e.g. for quotes) are now respected in .bib files
  • Visualization

    • Added support for patterns as fills and strokes
    • The alpha parameter of the components function on colors is now a named parameter (Breaking change)
    • Added support for the Oklch color space
    • Improved conversions between colors in different color spaces
    • Removed restrictions on Oklab chroma component
    • Fixed clipping on blocks and boxes without a stroke
    • Fixed bug with gradients on math
    • Fixed bug with gradient rotation on text
    • Fixed bug with gradient colors in PDF
    • Fixed relative base of Oklab chroma ratios
    • Fixed Oklab color negation
  • Text and Layout

    • CJK text can now be emphasized with the * and _ syntax even when there are no spaces
    • Added basic i18n for Greek and Estonian
    • Improved default figure caption separator for Chinese, French, and Russian
    • Changed default figure supplement for Russian to short form
    • Fixed CJK-Latin-spacing before line breaks and in locate calls
    • Fixed line breaking at the end of links
  • Math

    • Added mid function for scaling a delimiter up to the height of the surrounding lr group
    • The op function can now take any content, not just strings
    • Improved documentation for math alignment
    • Fixed swallowing of trailing comma when a symbol is used in a function-like way (e.g. pi(a,b,))
  • Scripting

    • Any non-identifier dictionary key is now interpreted as an expression: For instance, ((key): value) will create a dictionary with a dynamic key
    • The stroke type now has a constructor that converts a value to a stroke or creates one from its parts
    • Added constructor for arguments type
    • Added calc.div-euclid and calc.rem-euclid functions
    • Fixed equality of arguments
    • Fixed repr of cmyk colors
    • Fixed crashes with provided elements like figure captions, outline entries, and footnote entries
  • Tooling and Diagnostics

    • Show rules that match on their own output now produce an appropriate error message instead of a crash (this is a first step, in the future they will just work)
    • Too highly or infinitely nested layouts now produce error messages instead of crashes
    • Added hints for invalid identifiers
    • Added hint when trying to use a manually constructed footnote or outline entry
    • Added missing details to autocompletions for types
    • Improved error message when passing a named argument where a positional one is expected
    • Jump from click now works on raw blocks
  • Export

    • PDF compilation output is now again fully byte-by-byte reproducible if the document's date is set manually
    • Fixed color export in SVG
    • Fixed PDF metadata encoding of multiple authors
  • Command line interface

    • Fixed a major bug where typst watch would confuse files and fail to pick up updates
    • Fetching of the release metadata in typst update now respects proxies
    • Fixed bug with --open flag on Windows when the path contains a space
    • The TYPST_FONT_PATHS environment variable can now contain multiple paths (separated by ; on Windows and : elsewhere)
    • Updated embedded New Computer Modern fonts to version 4.7
    • The watching process doesn't stop anymore when the main file contains invalid UTF-8
  • Miscellaneous Improvements

    • Parallelized image encoding in PDF export
    • Improved the internal representation of content for improved performance
    • Optimized introspection (query, counter, etc.) performance
    • The document title can now be arbitrary content instead of just a string
    • The number-align parameter on numbered lists now also accepts vertical alignments
    • Fixed selectors on quote elements
    • Fixed parsing of #return expression in markup
    • Fixed bug where inline equations were displayed in equation outlines
    • Fixed potential CRLF issue in raw blocks
    • Fixed a bug where Chinese numbering couldn't exceed the number 255
  • Development

    • Merged typst and typst-library and extracted typst-pdf, typst-svg, and typst-render into separate crates
    • The Nix flake now includes the git revision when running typst --version

Thanks to everyone who contributed to this release: @Dherse, @frozolotl, @Leedehai, @Andrew15-5, @MDLC01, @danieleades, @tingerrr, @Jollywatt, @cmoog, @peng1999, @Enter-tainer, @JakobSachs, @KronosTheLate, @MyrtleTurtle22, @T0mstone, @TheJosefOlsson, @antonWetzel, @denkspuren, @kokkonisd, @lihe07, @mattfbacon, @rezzubs, @samueltardieu, @xalbd.