Log message:
textproc/typst: update to 0.13.0
For more information read:
https://typst.app/blog/2025/typst-0.13/
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 bundled New Computer Modern fonts to version 7.0.1
Layout
Fixed various bugs with footnotes
Fixed footnotes getting lost when multiple footnotes were nested within \
another footnote
Fixed endless loops with empty and overlarge footnotes
Fixed crash with overlarge footnotes within a floating placement
Fixed sizing of quadratic shapes (square and circle)
Fixed block.sticky not working properly at the top of a container
Fixed crash due to consecutive weak spacing
Fixed crash when a block or text have negative sizes
Fixed unnecessary hyphenations occurring in rare scenarios due to a bad \
interaction between padding and paragraph optimization
Fixed lone citations in align not becoming their own paragraph
Syntax
Top-level closing square brackets that do not have a matching opening square \
bracket are now a hard error (Minor breaking change)
Adding a space between the identifier and the parentheses in a set rule is \
not allowed anymore (Minor breaking change)
Numbers with a unit cannot have a base prefix anymore, e.g. 0b100000pt is \
not allowed anymore. Previously, it was syntactically allowed but always \
resolved to a value of zero. (Minor breaking change)
Using is as an identifier will now warn as it might become a keyword in the \
future
Fixed minor whitespace handling bugs
in math mode argument lists
at the end of headings
between a term list's term and description
Fixed parsing of empty single line raw blocks with 3+ backticks and a \
language tag
Fixed minor bug with parentheses parsing in math
Markup that can only appear at the start of the line (headings, lists) can \
now also appear at the start of a list item
A shebang #! at the very start of a file is now ignored
PDF export
Added pdf.embed function for embedding arbitrary files in the exported PDF
Added support for PDF/A-3b export
The PDF timestamp will now contain the timezone by default
HTML export
Note: HTML export is currently under active development. The feature is still \
very incomplete, but already available for experimentation behind a feature \
flag.
Added HTML output support for some (but not all) of the built-in elements
Added html.elem function for outputting an arbitrary HTML element
Added html.frame function for integrating content that requires layout into \
HTML (by embedding an SVG)
Added target function which returns either "paged" or \
"html" depending on the export target
Tooling and Diagnostics
Autocompletion improvements
Added autocompletion for file paths
Smarter autocompletion of variables: Completing rect(fill: |) will now \
only show variables which contain a valid fill (either directly or nested, e.g. \
a dictionary containing a valid fill)
Different functions will now autocomplete with different brackets (round \
vs square) depending on which kind is more useful
Positional parameters which are already provided aren't autocompleted \
again anymore
Fixed variable autocompletion not considering parameters
Added autocompletion snippets for common figure usages
Fixed autocompletion after half-completed import item
Fixed autocompletion for cite function
Added warning when an unconditional return in a code block discards joined \
content
Fixed error message when accessing non-existent label
Fixed handling of nested imports in IDE functionality
Command Line Interface
Added --features argument and TYPST_FEATURES environment variable for opting \
into experimental features. The only feature so far is html.
Added a live reloading HTTP server to typst watch when targeting HTML
Fixed self-update not being aware about certain target architectures
Fixed crash when piping typst fonts output to another command
Fixed handling of relative paths in --make-deps output
Fixed handling of multipage SVG and PNG export in --make-deps output
Colons in filenames are now correctly escaped in --make-deps output
Symbols
New
inter, inter.and, inter.big, inter.dot, inter.double, inter.sq, \
inter.sq.big, inter.sq.double, integral.inter
asymp, asymp.not
mapsto, mapsto.long
divides.not.rev, divides.struck
interleave, interleave.big, interleave.struck
eq.triple.not, eq.dots, eq.dots.down, eq.dots.up
smt, smt.eq, lat, lat.eq
colon.tri, colon.tri.op
dagger.triple, dagger.l, dagger.r, dagger.inv
hourglass.stroked, hourglass.filled
die.six, die.five, die.four, die.three, die.two, die.one
errorbar.square.stroked, errorbar.square.filled, \
errorbar.diamond.stroked, errorbar.diamond.filled, errorbar.circle.stroked, \
errorbar.circle.filled
numero
Omega.inv
Renamed
ohm.inv to Omega.inv
Changed codepoint (Breaking change)
angle.l.double from 《 to ⟪
angle.r.double from 》 to ⟫
angstrom from U+212B (Å) to U+00C5 (Å)
Deprecated
sect and all its variants in favor of inter
integral.sect in favor of integral.inter
Removed (Breaking change)
degree.c in favor of °C ($upright(°C)$ or $upright(degree C)$ in math)
degree.f in favor of °F ($upright(°F)$ or $upright(degree F)$ in math)
kelvin in favor of just K ($upright(K)$ in math)
Deprecations
The path function in favor of the curve function
The name pattern for tiling patterns in favor of the new name tiling
image.decode, cbor.decode, csv.decode, json.decode, toml.decode, xml.decode, \
yaml.decode in favor of the top-level functions directly accepting both paths \
and bytes
The sect and its variants in favor of inter, and integral.sect in favor of \
integral.inter
The compatibility behavior of type/str comparisons (e.g. int == \
"integer") which was temporarily introduced in Typst 0.8 now emits \
warnings. It will be removed in Typst 0.14.
Removals
Removed style function and styles argument of measure, use a context \
expression instead (Breaking change)
Removed state.display function, use state.get instead (Breaking change)
Removed location argument of state.at, counter.at, and query (Breaking change)
Removed compatibility behavior where counter.display worked without context \
(Breaking change)
Removed compatibility behavior of locate (Breaking change)
Development
The typst::compile function is now generic and can return either a \
PagedDocument or an HtmlDocument
typst-timing now supports WebAssembly targets via web-sys when the wasm \
feature is enabled
Increased minimum supported Rust version to 1.80
Fixed linux/arm64 Docker image
|
Log message:
textproc/typst: update to 0.11.0
Version 0.11.0 (March 15, 2024)
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
- Fixed autocompletion for multiple packages with the same name from
different namespaces
Visualization
- The image function doesn't upscale images beyond their natural size anymore
- The image function now respects rotation stored in EXIF metadata
- Added support for SVG filters
- Added alpha component to luma colors
- Added color.transparentize and color.opacify methods
- Improved color.negate function
- Added stroke and radius arguments to highlight function
- Changed default highlight color to be transparent
- CMYK to RGB conversion is now color-managed
- Fixed crash with gradients in Oklch color space
- Fixed color-mixing for hue-based spaces
- Fixed bugs with color conversion
- SVG sizes are not rounded anymore, preventing slightly wrong aspect ratios
- Fixed a few other SVG-related bugs
- color.components doesn't round anything anymore
Export
- PDFs now contain named destinations for headings derived from their labels
- The internal PDF structure was changed to make it easier for external
tools to extract or modify individual pages, avoiding a bug with Typst
PDFs in Apple Preview
- PDFs produced by Typst should now be byte-by-byte reproducible when set
document(date: none) is set
- Added missing flag to PDF annotation
- Fixed multiple bugs with gradients in PDF export
- Fixed a bug with patterns in PDF export
- Fixed a bug with embedding of grayscale images in PDF export
- Fixed a bug with To-Unicode mapping of CFF fonts in PDF export
- Fixed a bug with the generation of the PDF outline
- Fixed a sorting bug in PDF export leading to non-reproducible output
- Fixed a bug with transparent text in PNG export
- Exported SVG files now include units in their top-level width and height
Command line interface
- Added support for passing inputs via a CLI flag
- When passing the filename -, Typst will now read input from stdin
- Now uses the system-native TLS implementation for network fetching which
should be generally more robust
- Watch mode will now properly detect when a previously missing file is
created
- Added --color flag to configure whether to print colored output
- Fixed user agent with which packages are downloaded
- Updated bundled fonts to the newest versions
Development
- Added --vendor-openssl to CLI to configure whether to link OpenSSL
statically instead of dynamically (not applicable to Windows and Apple
platforms)
- Removed old tracing (and its verbosity) flag from the CLI
- Added new --timings flag which supersedes the old flamegraph profiling
in the CLI
- Added minimal CLI to typst-docs crate for extracting the language and
standard library documentation as JSON
- The typst_pdf::export function's ident argument switched from Option to
Smart. It should only be set to Smart::Custom if you can provide a stable
identifier (like the web app can). The CLI sets Smart::Auto.
Thanks to everyone who contributed to this release!
|
Log message:
textproc/typst: update to 0.10.0
Version 0.10.0 (December 4, 2023)
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
|
Log message:
textproc/typst: update to 0.9.0
Version 0.9.0 (October 31, 2023)
Bibliography management
- New bibliography engine based on CSL (Citation Style Language). Ships with
about 100 commonly used citation styles and can load custom .csl files
- Added new form argument to the cite function to produce different forms of
citations (e.g. for producing a citation suitable for inclusion in prose)
- The cite function now takes only a single label/key instead of allowing
multiple. Adjacent citations are merged and formatted according to the
citation style's rules automatically. This works both with the reference
syntax and explicit calls to the cite function. (Breaking change)
- The cite function now takes a label instead of a string (Breaking change)
- Added full argument to bibliography function to print the full bibliography
even if not all works were cited
- Bibliography entries can now contain Typst equations (wrapped in $..$ just
like in markup), this works both for .yml and .bib bibliographies
- The hayagriva YAML format was improved. See its changelog for more details.
(Breaking change)
- A few bugs with .bib file parsing were fixed
- Removed brackets argument of cite function in favor of form
Visualization
- Gradients and colors (thanks to @Dherse)
- Added support for gradients on shapes and text
- Supports linear, radial, and conic gradients
- Added support for defining colors in more color spaces, including Oklab,
Linear RGB(A), HSL, and HSV
- Added saturate, desaturate, and rotate functions on colors
- Added color.map module with predefined color maps that can be used with
gradients
- Rename kind function on colors to space
- Removed to-rgba, to-cmyk, and to-luma functions in favor of a new
components function
- Improved rendering of rectangles with corner radius and varying stroke widths
- Added support for properly clipping boxes and blocks with a border radius
- Added background parameter to overline, underline, and strike functions
- Fixed inaccurate color embedding in PDFs
- Fixed ICC profile handling for images embedded in PDFs
Text and Layout
- Added support for automatically adding proper pacing between CJK and Latin
text (enabled by default)
- Added support for automatic adjustment of more CJK punctuation
- Added quote element for inserting inline and block quotes with optional
attributions
- Added raw.line element for customizing the display of individual lines of
raw text, e.g. to add line numbers while keeping proper syntax highlighting
- Added support for per-side inset customization to table function
- Added Hungarian and Romanian translations
- Added support for Czech hyphenation
- Added support for setting custom smart quotes
- The default figure separator now reacts to the currently set language and
region
- Improved line breaking of links / URLs (especially helpful for bibliographies
with many URLs)
- Improved handling of consecutive hyphens in justification algorithm
- Fixed interaction of justification and hanging indent
- Fixed a bug with line breaking of short lines without spaces when
justification is enabled
- Fixed font fallback for hyphen generated by hyphenation
- Fixed handling of word joiner and other no-break characters during
hyphenation
- Fixed crash when hyphenating after an empty line
- Fixed line breaking of composite emoji like 🏳️🌈
- Fixed missing text in some SVGs
- Fixed font fallback in SVGs
- Fixed behaviour of to argument on pagebreak function
- Fixed set align(..) for equations
- Fixed spacing around placed elements
- Fixed coalescing of above and below spacing if given in em units and the
font sizes differ
- Fixed handling of extent parameter of underline, overline, and strike
functions
- Fixed crash for floating placed elements with no specified vertical alignment
- Partially fixed a bug with citations in footnotes
Math
- Added gap argument for vec, mat, and cases function
- Added size argument for abs, norm, floor, ceil, and round functions
- Added reverse parameter to cases function
- Added support for multinomial coefficients to binom function
- Removed rotation argument on cancel function in favor of a new and more
flexible angle argument (Breaking change)
- Added wide constant, which inserts twice the spacing of quad
- Added csch and sech operators
- ↼, ⇀, ↔, and ⟷ can now be used as accents
- Added integral.dash, integral.dash.double, and integral.slash symbols
- Added support for specifying negative indices for augmentation lines to
position the line from the back
- Fixed default color of matrix augmentation] lines
- Fixed attachment of primes to inline expressions
- Math content now respects the text baseline setting
Performance
- Fixed a bug related to show rules in templates which would effectively
disable incremental compilation in affected documents
- Micro-optimized code in several hot paths, which brings substantial
performance gains, in particular in incremental compilations
- Improved incremental parsing, which affects the whole incremental compilation
pipeline
- Added support for incremental parsing in the CLI
- Added support for incremental SVG encoding during PDF export, which greatly
improves export performance for documents with many SVG
Tooling and Diagnostics
- Improved autocompletion for variables that are in-scope
- Added autocompletion for package imports
- Added autocompletion for labels
- Added tooltip that show which variables a function captures (when hovering
over the equals sign or arrow of the function)
- Diagnostics are now deduplicated
- Improved diagnostics when trying to apply unary + or - to types that only
support binary + and -
- Error messages now state which label or citation key isn't present in the
document or its bibliography
- Fixed a bug where function argument parsing errors where shadowed by function
execution errors (e.g. when trying to call array.sorted and passing the key
function as a positional argument instead of a named one).
Export
- Added support for configuring the document's creation date. If the date is
set to auto (the default), the PDF's creation date will be set to the current
date and time.
- Added support for configuring document keywords
- Generated PDFs now contain PDF document IDs
- The PDF creator tool metadata now includes the Typst version
Web app
- Added version picker to pin a project to an older compiler version (with
support for Typst 0.6.0+)
- Fixed desyncs between editor and compiler and improved overall stability
- The app now continues to highlight the document when typing while the
document is being compiled
Command line interface
- Added support for discovering fonts through fontconfig
- Now clears the screen instead of resetting the terminal
- Now automatically picks correct file extension for selected output format
- Now only regenerates images for changed pages when using typst watch with
PNG or SVG export
Miscellaneous Improvements
- Added version type and sys.version constant specifying the current compiler
version. Can be used to gracefully support multiple versions.
- The U+2212 MINUS SIGN is now used when displaying a numeric value, in the
repr of any numeric value and to replace a normal hyphen in text mode when
before a digit. This improves, in particular, how negative integer values
are displayed in math mode.
- Added support for specifying a default value instead of failing for remove
function in array and dictionary
- Simplified page setup guide examples
- Switched the documentation from using the word "hashtag" to the \
word "hash"
where appropriate
- Added support for array.zip without any further arguments
- Fixed crash when a plugin tried to read out of bounds memory
- Fixed crashes when handling infinite lengths
- Fixed introspection (mostly bibliography) bugs due to weak page break close
to the end of the document
Development
- Extracted typst::ide into separate typst_ide crate
- Removed a few remaining 'static bounds on &dyn World
- Removed unnecessary dependency, which reduces the binary size
- Fixed compilation of typst by itself (without typst-library)
- Fixed warnings with Nix flake when using lib.getExe
|
Log message:
textproc/typst: update to 0.7.0
Version 0.7.0 (August 7, 2023) Latest
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 and bottom-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 and nn language codes in addition to no
- 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, and tr text operators
- Renamed ident to equiv with alias eq.triple and removed ident.strict
in favor of eq.quad
- Renamed ast.sq to ast.square and integral.sq to integral.square
- Renamed .eqq modifier to .equiv (and .neqq to .nequiv) for tilde, gt,
lt, prec, and succ
- Added emptyset as alias for nothing
- Added lt.curly and gt.curly as aliases for prec and succ
- Added aleph, beth, and gimmel as alias for alef, bet, and gimel
Scripting
- Fields
- Added abs and em field to lengths
- Added ratio and length field to relative lengths
- Added x and y field to 2d alignments
- Added paint, thickness, cap, join, dash, and miter-limit field to strokes
- Accessor and utility methods
- Added dedup method to arrays
- Added pt, mm, cm, and inches method to lengths
- Added deg and rad method to angles
- Added kind, hex, rgba, cmyk, and luma method to colors
- Added axis, start, end, and inv method to directions
- Added axis and inv method to alignments
- Added inv method to 2d alignments
- Added start argument to enumerate method on arrays
- Added color.mix function
- Added mode and scope arguments to eval 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
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
its key
- 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 dependants may need fixing if they
have the same bug that the CLI world had
|