parElementoDesde: siempre
Una subdivisión lógica de contenido textual.
Typst reúne automáticamente los elementos en línea en párrafos. Los elementos en línea incluyen el texto, el espaciado horizontal, los boxes y las ecuaciones en línea.
Para separar párrafos, usá una línea en blanco (o un parbreak explícito). Los párrafos también se interrumpen automáticamente con cualquier elemento de bloque (como block, place o cualquier cosa que se muestre como uno de estos).
El elemento par se usa principalmente en reglas set para afectar las propiedades de los párrafos, pero también se puede usar para mostrar explícitamente su argumento como un párrafo propio. En ese caso, el cuerpo del párrafo no puede contener contenido de bloque.
Boxes y bloques
Como se explicó arriba, normalmente los párrafos solo contienen contenido en línea. Sin embargo, podés integrar cualquier tipo de contenido de bloque en un párrafo envolviéndolo en un box.
Inversamente, podés separar contenido en línea de un párrafo envolviéndolo en un block. En ese caso, no pasará a formar parte de ningún párrafo. Leé la siguiente sección para ver una explicación de por qué esto importa y en qué se diferencia de simplemente agregar saltos de párrafo alrededor del contenido.
¿Qué se convierte en un párrafo?
Cuando agregás contenido en línea a tu documento, Typst lo envolverá automáticamente en párrafos. Sin embargo, un documento típico también contiene algo de texto que, semánticamente, no es parte de un párrafo, por ejemplo en un título o un epígrafe.
Las reglas sobre cuándo Typst envuelve contenido en línea en un párrafo son las siguientes:
Todo el texto en la raíz de un documento se envuelve en párrafos.
El texto dentro de un contenedor (como un
block) solo se envuelve en un párrafo si el contenedor tiene contenido de bloque. Si todo el contenido es en línea, no se crea ningún párrafo.
En el documento ya dispuesto, no se ve de inmediato si el texto pasó a formar parte de un párrafo. Sin embargo, sigue siendo importante por varias razones:
Cierto estilo de párrafo, como
first-line-indent, solo se aplicará a párrafos propiamente dichos, no a cualquier texto. De manera similar, las reglas show deparpor supuesto solo se activan con párrafos.Una distinción adecuada entre párrafos y otro texto ayuda a las personas que dependen de tecnologías de asistencia (TA) (como los lectores de pantalla) a navegar y entender el documento correctamente.
La exportación a PDF generará una etiqueta
Psolo para los párrafos.La exportación a HTML generará una etiqueta
<p>solo para los párrafos.
Al crear componentes reutilizables personalizados, podés y deberías hacerte cargo de si Typst crea o no párrafos. Al envolver texto en un block en lugar de simplemente agregar saltos de párrafo alrededor, podés forzar la ausencia de un párrafo. Inversamente, al agregar un parbreak después de algún contenido en un contenedor, podés forzar que se convierta en un párrafo aunque sea una sola palabra. Esto es, por ejemplo, lo que hacen las listas no tight para forzar que sus elementos se conviertan en párrafos.
Ejemplo
#set par(
first-line-indent: 1em,
spacing: 0.65em,
justify: true,
)
We proceed by contradiction.
Suppose that there exists a set
of positive integers $a$, $b$, and
$c$ that satisfies the equation
$a^n + b^n = c^n$ for some
integer value of $n > 2$.
Without loss of generality,
let $a$ be the smallest of the
three integers. Then, we ...

Parámetros
leadingPor defecto: 0.65em
El espaciado entre líneas.
El interlineado (leading) define el espacio entre el borde inferior de una línea y el borde superior de la línea siguiente. Por defecto, estas dos propiedades dependen de la fuente, pero también se pueden configurar manualmente con una regla set de text.
Al establecer el borde superior, el borde inferior y el interlineado, también podés configurar una distancia constante de línea base a línea base. Podrías, por ejemplo, establecer el interlineado en 1em, el borde superior en 0.8em y el borde inferior en -0.2em para obtener un espacio entre líneas base de exactamente 2em. La distribución exacta de los valores de los bordes superior e inferior afecta los límites de la primera y la última línea.

