Info
This site is generated using the static site generator developed by the Typst Community. Please adjust the text content of this banner according to your usage requirements. At Typst GmbH's request, when publishing documentation, you must clearly indicate that it is non-official and display the version of Typst being documented. For details, refer to Issue #874 on typst/typst.
TypstDocumentEnglish
v0.dev.2025-09-12

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) $
Preview

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.

Function

attach
Element
Element
Element functions can be customized with set and show rules.

A base with optional attachments.

$ attach(
  Pi, t: alpha, b: beta,
  tl: 1, tr: 2+3, bl: 4+5, br: 6,
) $
Preview

base
Required
Required
Required parameters must be specified when calling the function.
Positional
Positional
Positional parameters can be set by specifying them in order, omitting the parameter name.

The base to which things are attached.

t
Settable
Settable
Settable parameters can be set using the set rule, changing the default value used thereafter.

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.

Default value:

none

b
Settable
Settable
Settable parameters can be set using the set rule, changing the default value used thereafter.

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.

Default value:

none

tl
Settable
Settable
Settable parameters can be set using the set rule, changing the default value used thereafter.

The top-left attachment (before the base).

Default value:

none

bl
Settable
Settable
Settable parameters can be set using the set rule, changing the default value used thereafter.

The bottom-left attachment (before base).

Default value:

none

tr
Settable
Settable
Settable parameters can be set using the set rule, changing the default value used thereafter.

The top-right attachment (after the base).

Default value:

none

br
Settable
Settable
Settable parameters can be set using the set rule, changing the default value used thereafter.

The bottom-right attachment (after the base).

Default value:

none

scripts
Element
Element
Element functions can be customized with set and show rules.

Forces a base to display attachments as scripts.

math.scripts()->
$ scripts(sum)_1^2 != sum_1^2 $
Preview

body
Required
Required
Required parameters must be specified when calling the function.
Positional
Positional
Positional parameters can be set by specifying them in order, omitting the parameter name.

The base to attach the scripts to.

limits
Element
Element
Element functions can be customized with set and show rules.

Forces a base to display attachments as limits.

$ limits(A)_1^2 != A_1^2 $
Preview

body
Required
Required
Required parameters must be specified when calling the function.
Positional
Positional
Positional parameters can be set by specifying them in order, omitting the parameter name.

The base to attach the limits to.

inline
Settable
Settable
Settable parameters can be set using the set rule, changing the default value used thereafter.

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.

Default value:

true

Open official docs

Search