Attach
Subscript, superscripts, and limits.
Attachments can be displayed either as sub/superscripts, or limits. Typst automatically decides which is more suitable depending on the base, but you can also control this manually with the scripts and limits functions.
If you want the base to stretch to fit long top and bottom attachments (for example, an arrow with text above it), use the stretch function.
Example
$ sum_(i=0)^n a_i = 2^(1+i) $

Syntax
This function also has dedicated syntax for attachments after the base: Use the underscore (_) to indicate a subscript i.e. bottom attachment and the hat (^) to indicate a superscript i.e. top attachment.
Functions
attachElement
A base with optional attachments.
View example
$ attach(
Pi, t: alpha, b: beta,
tl: 1, tr: 2+3, bl: 4+5, br: 6,
) $

If you want to add accents (hats, tildes, arrows, etc.) instead of scripts or corner attachments, use the accent function instead.
base
The base to which things are attached.
tDefault: none
The top attachment, smartly positioned at top-right or above the base.
You can wrap the base in limits() or scripts() to override the smart positioning.
bDefault: none
The bottom attachment, smartly positioned at the bottom-right or below the base.
You can wrap the base in limits() or scripts() to override the smart positioning.
tlDefault: none
The top-left attachment (before the base).
blDefault: none
The bottom-left attachment (before base).
trDefault: none
The top-right attachment (after the base).
brDefault: none
The bottom-right attachment (after the base).
scriptsElement
Forces a base to display attachments as scripts.
View example
$ scripts(sum)_1^2 != sum_1^2 $

body
The base to attach the scripts to.
limitsElement
Forces a base to display attachments as limits.
View example
$ limits(A)_1^2 != A_1^2 $

body
The base to attach the limits to.
inlineDefault: true
Whether to also force limits in inline equations.
When applying limits globally (e.g., through a show rule), it is typically a good idea to disable this.