spacingPor defecto: 1.2em
El espaciado entre párrafos.
Igual que el interlineado, define el espacio entre el borde inferior de la última línea de un párrafo y el borde superior de la primera línea del párrafo siguiente. El espaciado actúa tanto por encima como por debajo y colapsa al mayor de los valores definidos por los párrafos adyacentes.
Cuando un párrafo es adyacente a un block, la propiedad above o below de ese bloque tiene prioridad sobre el espaciado del párrafo. Los títulos, por ejemplo, reducen por defecto el espaciado que tienen debajo para lograr un mejor aspecto.
justifyPor defecto: false
Si se justifica el texto en su línea.
La separación en sílabas se habilitará en los párrafos justificados si la propiedad hyphenate de la función text está establecida en auto y se conoce el idioma actual.
Tené en cuenta que la alineación actual igualmente tiene un efecto en la ubicación de la última línea, salvo que termine con un salto de línea justificado.
Por defecto, Typst solo cambia el espaciado entre palabras para lograr la justificación. Sin embargo, también podés permitirle ajustar el espaciado entre caracteres individuales con la propiedad justification-limits.
justification-limitsPor defecto: (
spacing: (min: 66.67% + 0pt, max: 150% + 0pt),
tracking: (min: 0pt, max: 0pt),
)
spacing: (min: 66.67% + 0pt, max: 150% + 0pt),
tracking: (min: 0pt, max: 0pt),
)
Cuánto se puede ajustar el espaciado entre palabras y caracteres durante la justificación.
Al justificar texto, Typst necesita estirar o comprimir una línea hasta el ancho completo de la medida. Para lograrlo, por defecto ajusta el espaciado entre palabras. Además, también puede ajustar el espaciado entre caracteres individuales. Esta propiedad te permite configurar los límites inferior y superior de estos ajustes.
La propiedad acepta un diccionario con dos entradas, spacing y tracking, cada una con un diccionario con las claves min y max. Las claves min definen hasta qué límite inferior se pueden comprimir los espacios, mientras que las claves max definen hasta qué límite superior se pueden estirar.
La entrada
spacingdefine cuánto se puede ajustar el ancho de los espacios entre palabras. Está estrechamente relacionada context.spacingy sus clavesminymaxaceptan longitudes relativas, igual que la propiedadspacing.Un valor
minde100%significa que los espacios deben conservar su tamaño normal (es decir, no comprimirse), mientras que un valor de90% - 0.01emindicaría que un espacio se puede comprimir hasta un ancho del 90 % de su ancho normal menos 0,01 veces el tamaño de fuente actual. De manera similar, un valormaxde100% + 0.02emsignifica que el ancho de un espacio se puede aumentar en 0,02 veces el tamaño de fuente actual. La parte de proporción siempre debe ser positiva. La parte de longitud, en cambio, no debe ser positiva paraminni negativa paramax.Tené en cuenta que los espacios igualmente pueden expandirse más allá del valor
maxsi no hay otra manera de justificar la línea. Sin embargo, los demás medios de justificación (por ejemplo, separar los caracteres si la entradatrackingestá configurada en consecuencia) se usan primero hasta su máximo.La entrada
trackingdefine cuánto se puede ajustar el espaciado entre letras. Está estrechamente relacionada context.trackingy sus clavesminymaxaceptan longitudes, igual que la propiedadtracking. A diferencia despacing, no acepta longitudes relativas, porque la base de la longitud relativa variaría para cada carácter, lo que llevaría a un aspecto visual desparejo. El comportamiento en comparación conspacinges como si la base fuera100%.Por lo demás, los valores
minymaxfuncionan igual que paraspacing. Un valormaxde0.01emsignifica que se puede insertar un espaciado adicional de 0,01 veces el tamaño de fuente actual entre cada par de caracteres. Tené en cuenta que esto también incluye los espacios entre espacios y caracteres, por lo que, para los espacios, los valores detrackingactúan además de los valores despacing.
Si solo especificás uno de spacing o tracking, el otro conserva su valor establecido previamente (o el valor por defecto si no se había establecido).
Si querés habilitar la justificación por carácter, un buen valor para las claves min y max ronda entre 0.01em y 0.02em (negado para min). Usar el mismo valor para ambas da una buena base, pero ajustar los dos valores individualmente puede producir resultados más equilibrados, como demuestra el ejemplo de abajo. Tené cuidado de no establecer los límites demasiado amplios, ya que rápidamente se ve poco natural.
La justificación por carácter es una técnica microtipográfica de gran impacto que puede mejorar el aspecto del texto justificado, especialmente en columnas angostas. Tené en cuenta, sin embargo, que la justificación por carácter no funciona con todas las fuentes ni idiomas. Por ejemplo, las fuentes cursivas conectan las letras. Usar la justificación por carácter llevaría a conexiones irregulares.
Ver ejemplo: Justificación por carácter
#let example(name) = columns(2, gutter: 10pt)[
#place(top, float: true, scope: "parent", strong(name))
/* Text from https://en.wikipedia.org/wiki/Anne_Bayley */
]
#set page(width: 440pt, height: 21em, margin: 15pt)
#set par(justify: true)
#set text(size: 0.8em)
#grid(
columns: (1fr, 1fr),
gutter: 20pt,
{
// These are Typst's default limits.
set par(justification-limits: (
spacing: (min: 100% * 2 / 3, max: 150%),
tracking: (min: 0em, max: 0em),
))
example[Word-level justification]
},
{
// These are our custom character-level limits.
set par(justification-limits: (
tracking: (min: -0.01em, max: 0.02em),
))
example[Character-level justification]
},
)

