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.

Sintaxis

Typst es un lenguaje de marcado. Esto significa que podés usar una sintaxis simple para resolver tareas comunes de diseño. La sintaxis de marcado liviana se complementa con reglas set y show, que te permiten dar estilo a tu documento de forma fácil y automática. Todo esto está respaldado por un lenguaje de scripting estrechamente integrado, con funciones incorporadas y definidas por el usuario.

Modos

Typst tiene tres modos sintácticos: marcado, matemático y código. El modo marcado es el que se usa por defecto en un documento de Typst, el modo matemático te permite escribir fórmulas matemáticas y el modo código te permite usar las funciones de scripting de Typst.

Podés cambiar a un modo específico en cualquier momento consultando la siguiente tabla:

Modo nuevoSintaxisEjemplo
CódigoAnteponé # al códigoNumber: #(1 + 2)
MatemáticaRodeá la ecuación con $..$$-x$ is the opposite of $x$
MarcadoRodeá el marcado con [..]let name = [*Typst!*]

Una vez que entraste al modo código con #, no necesitás usar más numerales, a menos que hayas vuelto al modo marcado o matemático en el medio.

Marcado

Typst ofrece marcado incorporado para los elementos de documento más comunes. La mayoría de los elementos de sintaxis son simples atajos de la función correspondiente. La tabla de abajo enumera todo el marcado disponible y enlaza al mejor lugar para aprender más sobre su sintaxis y uso.

NombreEjemploVer
Salto de párrafoLínea en blancoparbreak
Énfasis fuerte*strong*strong
Énfasis_emphasis_emph
Texto sin formato (raw)`print(1)`raw
Enlacehttps://typst.app/link
Etiqueta<intro>label
Referencia@introref
Título= Headingheading
Lista con viñetas- itemlist
Lista numerada+ itemenum
Lista de términos/ Term: descriptionterms
Matemática$x^2$Matemática
Salto de línea\linebreak
Comillas inteligentes'single' or "double"smartquote
Atajo de símbolo~, ---Símbolos
Expresión de código#rect(width: 1cm)Scripting
Escape de carácterTweet at us \#adMás abajo
Comentario/* block */, // lineMás abajo

Modo matemático

El modo matemático es un modo de marcado especial que se usa para componer fórmulas matemáticas. Se activa envolviendo una ecuación entre caracteres $. Funciona tanto en marcado como en código. La ecuación se compone en su propio bloque si empieza y termina con al menos un espacio (por ejemplo, $ x^2 $). Se puede producir matemática en línea omitiendo los espacios (por ejemplo, $x^2$). A continuación, una descripción general de la sintaxis específica del modo matemático:

NombreEjemploVer
Matemática en línea$x^2$Matemática
Matemática en bloque$ x^2 $Matemática
Adjunto inferior$x_1$attach
Adjunto superior$x^2$attach
Fracción$1 + (a+b)/5$frac
Salto de línea$x \ y$linebreak
Punto de alineación$x &= 2 \ &= 3$Matemática
Acceso a variable$#x$, $pi$Matemática
Acceso a campo$arrow.r.long$Scripting
Multiplicación implícita$x y$Matemática
Atajo de símbolo$->$, $!=$Símbolos
Texto/cadena en matemática$a "is natural"$Matemática
Llamada a función matemática$floor(x)$Matemática
Expresión de código$#rect(width: 1cm)$Scripting
Escape de carácter$x\^2$Más abajo
Comentario$/* comment */$Más abajo

Modo código

Dentro de los bloques y las expresiones de código, se pueden iniciar expresiones nuevas sin un carácter # inicial. Muchos elementos sintácticos son específicos de las expresiones. A continuación, una tabla con toda la sintaxis disponible en el modo código:

NombreEjemploVer
Ningunononenone
Autoautoauto
Booleanofalse, truebool
Entero10, 0xffint
Número de punto flotante3.14, 1e5float
Longitud2pt, 3mm, 1em, ..length
Ángulo90deg, 1radangle
Fracción2frfraction
Proporción50%ratio
Cadena de texto"hello"str
Etiqueta<intro>label
Matemática$x^2$Matemática
Texto sin formato (raw)`print(1)`raw
Acceso a variablexScripting
Bloque de código{ let x = 1; x + 2 }Scripting
Bloque de contenido[*Hello*]Scripting
Expresión entre paréntesis(1 + 2)Scripting
Array(1, 2, 3)Array
Diccionario(a: "hi", b: 2)Diccionario
Operador unario-xScripting
Operador binariox + yScripting
Asignaciónx = 1Scripting
Acceso a campox.yScripting
Llamada a métodox.flatten()Scripting
Llamada a funciónmin(x, y)Función
Expansión de argumentosmin(..nums)Argumentos
Función sin nombre(x, y) => x + yFunción
Enlace letlet x = 1Scripting
Función con nombrelet f(x) = 2 * xFunción
Regla setset text(14pt)Estilos
Regla set-ifset text(..) if .. Estilos
Regla show-setshow heading: set block(..)Estilos
Regla show con funciónshow raw: it => {..}Estilos
Regla show de todoshow: templateEstilos
Expresión de contextocontext text.langContexto
Condicionalif x == 1 {..} else {..}Scripting
Bucle forfor x in (1, 2, 3) {..}Scripting
Bucle whilewhile x < 10 {..}Scripting
Control de flujo del buclebreak, continueScripting
Retorno de una funciónreturn xFunción
Incluir un móduloinclude "bar.typ"Scripting
Importar un móduloimport "bar.typ"Scripting
Importar elementos de un móduloimport "bar.typ": a, b, cScripting
Comentario/* block */, // lineMás abajo

Comentarios

Typst ignora los comentarios y no los incluye en la salida. Esto es útil para excluir versiones viejas o para agregar anotaciones. Para comentar una sola línea, empezala con //:

// our data barely supports // this claim We show with $p < 0.05$ that the difference is significant.

Los comentarios también se pueden envolver entre /* y */. En ese caso, el comentario puede abarcar varias líneas:

Our study design is as follows: /* Somebody write this up: - 1000 participants. - 2x2 data design. */

Secuencias de escape

Las secuencias de escape se usan para insertar caracteres especiales que son difíciles de escribir o que tienen un significado especial en Typst. Para escapar un carácter, anteponele una barra invertida. Para insertar cualquier punto de código Unicode, podés escribir una secuencia de escape hexadecimal: \u{1f600}. El mismo tipo de secuencias de escape también funciona en las cadenas de texto.

I got an ice cream for \$1.50! \u{1f600}

Identifiers

Los nombres de variables, funciones, etcétera (identificadores) pueden contener letras, números, guiones (-) y guiones bajos (_). Tienen que empezar con una letra o un guion bajo.

Más específicamente, la sintaxis de los identificadores en Typst se basa en el Anexo Nº 31 del Estándar Unicode, con dos extensiones: permitir _ como carácter inicial y permitir tanto _ como - como caracteres de continuación.

Para los identificadores de varias palabras, la convención de mayúsculas y minúsculas recomendada es el kebab case. En kebab case, las palabras se escriben en minúsculas y separadas por guiones (como en top-edge). Esto es especialmente relevante cuando desarrollás módulos y paquetes para que otros los usen, ya que mantiene las cosas predecibles.

#let kebab-case = [Using hyphen] #let _schön = "😊" #let 始料不及 = "😱" #let π = calc.pi #kebab-case #if -π < 0 { _schön } else { 始料不及 } // -π means -1 * π, // so it's not a valid identifier