TypstDocumentation

arguments

Captured arguments to a function.

Argument Sinks

Like built-in functions, custom functions can also take a variable number of arguments. You can specify an argument sink which collects all excess arguments as ..sink. The resulting sink value is of the arguments type. It exposes methods to access the positional and named arguments.

#let format(title, ..authors) = {
  let by = authors
    .pos()
    .join(", ", last: " and ")

  [*#title* \ _Written by #by;_]
}

#format("ArtosFlow", "Jane", "Joe")
Preview

Spreading

Inversely to an argument sink, you can spread arguments, arrays and dictionaries into a function call with the ..spread operator:

#let array = (2, 3, 5)
#calc.min(..array)
#let dict = (fill: blue)
#text(..dict)[Hello]
Preview

Constructor
Question mark

Construct spreadable arguments in place.

This function behaves like let args(..sink) = sink.

arguments(
..any
) -> arguments
#let args = arguments(stroke: red, inset: 1em, [Body])
#box(..args)
Preview

arguments
any
RequiredPositional
Question mark
Variadic
Question mark

The arguments to construct.

Definitions
Question mark

pos

Returns the captured positional arguments as an array.

self.pos(
) -> array

named

Returns the captured named arguments as a dictionary.

self.named(
) -> dictionary