linebreaksPor defecto: auto
Cómo determinar los saltos de línea.
Cuando esta propiedad se establece en auto, su valor por defecto, se usarán saltos de línea optimizados para los párrafos justificados. Habilitar los saltos de línea optimizados para párrafos sin justificar también puede valer la pena para mejorar el aspecto del texto.
Ver ejemplo
#set page(width: 207pt)
#set par(linebreaks: "simple")
Some texts feature many longer
words. Those are often exceedingly
challenging to break in a visually
pleasing way.
#set par(linebreaks: "optimized")
Some texts feature many longer
words. Those are often exceedingly
challenging to break in a visually
pleasing way.

| Variante | Detalles |
|---|---|
"simple" | Determina los saltos de línea con un estilo simple de primer ajuste (first-fit). |
"optimized" | Optimiza los saltos de línea para todo el párrafo. Typst intenta producir líneas de texto más parejas considerando todo el párrafo al calcular los saltos de línea. |
first-line-indentPor defecto: (amount: 0pt, all: false)
La sangría que debe tener la primera línea de un párrafo.
Por defecto, solo se indentará la primera línea de un párrafo consecutivo (no el primero del documento o del contenedor, ni los párrafos que siguen inmediatamente a otros elementos de bloque).
Si en cambio querés indentar todos los párrafos, podés pasar un diccionario que contenga la cantidad (amount) de sangría como longitud y el par all: true. Cuando se omite all del diccionario, su valor por defecto es false.
Por convención tipográfica, los saltos de párrafo se indican con algo de espacio entre párrafos o con primeras líneas con sangría. Considerá
- reducir el
spacingdel párrafo alleadingusandoset par(spacing: 0.65em) - aumentar el
spacingdel bloque (que hereda por defecto el espaciado del párrafo) al espaciado de párrafo original usandoset block(spacing: 1.2em)
Ver ejemplo
#set block(spacing: 1.2em)
#set par(
first-line-indent: 1.5em,
spacing: 0.65em,
)
The first paragraph is not affected
by the indent.
But the second paragraph is.
#line(length: 100%)
#set par(first-line-indent: (
amount: 1.5em,
all: true,
))
Now all paragraphs are affected
by the first line indent.
Even the first one.

