Documentation

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
Question mark
Go to source

A base with optional attachments.

ExpandView 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
content
RequiredPositional
Question mark

The base to which things are attached.

t
none or content
Settable
Question mark
Default: 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.

b
none or content
Settable
Question mark
Default: 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.

tl
none or content
Settable
Question mark
Default: none

The top-left attachment (before the base).

bl
none or content
Settable
Question mark
Default: none

The bottom-left attachment (before base).

tr
none or content
Settable
Question mark
Default: none

The top-right attachment (after the base).

br
none or content
Settable
Question mark
Default: none

The bottom-right attachment (after the base).

scriptsElement
Question mark
Go to source

Forces a base to display attachments as scripts.

ExpandView example
$ scripts(sum)_1^2 != sum_1^2 $
math.scripts(content) → content

body
content
RequiredPositional
Question mark

The base to attach the scripts to.

limitsElement
Question mark
Go to source

Forces a base to display attachments as limits.

ExpandView example
$ limits(A)_1^2 != A_1^2 $
math.limits() → content

body
content
RequiredPositional
Question mark

The base to attach the limits to.

inline
bool
Settable
Question mark
Default: 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.