docs/changelog/earlier.md
Breaking changes:
[1.ok] must
now be written as [1. ok]Command line interface
--font-path argument for CLIgit is not installedMiscellaneous improvements
[#set math.mat(delim: none)] or one-off with
[$mat(delim: #none, 1, 2; 3, 4)$].separator argument to term listsround function for equations[#counter(..).update(0)]{page()} and {position()} methods on
[location] type[$1.2/3.4$][$1/(2 (x)$][1.2]repeat] is used in page with automatic widthindent property of term listsReference and bibliography management
[@label][= Introduction <intro>][$ A = pi r^2 $ <area>]Introspection system for interactions between different parts of the document
counter] function
state] function
query] function
locate] function
page and x, y coordinatesNew [measure] function
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
repr]func, has, at, and locationheading.title becomes heading.body,
list.items becomes list.children, and a few more changes)Further improvements
figure] functionnumbering parameter on equation functionnumbering and
number-align parameters on page functionheader and footer
parameters do not take functions anymore. If you want to customize them
based on the page number, use the new numbering
parameter or [counter] function instead.footer-descent and
header-ascent parametersmath.formula to math.equation[#set text(font: "..")]indent to first-line-indent2 or 10terms] listWeb app improvements
smallcaps] functionpanic] functionclusters and codepoints methods
for stringsset document[#var ;][#"abc"]fill, stroke, radius, and inset
propertiesbreakable or noteval] function now expects code instead of markup and returns an
arbitrary value. Markup can still be evaluated by surrounding the string with
brackets.box] as with other
elements.{show: it => ..}
instead of {show it => ..}. This prevents intermediate states that ruin your
whole document.{auto} sizing for boxes and shapes{1fr}) widths for boxesplace] function{set document(..)} complains about being after content{not in} operationbaseline property on [box]tg and ctg operators in mathcases functioninfty to
infinity with the alias oo)[$zeta(x/2)$][$abs(-x)$]text set rule in raw show ruleGo to the announcement blog post.
[#"string"]) as
well as field access and method call without space: [#emoji.face][#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{sym}, {emoji}, and {math}{sym}symbol function{math} module
[#set math.vec(delim: "[")]lr functionlr function to scale the brackets (or just one
bracket) to a specific size manually\ character inserts a line break& character defines an alignment point[$mat(1, 2; 3, 4)$]op function, lim, max, etc.matroot function: [$root(3, x)$]abs and norm functions[|, |], and ||attach function, overridable attachments with script and limith, thin, med, thick and quad[$zeta(x)$][#show math.formula: set text("Fira Math")]calc module, abs, min, max, even, odd and mod moved theremessage argument on {assert} functionpairs method on dictionaries now returns an array of length-2 arrays
instead of taking a closure{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)}.