hanging-indentPor defecto: 0pt
La sangría que deben tener todas las líneas de un párrafo excepto la primera.
Ver ejemplo
#set par(hanging-indent: 1em)
#lorem(15)

body
El contenido del párrafo.
Funciones
lineElementoDesde: 0.12.0
Una línea de párrafo.
Este elemento se usa exclusivamente para configurar los números de línea mediante reglas set y no se puede ubicar.
La opción numbering se usa para habilitar los números de línea especificando un formato de numeración.
Ver ejemplo
#set par.line(numbering: "1")
Roses are red. \
Violets are blue. \
Typst is there for you.

La opción numbering toma un patrón de numeración predefinido o una función que devuelva contenido con estilo. Podés desactivar los números de línea del texto dentro de ciertos elementos estableciendo la numeración en none con reglas show-set.
Ver ejemplo
// Styled red line numbers.
#set par.line(
numbering: n => text(red)[#n]
)
// Disable numbers inside figures.
#show figure: set par.line(
numbering: none
)
Roses are red. \
Violets are blue.
#figure(
caption: [Without line numbers.]
)[
Lorem ipsum \
dolor sit amet
]
The text above is a sample \
originating from distant times.

Este elemento expone más opciones que se pueden usar para controlar otros aspectos de la numeración de líneas, como su alineación o su margen. Además, podés controlar si la numeración se reinicia en cada página mediante la opción numbering-scope.
numberingPor defecto: none
Cómo numerar cada línea. Acepta un patrón o función de numeración que toma un único número.
Ver ejemplo
#set par.line(numbering: "I")
Roses are red. \
Violets are blue. \
Typst is there for you.

Ver ejemplo
#set par.line(
numbering: i => if calc.rem(i, 5) == 0 or i == 1 { i },
)
#lorem(60)

number-alignPor defecto: auto
La alineación de los números de línea asociados a cada línea.
El valor por defecto auto indica un valor inteligente en el que los números crecen horizontalmente alejándose del texto, teniendo en cuenta el margen en el que están y la dirección de texto actual.
Ver ejemplo
#set par.line(
numbering: "I",
number-align: left,
)
Hello world! \
Today is a beautiful day \
For exploring the world.

number-marginPor defecto: start
El margen en el que aparecen los números de línea.
Nota: En un documento de varias columnas, los números de línea de los párrafos dentro de la última columna siempre aparecerán en el margen end (margen derecho para texto de izquierda a derecha y margen izquierdo para texto de derecha a izquierda), sin importar esta configuración. Ese comportamiento no se puede cambiar por el momento.
Ver ejemplo
#set par.line(
numbering: "1",
number-margin: right,
)
= Report
- Brightness: Dark, yet darker
- Readings: Negative

number-clearancePor defecto: auto
La distancia entre los números de línea y el texto.
El valor por defecto auto produce un espacio que se adapta al ancho de la página y da resultados razonables en la mayoría de los casos.
Ver ejemplo
#set par.line(
numbering: "1",
number-clearance: 4pt,
)
Typesetting \
Styling \
Layout

numbering-scopePor defecto: "document"
Controla cuándo se reinicia la numeración de líneas.
Nota: El ámbito de la numeración de líneas debe ser uniforme en cada serie de páginas (una serie de páginas es una secuencia de páginas sin un salto de página explícito entre ellas). Por este motivo, las reglas set para él deberían definirse antes de cualquier contenido de página, normalmente al comienzo del documento.
Ver ejemplo
#set par.line(
numbering: "1",
numbering-scope: "page",
)
First line \
Second line
#pagebreak()
First line again \
Second line again


| Variante | Detalles |
|---|---|
"document" | Indica que el contador de números de línea abarca todo el documento, es decir, nunca se reinicia automáticamente. |
"page" | Indica que el contador de números de línea se reinicia al comienzo de cada página nueva. |