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

Standard library

A module that contains all globally accessible items.

Using "shadowed" definitions

The std module is useful whenever you overrode a name from the global scope (this is called shadowing). For instance, you might have used the name text for a parameter. To still access the text element, write std.text.

#let par = [My special paragraph.]
#let special(text) = {
  set std.text(style: "italic")
  set std.par.line(numbering: "1")
  text
}

#special(par)

#lorem(10)
Preview

Conditional access

You can also use this in combination with the dictionary constructor to conditionally access global definitions. This can, for instance, be useful to use new or experimental functionality when it is available, while falling back to an alternative implementation if used on an older Typst version. In particular, this allows us to create polyfills.

This can be as simple as creating an alias to prevent warning messages, for example, conditionally using pattern in Typst version 0.12, but using tiling in newer versions. Since the parameters accepted by the tiling function match those of the older pattern function, using the tiling function when available and falling back to pattern otherwise will unify the usage across all versions. Note that, when creating a polyfill, sys.version can also be very useful.

#let tiling = if "tiling" in std { tiling } else { pattern }

...
Open official docs

Search