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

numbering

Applies a numbering to a sequence of numbers.

A numbering defines how a sequence of numbers should be displayed as content. It is defined either through a pattern string or an arbitrary function.

A numbering pattern consists of counting symbols, for which the actual number is substituted, their prefixes, and one suffix. The prefixes and the suffix are displayed as-is.

Example

#numbering("1.1)", 1, 2, 3) \
#numbering("1.a.i", 1, 2) \
#numbering("I – 1", 12, 2) \
#numbering(
  (..nums) => nums
    .pos()
    .map(str)
    .join(".") + ")",
  1, 2, 3,
)
Preview

Numbering patterns and numbering functions

There are multiple instances where you can provide a numbering pattern or function in Typst. For example, when defining how to number headings or figures. Every time, the expected format is the same as the one described below for the numbering parameter.

The following example illustrates that a numbering function is just a regular function that accepts numbers and returns content.

#let unary(.., last) = "|" * last
#set heading(numbering: unary)
= First heading
= Second heading
= Third heading
Preview

Parameter
Parameter
Parameters are input values for functions. Specify them in parentheses after the function name.

numbering()->
any

numbering
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.

Defines how the numbering works.

Counting symbols are 1, a, A, i, I, α, Α, , , , , , , א, , , *, ١, ۱, , , , , and . They are replaced by the number in the sequence, preserving the original case.

The * character means that symbols should be used to count, in the order of *, , , §, , . If there are more than six items, the number is represented using repeated symbols.

Suffixes are all characters after the last counting symbol. They are displayed as-is at the end of any rendered number.

Prefixes are all characters that are neither counting symbols nor suffixes. They are displayed as-is at in front of their rendered equivalent of their counting symbol.

This parameter can also be an arbitrary function that gets each number as an individual argument. When given a function, the numbering function just forwards the arguments to that function. While this is not particularly useful in itself, it means that you can just give arbitrary numberings to the numbering function without caring whether they are defined as a pattern or function.

numbers
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.
Variadic
Variadic
Variadic parameters can be specified multiple times.

The numbers to apply the numbering to. Must be non-negative.

In general, numbers are counted from one. A number of zero indicates that the first element has not yet appeared.

If numbering is a pattern and more numbers than counting symbols are given, the last counting symbol with its prefix is repeated.

Open official docs

Search