Typst 0.14.0 (24/10/2025)
Novedades destacadas
- Typst ahora produce de forma nativa PDF accesibles, con soporte opcional para verificaciones más estrictas y conformidad con PDF/UA-1
- Typst ahora admite todos los estándares PDF/A
- Ahora se pueden usar PDF como imágenes (gracias a @LaurenzV)
- Se agregó compatibilidad con la justificación por carácter (puede mejorar mucho el aspecto del texto justificado)
- Se agregó compatibilidad con muchos más elementos integrados en la exportación a HTML
- Se agregó una API HTML tipada (p. ej.,
html.div) con atributos tipados individualmente - Se agregó compatibilidad con varios encabezados y subencabezados en las tablas
- Se agregó el elemento
titlepara mostrar el título del documento - Se agregó la propiedad
frac.stylepara producir fracciones oblicuas y en línea
Exportación a PDF
La exportación a PDF se reescribió por completo para usar la nueva biblioteca krilla, lo que corrige varios errores y permite muchas mejoras. Más abajo se enumeran las correcciones conocidas, pero probablemente haya otros cambios en el comportamiento de la salida. Si detectás alguna regresión, por favor reportala en GitHub. (¡Gracias a @LaurenzV por crear krilla!)
Typst ahora produce PDF accesibles de forma nativa. Esos documentos son aptos para su consumo en una amplia variedad de circunstancias. Eso no incluye solo el consumo por parte de personas con discapacidades permanentes o temporales, sino también de quienes usan otros dispositivos o tienen otras preferencias.
- Los PDF de Typst ahora están etiquetados por defecto. Las etiquetas (tags) son metadatos enriquecidos que los visores de PDF pueden usar para que el documento se pueda consumir de otras formas además de la visual (p. ej., mediante un lector de pantalla).
- Además, Typst ahora puede emitir documentos conformes con el estándar PDF/UA-1. (PDF/UA-2 todavía no está admitido, pero está planeado.)
- Cada vez hay más legislación vigente y futura que exige que los documentos sean accesibles, por ejemplo, la Ley Europea de Accesibilidad y la Ley de Estadounidenses con Discapacidades.
- Para más detalles sobre todo esto, leé la nueva Guía de accesibilidad.
- Typst ahora admite todos los estándares PDF/A: PDF/A-1b, PDF/A-1a, PDF/A-2b, PDF/A-2u, PDF/A-2a, PDF/A-3b, PDF/A-3u, PDF/A-3a, PDF/A-4, PDF/A-4f y PDF/A-4e. Consultá la documentación ampliada de PDF/A para saber cómo elegir un estándar adecuado.
- Typst ahora admite las versiones de PDF 1.4, 1.5, 1.6 y 2.0, además de PDF 1.7. Consultá la sección correspondiente de la documentación de PDF para ver los detalles.
- Se agregó la función
pdf.artifactpara marcar contenido como carente de significado semántico - Se agregaron las funciones experimentales
pdf.header-cell,pdf.data-cellypdf.table-summarypara mejorar la accesibilidad de documentos con tablas complejas. Estas funciones están protegidas por la característicaa11y-extras. No tienen una interfaz definitiva y se eliminarán en el futuro, ya sea integrándolas en las funciones de tablas o eliminándolas por completo. - Los marcadores de títulos del PDF ahora contienen la numeración del título
- Se renombró
pdf.embedapdf.attach(el nombre anterior seguirá existiendo como alias obsoleto hasta Typst 0.15) - Ahora se comprueba la corrección sintáctica de la propiedad
mimedepdf.attach(Cambio incompatible menor) - Se corrigió el análisis del argumento
datadepdf.attach - Los archivos adjuntos ahora determinan de forma inteligente si deben comprimirse
- Se renombró
Extracción de texto (es decir, copiar y pegar)
- Ahora funciona correctamente incluso cuando varios caracteres distintos dan como resultado el mismo glifo
- Los espacios entre palabras en los que se produjo un salto de línea natural ahora se conservan correctamente para la extracción de texto
- Se corrigió la asignación de los artefactos de separación silábica a texto Unicode
- Ahora funciona correctamente incluso cuando varios caracteres distintos dan como resultado el mismo glifo
Imágenes
- Las imágenes CMYK ahora funcionan correctamente en la exportación a PDF
- Se mejoró la exportación de texto en imágenes SVG con un filtro
- Se mejoró la compatibilidad de las imágenes SVG con el motor de renderizado Quartz (el que usa Vista Previa de Apple)
- Se mejoró el manejo de imágenes SVG con gran profundidad de anidamiento de grupos
- Las imágenes CMYK ahora funcionan correctamente en la exportación a PDF
- Se corrigió un error con el texto en patrones
- Se corrigieron los degradés con transparencia
Exportación a HTML
Se agregó compatibilidad con muchos más elementos integrados (ahora la categoría Modelo está totalmente cubierta)
- El elemento
image - Los elementos
footnoteyfootnote.entry - Los elementos
outlineyoutline.entry - El elemento
bibliography - El elemento
smartquote - Los elementos
subysuper - Los elementos
underline,overline,strikeyhighlight - El elemento
smallcaps - Las funciones
loweryupper
- El elemento
Se agregó una API HTML tipada (p. ej.,
html.div) con atributos tipados individualmente- Por ejemplo, para generar un elemento
videoahora podés escribir#html.video(width: 400, src: "sunrise.mp4")en lugar de#html.elem("video", attrs: (width: "400", src: "sunrise.mp4")). Fijate que el atributowidthtoma un entero en lugar de una cadena de texto.
- Por ejemplo, para generar un elemento
- Se agregó compatibilidad con destinos de
linkdentro del mismo documento El elemento
raw- Se agregó compatibilidad con resaltado de sintaxis
- Los elementos
rawde bloque ahora emiten tanto una etiqueta<code>como una<pre> - La etiqueta de lenguaje de los elementos
rawahora se conserva como atributodata-langen la etiqueta<code>
- Se agregó compatibilidad con resaltado de sintaxis
- Las propiedades
authorsykeywordsde la funcióndocumentahora producen las etiquetas HTML<meta>correspondientes - La función
html.elemahora admite nombres de elementos HTML personalizados - Se mejoró la codificación de
html.frame - Los atributos vacíos ahora se codifican con sintaxis abreviada (p. ej.,
<div hidden></div>) - El espaciado horizontal débil de tamaño cero (
h(0pt, weak: true)) ya no causa la advertencia “was ignored during HTML export”, por lo que se puede usar para eliminar los espacios circundantes sin producir ninguna salida, como en la exportación paginada - Se corrigió la codificación de los elementos
<pre>y<textarea>que empiezan con un salto de línea - Se corrigió la codificación de los elementos de texto sin procesar
- Se corrigió el dimensionamiento de
html.frame - Se corrigió
measureen la exportación a HTML - Se corrigieron los
html.frameanidados - Se corrigió que un
boxsin cuerpo se ignorara en la exportación a HTML - Se corrigió la codificación de los espacios en blanco en HTML
Exportación a SVG
- Se agregó compatibilidad con glifos de color de tipo COLR
- Se redujo la cantidad de elementos de agrupación
<g>que se generan
Exportación a PNG
- Se corrigió un fallo cuando el tamaño del texto es negativo
Visualización
- Se agregó compatibilidad para usar PDF como imágenes mediante la nueva biblioteca
hayro. Los PDF se incrustan directamente en la exportación a PDF, se rasterizan en la exportación a PNG y se convierten en SVG en las exportaciones a SVG y HTML. (¡Gracias a @LaurenzV por crear hayro!) - Se agregó compatibilidad con imágenes WebP
- Varias mejoras menores para imágenes SVG (ver los registros de cambios de resvg 0.44 y 0.45)
- Las imágenes SVG ahora pueden referirse a archivos de imagen externos
- Los trazados de recorte ahora tienen un suavizado de bordes (anti-aliasing) correcto
- Se corrigieron los degradés en curvas cuyo último segmento es
curve.line - Se corrigió el manejo de las terminaciones de trazo en formas con trazos parciales
- Se corrigió el manejo del radio de las esquinas en formas con trazos parciales
- Se corrigió un fallo al muestrear entre dos paradas de degradé coincidentes
Diseño
- Se agregó compatibilidad opcional con la justificación por carácter, además de la justificación por palabra, que se configura con la nueva propiedad
par.justification-limits. Es una técnica microtipográfica de gran impacto que puede mejorar mucho el aspecto del texto justificado. - Se corrigieron oportunidades de salto de línea erróneas relacionadas con los caracteres de reemplazo de objetos
- Se corrigió un problema por el cual un bloque divisible entre páginas igualmente producía un segmento vacío aunque no entrara nada en el primer segmento, lo que causaba varios comportamientos indeseados en combinación con rellenos, trazos y adherencia
- Se corrigió un fallo con una regla set de columnas o filas combinadas en una celda de grilla
- Se corrigió el espaciado entre CJK y latín en saltos de línea manuales
y en los límites de subíndices y superíndices
Matemática
- Se agregó la propiedad
frac.stylecon nuevas opciones para fracciones oblicuas y en línea - Se agregó la propiedad
math.equation.altpara establecer una descripción alternativa de una ecuación Manejo de texto
- Una misma ecuación ahora puede usar varias fuentes
- El diseño de glifos en matemática ahora usa un modelado de texto (text shaping) adecuado, lo que permite manejar mejor las características más complejas de Unicode
- Los caracteres generados en una ecuación (p. ej., el
√que producesqrt) ahora pueden ser el objetivo de reglas show de texto - Se agregó la función
scrpara el estilo de fuente script de caligrafía redondeada - Se agregó el parámetro
dotlessaaccent(normalmente para renderizar una i o una j acentuadas sin punto) - Ahora se prefieren los glifos de estilo script en tamaños matemáticos reducidos
- Se corrigió
text.strokeen matemática - Ahora se evitan los ensamblajes de glifos rotos incluso cuando los datos de la fuente son incorrectos
- Una misma ecuación ahora puede usar varias fuentes
Diseño
- Se corrigió un error en el posicionamiento vertical de los acentos
- Se corrigió el posicionamiento de los acentos inferiores
- Se corrigió un error en el diseño de las raíces
- Se mejoró el diseño de
vecycases, para que sea coherente conmat - Se eliminó la oportunidad de salto de línea antes de un paréntesis de cierre en la matemática en línea
- Se corrigió un error en el posicionamiento vertical de los acentos
- Ahora puede haber una línea
augmental comienzo y al final de una matriz, no solo entre columnas y filas - Los atajos y los números de varios caracteres ya no se unen más fuerte que las fracciones en casos como
$x>=(y)/z$(Cambio incompatible menor)
- Los argumentos con nombre pasados a símbolos usados como función ahora producen un error en lugar de ignorarse silenciosamente
(Cambio incompatible menor)
- El elemento
midya no impone la clase matemática"large"a su contenido y, en cambio, usa por defecto"relation" - Se corrigió un error en el análisis de matemática cuando
..no va seguido de nada - Se corrigió la clase matemática predeterminada de ⅋, ⎰, ⟅, ⎱, ⟆, ⟇ y ،
¡Gracias a @mkorje por su trabajo en matemática!
Modelo
Tablas
- Se agregó compatibilidad con varios encabezados y subencabezados en las tablas
- Los encabezados de tabla ahora fuerzan un salto de fila, es decir, una fila incompleta antes de un encabezado no se completará con celdas posteriores al encabezado
- Se corrigió un error por el cual los encabezados y pies podían expandirse accidentalmente para contener celdas que no son de encabezado
- Se agregó compatibilidad con varios encabezados y subencabezados en las tablas
- Se agregó el elemento
titlepara mostrar el título del documento - Se agregó la propiedad
figure.altpara establecer una descripción alternativa de una figura - Las áreas de clic de los enlaces en el texto ahora son algo más grandes en vertical, para evitar problemas con la detección automática de enlaces en los visores de PDF
- La función
linkahora produce un error cuando se le pasa una cadena vacía como URL(Cambio incompatible menor)
- El valor del argumento
numberdeenum.itemahora tomaautoen lugar denonepara la numeración automática(Cambio incompatible menor)
- Se mejoró el espaciado de las listas compactas anidadas
- Se corrigió que
quotes: falsese ignorara en las citas en línea - Se corrigió la sangría francesa de los títulos numerados y centrados
- Se corrigió que las reglas show de
footnote.entryrompieran los enlaces de la nota al pie a su entrada - La numeración hebrea ya no agrega Geresh ni Gershayim
Bibliografía
Estilos integrados
- Se actualizaron los estilos a sus últimas versiones CSL de upstream
- Se renombró
"chicago-fullnotes"a"chicago-notes"(el nombre anterior sigue existiendo como alias obsoleto) - Se renombró
"modern-humanities-research-association"a"modern-humanities-research-association-notes"(el nombre anterior sigue existiendo como alias obsoleto) - Se agregó compatibilidad con localizador/suplemento en el estilo alfanumérico
- Se actualizaron los estilos a sus últimas versiones CSL de upstream
Formato Hayagriva
- Se agregó el campo
chapter, correspondiente achapter-numberde CSL y achapterde BibLaTeX
- Se agregó el campo
Formato BibLaTeX
- Se corrigió el análisis de rangos de páginas alfanuméricos
- Se agregó compatibilidad con la sintaxis de comentarios con
% - Se corrigió el análisis de comandos de un solo carácter separados por espacios
- Se agregó el alias “primaryclass” para el campo “eprintclass”
- Se agregó compatibilidad con el campo
languagede BibLaTeX - Se mejoró la traducción de los campos de BibLaTeX a
genreyserial-number
- Se corrigió el análisis de rangos de páginas alfanuméricos
Manejo de CSL
- El renderizado de la bibliografía ahora usa
strong,emphysmallcapspara expresar los estilos de fuente de CSL en lugar de ajustar directamente el estilo detext, lo que facilita darle estilo - Se agregó compatibilidad con estaciones del año en las fechas, que se muestran cuando falta el mes
- Los términos “AD” y “BC” ahora se toman correctamente de la configuración regional elegida
- Se corrigió cómo las citas subsiguientes con suplementos distintos se traducen a las posiciones
ibideibid-with-locatorde CSL - Se corrigió el manejo de las posiciones
ibideibid-with-locatoren los estilos - Se corrigió la condición
locationen estilos CSL para citas sin localizador - Se corrigió que los accesos al sufijo del año produjeran renderizados CSL incorrectos
- Se corrigió una regresión por la cual las variables de página ya no se admitían en los elementos
<number>de los estilos - Se corrigió el ordenamiento y el formato de las partes de los nombres
- Se corrigió la unificación de sufijos de año
- Se corrigieron los delimitadores en el formato de fechas específico de cada idioma
- Se corrigió el renderizado de los ordinales de fechas
- Se corrigió el renderizado y el ordenamiento de fechas con años a. C.
- Se corrigió el ordenamiento con valores de orden vacíos
- El renderizado de la bibliografía ahora usa
Texto
- Las funciones
subysuperahora usan las características de fuente OpenTypesubsysupsen lugar de caracteres Unicode especiales para los subíndices y superíndices tipográficos, lo que corrige problemas semánticos, de tamaño y de posicionamiento El elemento
raw- Se retocó el esquema de colores de resaltado de sintaxis predeterminado del texto
rawpara que los colores sean más accesibles - Las claves y los valores de cadena de JSON ahora usan colores distintos en el tema de resaltado de sintaxis predeterminado de
raw - Se corrigió un fallo cuando una sintaxis de
rawcontiene una barra invertida final sin escapar - Se corrigió la sangría con tabulaciones en texto
rawcon terminadores de línea CRLF
- Se retocó el esquema de colores de resaltado de sintaxis predeterminado del texto
Traducciones
- Se agregaron traducciones de términos (un término es la “Sección” de “Sección 1”) para muchos idiomas nuevos, importando traducciones preexistentes de paquetes de LaTeX
- Se agregaron traducciones de términos para indonesio
, letón
, croata
, lituano
, francés
, francés (Canadá)
, gallego
, neerlandés
, danés
, esloveno
, italiano
, chino
, español
e irlandés (gaélico)
- Se mejoraron las traducciones de términos para checo
, sueco
, gallego
, neerlandés
, chino
, español
, irlandés (gaélico)
y alemán
- Se mejoraron las comillas tipográficas para francés
, ucraniano
, ruso
y árabe
- Se agregaron traducciones de términos (un término es la “Sección” de “Sección 1”) para muchos idiomas nuevos, importando traducciones preexistentes de paquetes de LaTeX
- Ya no se permite una lista de fuentes vacía en
text.font(Cambio incompatible menor)
- Se agregó una advertencia al usar una fuente variable, ya que actualmente no están admitidas
- Se corrigió el uso de una misma fuente con distintas configuraciones de cobertura
- Se corrigió que los guiones no aparecieran al separar sílabas en posiciones específicas (donde hay metadatos invisibles)
- Se corrigió el estilo de los guiones repetidos en idiomas con repetición de guion
- La fuente de reserva de último recurso ya no tiene en cuenta los caracteres ignorables por defecto durante la selección de fuentes
- Se actualizaron las fuentes New Computer Modern a la versión 7.0.4
- Se actualizaron los datos y el shaper a Unicode 16.0.0
Scripting
- El operador
inahora se puede usar para comprobar si una definición está presente en un módulo - Se agregó el parámetro
defaulta los métodosarray.first,array.last,
array.join,
str.firstystr.last - Se agregó el parámetro
byaarray.sortedpara ordenar con una función de comparación - Se agregó la función
str.normalizepara la normalización Unicode - Se agregaron los métodos
from,toysignal tipodirection - Las etiquetas ya no pueden estar vacías
(Cambio incompatible menor)
- Se actualizó el entorno de ejecución de WebAssembly que usa el sistema de
plugin, que ahora admite SIMD - Las numeraciones y los contadores ahora usan números de 64 bits en lugar de números que dependen de la plataforma, por coherencia entre plataformas
- Se mejoró la coherencia en cómo se manejan los números grandes en las funciones de carga de datos
- Ahora se garantiza que la función
tomldevuelva un diccionario y quetoml.encodereciba un diccionario (antes ya producía un error cuando se le pasaba otra cosa, pero la nueva firma de la función hace más claro el error) - La serialización de
bytesen formatos legibles por personas ahora usarepr - Se corrigió el recorte de los últimos N elementos de un array con el parámetro
count - Se corrigió un fallo cuando la expresión envuelta en una expresión
contextes una función anónima - Se corrigió la comparación de igualdad entre elementos
raw.line - Se corrigió que
reprde las etiquetas pudiera ser sintácticamente inválido - Se corrigió
reprde las funciones modificadas conwith
Introspección
- Los siguientes elementos ahora son localizables (es decir, se pueden descubrir con
query,locate, etc. sin tener una etiqueta):par,table,enum,list,terms,title,figure.caption,footnote.entry,outline.entry,image,emph,strong,link,cite,raw,underline,overline,strikeyhighlight - Se corrigieron problemas con el orden lógico en texto bidireccional
- Se corrigió el orden lógico de las celdas en
gridde derecha a izquierda - Se corrigió el orden lógico de los elementos en celdas de
gridque abarcan varias páginas - Se corrigió el orden lógico de los metadatos al comienzo y al final de los párrafos
- Se corrigieron las posiciones de introspección de elementos en línea al comienzo mismo de un párrafo (antes la posición Y de un elemento al comienzo difería de la de uno en la mitad de la primera línea)
Estilos
Rendimiento
- Se optimizó la compilación incremental con un algoritmo nuevo que, en particular, elimina casos de compilación muy lenta con uso intensivo de contexto
Interfaz de línea de comandos
- Se agregó el subcomando
typst infopara emitir información de compilación y de entorno - Se agregó el subcomando
typst completionspara obtener autocompletados de shell - Se agregó la variable de entorno
TYPST_IGNORE_SYSTEM_FONTS - Se agregaron el indicador
--ignore-embedded-fontsy la variable de entornoTYPST_IGNORE_EMBEDDED_FONTSpara desactivar el uso de las fuentes incrustadas en el binario de Typst - Se agregó el indicador
--no-pdf-tagspara desactivar la generación automática de etiquetas de accesibilidad. Estas se emiten cuando no se elige ningún estándar en particular, como PDF/UA-1, para ofrecer una base de accesibilidad. - Se agregó el parámetro
--targetatypst query - Se agregaron los parámetros
--depsy--deps-formatpara emitir una lista de los archivos de los que depende la compilación. Admite los tres formatosjson,zeroymake. - Se declaró obsoleto el indicador
--make-depsen favor de--depscon--deps-format make - En Linux, la búsqueda de fuentes ahora recurre a directorios de fuentes conocidos si no se cargó ninguno mediante Fontconfig.
- La CLI ahora advierte cuando se intenta observar la entrada estándar
- Se corrigió una condición de carrera cuando dos procesos distintos de la CLI de Typst intentan instalar un paquete a la vez
- Se corrigió que la exportación incremental a SVG no escribiera los SVG de salida ante cambios que solo afectan a la página (p. ej., cambiar
page.fill) - Se corrigió un posible fallo poco frecuente cuando no se podía ampliar el espacio de pila como se esperaba
Herramientas y diagnósticos
- Los errores en muchos tipos de archivos de texto externos (p. ej., bibliografías, archivos JSON, etc.) ahora se anotan dentro de esos archivos y no en las posiciones desde donde se cargan en un archivo de Typst
- Las advertencias que se originan dentro de
evalahora se emiten correctamente Mensajes de diagnóstico y sugerencias
- Se mejoraron los mensajes de error relacionados con el análisis de números
- El mensaje de error para un estilo CSL inadecuado ahora menciona el nombre del estilo
- Se agregaron sugerencias con el cronograma de eliminación a varios elementos obsoletos
- Se agregó una sugerencia al mensaje de error cuando se espera un par X/Y
- Se agregó una sugerencia para una etiqueta que aparece tanto en el documento como en la bibliografía
- Se agregó una sugerencia adicional para el error de profundidad de recursión de reglas show
- Se corrigió el formato inconsistente de puntos de código y cadenas de texto en los mensajes de error
- Se mejoraron los mensajes de error relacionados con el análisis de números
Autocompletado
- Las etiquetas ahora se deduplican en los autocompletados
- Los autocompletados de fuentes matemáticas ahora se basan en la presencia de una tabla MATH de OpenType y no en la palabra “Math” en el nombre
- El autocompletado inmediatamente después de una coma en una lista de parámetros ahora se admite para autocompletados disparados explícitamente (p. ej., con Ctrl/Cmd+Espacio)
- Los alias de estilos de cita ahora se muestran como autocompletados
- Se corrigieron falsos positivos del autocompletado con el cursor después de la lista de parámetros
- Se corrigió el autocompletado después de un identificador parcial en matemática
- Se corrigió qué definiciones se sugieren en matemática
- Se corrigió que se listaran autocompletados de métodos que no aplican
- Las etiquetas ahora se deduplican en los autocompletados
Tooltips
- Se corrigió el salto desde un clic (saltar al panel de código fuente con un clic en la vista previa) en presencia de transformaciones y recortes
Símbolos
- Se agregaron muchos símbolos y variantes nuevos; muchos más de los que se pueden enumerar acá. Mirá el registro de cambios específico para ver la lista completa.
- Los puntos de código que tienen presentación de símbolo y de emoji ahora llevan el selector de variación correcto según aparezcan en
symo enemoji. Dicho esto, igualmente no se renderizan de forma consistente en Typst por cómo funciona la fuente de reserva. - La función
symbolahora se puede usar para crear símbolos que comprenden no solo un carácter, sino un grafema completo
Obsolescencias
- El nombre
pdf.embed, en favor del nuevo nombrepdf.attach - El estilo de bibliografía
"chicago-fullnotes", en favor de"chicago-notes" - El estilo de bibliografía
"modern-humanities-research-association", en favor de"modern-humanities-research-association-notes" - El indicador de CLI
--make-deps, en favor de--depscon--deps-format make - Varios símbolos; ver la sección de obsolescencias del registro de cambios específico para la lista completa
Eliminaciones
- Se eliminó el comportamiento de compatibilidad de las comparaciones entre tipo y cadena de texto (p. ej.,
int == "integer"), que se había introducido temporalmente en Typst 0.8 y se declaró obsoleto en Typst 0.13 (Cambio incompatible)
Desarrollo
- La implementación de
DefaultparaLibrarytuvo que eliminarse por razones de división de crates y coherencia de traits, pero podés obtener un reemplazo directo conuse typst::LibraryExt - La estructura
PdfOptionstiene un nuevo campotagged, que por defecto estrue - Se corrigió un posible pánico en las implementaciones de
World::font. Las implementaciones deWorldposteriores quizás deban aplicar la misma corrección. - Se aumentó la versión mínima admitida de Rust a 1.88
- El contenedor Docker ahora tiene el usuario opcional sin privilegios de root
typst
Colaboradores
¡Gracias a todos los que contribuyeron a esta versión!