Traducción no oficial al español rioplatense, generada con IA (Claude Sonnet 5.5) bajo la dirección y revisión de Jassiel Ovando. No es una publicación de Typst GmbH ni cuenta con su aval; ante cualquier duda, prevalece la documentación oficial en inglés. ¿Un error de traducción o una sugerencia? Reportalo. Tipografía: Reforma, de PampaType.

functionDesde: siempreIr al código fuente

Una correspondencia de valores de argumentos a un valor de retorno.

Podés llamar a una función escribiendo, directamente después del nombre de la función, una lista de argumentos separados por comas entre paréntesis. Además, podés pasarle a una función cualquier cantidad de argumentos finales de bloque de contenido después de la lista normal de argumentos. Si la lista normal de argumentos quedara vacía, se puede omitir. Typst admite argumentos posicionales y con nombre. Los primeros se identifican por posición y tipo, mientras que los segundos se escriben como name: value.

En modo matemático, las llamadas a funciones tienen un comportamiento especial. Mirá la documentación de matemática para más detalles.

Ejemplo

// Call a function. #list([A], [B]) // Named arguments and trailing // content blocks. #enum(start: 2)[A][B] // Version without parentheses. #list[A][B]

Las funciones son un componente fundamental de Typst. Typst ofrece funciones para una variedad de tareas de composición. Además, el marcado que escribís está respaldado por funciones y todo el estilo se aplica a través de funciones. Esta referencia enumera todas las funciones disponibles y cómo podés usarlas. Mirá también la documentación sobre las reglas set y show para conocer otras formas de trabajar con funciones en Typst.

Funciones de elemento

Algunas funciones están asociadas a elementos como los títulos o las tablas. Cuando se las llama, crean un elemento de su tipo respectivo. A diferencia de las funciones normales, además se pueden usar en reglas set, reglas show y selectores.

Ámbitos de funciones

Las funciones pueden contener definiciones relacionadas en su propio ámbito, de forma similar a un módulo. Ejemplos de esto son assert.eq o list.item. Sin embargo, esta característica actualmente solo está disponible para funciones incorporadas.

Definir funciones

Podés definir tu propia función con un enlace let que tenga una lista de parámetros después del nombre del enlace. La lista de parámetros puede contener parámetros posicionales obligatorios, parámetros con nombre con valores por defecto y sumideros de argumentos.

El lado derecho de un enlace de función es el cuerpo de la función, que puede ser un bloque o cualquier otra expresión. Define el valor de retorno de la función y puede depender de los parámetros. Si el cuerpo de la función es un bloque de código, el valor de retorno es el resultado de unir los valores de cada expresión del bloque.

Dentro del cuerpo de una función, se puede usar la palabra clave return para salir anticipadamente y, opcionalmente, especificar un valor de retorno. Si no se da un valor de retorno explícito, el cuerpo se evalúa al resultado de unir todas las expresiones que preceden a return.

Las funciones que no devuelven ningún valor significativo devuelven none. El tipo de retorno de esas funciones no se especifica explícitamente en la documentación. (Un ejemplo de esto es array.push).

#let alert(body, fill: red) = { set text(white) set align(center) rect( fill: fill, inset: 8pt, radius: 4pt, [*Warning:\ #body*], ) } #alert[ Danger is imminent! ] #alert(fill: blue)[ KEEP OFF TRACKS ]

Importar funciones

Las funciones se pueden importar de un archivo (module) a otro con import. Por ejemplo, supongamos que definimos la función alert del ejemplo anterior en un archivo llamado foo.typ. Podemos importarla en otro archivo escribiendo import "foo.typ": alert.

Funciones sin nombre

También podés crear una función sin nombre, sin crear un enlace, especificando una lista de parámetros seguida de => y el cuerpo de la función. Si tu función tiene un solo parámetro, los paréntesis alrededor de la lista de parámetros son opcionales. Las funciones sin nombre son útiles principalmente para las reglas show, pero también como argumentos de otras funciones, como array.position.

#show "once?": it => [#it #it] once?

Nota sobre la pureza de las funciones

En Typst, todas las funciones son puras. Esto significa que, para los mismos argumentos, siempre devuelven el mismo resultado. No pueden “recordar” cosas para producir otro valor cuando se las llama por segunda vez.

La única excepción son los métodos incorporados como array.push(value). Estos pueden modificar los valores sobre los que se los llama.

Funciones
Signo de pregunta

withDesde: siempreIr al código fuente

Devuelve una función nueva a la que se le aplicaron previamente los argumentos dados.

self.with(..any) → function

arguments
any
ObligatorioPosicional
Signo de pregunta
Variádico
Signo de pregunta

Los argumentos que se aplican a la función.

whereDesde: siempreIr al código fuente

Devuelve un selector que filtra los elementos que pertenecen a esta función y cuyos campos tienen los valores de los argumentos dados.

ExpandirVer ejemplo
#show heading.where(level: 2): set text(blue) = Section == Subsection === Sub-subsection
self.where(..any) → selector

fields
any
ObligatorioPosicional
Signo de pregunta
Variádico
Signo de pregunta

Los campos por los que se filtra.