Typst 0.13.0 (19/02/2025)
Novedades destacadas
- Ahora se distingue entre párrafos propiamente dichos y simple contenido en línea. Esto es importante para el trabajo futuro sobre accesibilidad y significa que la sangría de primera línea ahora se puede habilitar para todos los párrafos y no solo para los consecutivos.
- El
outlinetiene un mejor aspecto por defecto y es más personalizable - La nueva función
curve(que reemplaza a la funciónpath) ofrece una interfaz más simple y flexible para crear curvas de Bézier - La función
imageahora admite formatos de trama de píxeles sin procesar, para generar imágenes desde Typst - Las funciones que aceptan rutas de archivo ahora también aceptan bytes sin procesar, para máxima flexibilidad
- Los plugins de WebAssembly son más flexibles y se ejecutan automáticamente en varios hilos
- Se corrigió un error histórico por el cual las cadenas de una sola letra en matemática (
$"a"$) se mostraban en cursiva - Ahora podés especificar qué juego de caracteres debe cubrir cada familia de fuentes
- La función
pdf.embedte permite incrustar archivos arbitrarios en el PDF exportado - La exportación a HTML está en pleno desarrollo. La característica todavía está muy incompleta, pero ya se puede experimentar con ella detrás de un indicador de característica.
Modelo
Ahora se distingue entre párrafos propiamente dichos y simple contenido en línea (Cambio incompatible)
- Todo el texto en la raíz de un documento se envuelve en párrafos. En cambio, el texto dentro de un contenedor (como un bloque) solo se envuelve en un párrafo si el contenedor tiene algún contenido de bloque. Si todo el contenido es en línea, no se crea ningún párrafo.
- En el documento ya diseñado, no se nota de inmediato si el texto pasó a formar parte de un párrafo. Sin embargo, sigue siendo importante para la accesibilidad, la exportación a HTML y para propiedades como
first-line-indent. - Las reglas show sobre
parahora solo afectan a los párrafos propiamente dichos - Las propiedades
first-line-indentyhanging-indenttambién solo afectan a los párrafos propiamente dichos - Crear un
par[..]con un cuerpo que no sea totalmente en línea producirá una advertencia - Se ajustaron las reglas show predeterminadas de varios elementos integrados, como listas, citas, etc., para asegurar que produzcan o no produzcan párrafos según corresponda
- Se eliminó la compatibilidad con booleanos y contenido en
outline.indent
La función
outlinese rehízo por completo para mejorar su comportamiento por defecto (Cambio incompatible)- Las entradas del índice ahora son bloques y por lo tanto les afecta el espaciado de bloques
- El modo de sangría
autoahora alinea numeraciones y títulos en todo el índice para lograr un aspecto de grilla - La sangría automática ahora también aplica sangría a las entradas sin numeración
- Los títulos que ocupan varias líneas ahora tienen sangría francesa
- El número de página ya no aparece solo en su propia línea
- El enlace ahora abarca toda la entrada y no solo el título y el número de página
- Se aumentó el espaciado predeterminado entre los puntos guía del índice
- El parámetro
fillse movió deoutlineaoutline.entryy por lo tanto se puede configurar mediante reglas show-set - Se eliminaron los campos
bodyypagede las entradas del índice - Se agregaron los métodos
indented,prefix,inner,bodyypagea las entradas del índice para simplificar la escritura de reglas show
- Se agregó una configuración a
par.first-line-indentpara aplicar sangría a todos los párrafos y no solo a los consecutivos - Se agregó el parámetro
forma la funciónref. Si se establece la forma en"page", se produce una referencia de página en lugar de una textual. - Se agregó el campo
document.description, que genera los metadatos correspondientes en PDF y HTML - Se agregó el parámetro
enum.reversed - Se agregó compatibilidad con la numeración griega
- Cuando la función
linkenvuelve un contenedor como un bloque, ahora genera un solo enlace para todo el bloque en lugar de enlaces individuales para cada elemento hoja visible. Esto reduce significativamente el tamaño de los archivos PDF al combinarlinkconrepeat. - La función
linkahora solo quita un prefijo (comomailto:otel:) en lugar de varios - La función link ahora suprime la separación silábica mediante una regla show-set integrada y no mediante su regla show predeterminada
- Mostrar el contador de páginas sin una numeración especificada ahora tiene en cuenta la numeración de páginas
Visualización
- Se agregó la nueva función
curve, que reemplaza a la funciónpathy ofrece una interfaz más simple y flexible. La funciónpathahora está obsoleta. - La función
imageahora admite formatos de trama de píxeles sin procesar. Se puede usar para generar imágenes desde Typst sin necesidad de codificarlas en un formato de intercambio de imágenes. - Se agregó el parámetro
image.scalingpara configurar cómo escalan una imagen la exportación a PNG y los visores de PDF (suavizado o pixelado) - Se agregó el parámetro
image.iccpara proporcionar o reemplazar el perfil ICC de una imagen - Se renombró
patternatiling. El nombrepatternsigue existiendo como alias obsoleto. - Se agregaron los métodos
gradient.center,gradient.radius,gradient.focal-centerygradient.focal-radius - Se corrigió la interacción entre el recorte y el outset en
boxyblock - Se corrigió un pánico con un
pathde longitud infinita - Se corrigieron los rellenos de texto que no son sólidos (p. ej., mosaicos) en bloques recortados
- Se corrigió un fallo con imágenes con un valor de DPI igual a cero
- Se corrigió un error de punto flotante en
gradient.repeat - La detección automática del formato de imagen a partir de un búfer sin procesar ahora admite SVG
Scripting
Las funciones que aceptan rutas de archivo ahora también aceptan bytes sin procesar
image,cbor,csv,json,toml,xmlyyamlahora admiten una cadena de ruta o bytes, y sus variantes.decodequedan obsoletasplugin,bibliography,bibliography.style,cite.style,raw.themeyraw.syntaxesahora aceptan bytes además de cadenas de ruta. Estos no tenían variantes.decode, así que esto agrega flexibilidad nueva.- El argumento o campo
pathdeimageybibliographyse renombró asourceysources, respectivamente (Cambio incompatible menor)
Se mejoraron los plugins de WebAssembly
- El tipo
pluginse reemplaza por una funciónpluginque devuelve un módulo con funciones normales de Typst. Este módulo se puede usar con la sintaxis de importación. (Cambio incompatible) - Los plugins ahora se ejecutan automáticamente en varios hilos sin ningún cambio por parte de sus autores
- Se introduce una nueva API
plugin.transitionque permite a los plugins ejecutar inicializaciones no puras de una manera que no rompe las garantías de pureza de Typst
- El tipo
- El nombre de variable que enlaza una importación simple (sin renombrar ni lista de importación) ahora se determina de forma estática, y las importaciones dinámicas sin renombrar con
as(p. ej.,import "ot" + "her.typ") son un error grave (Cambio incompatible) - Los valores del tipo
argumentsahora se pueden sumar con+y unir en bloques de código entre llaves - Las funciones del alcance de una función de elemento ahora se pueden llamar con sintaxis de método, lo que acerca los elementos y los tipos (en anticipación de una futura unificación total de ambos). Por ahora, esto solo es útil para
outline.entry, ya que ninguna otra función de elemento define métodos. - Se agregó la función
calc.norm - Se agregó compatibilidad con flotantes de 32 bits en
float.from-bytesyfloat.to-bytes - El constructor de
decimalahora también acepta valores decimales - Se mejoró el
reprde símbolos, argumentos y tipos - Las variantes y los modificadores de símbolos duplicados ahora son un error grave (Cambio incompatible)
Matemática
- Se corrigió un error por el cual las cadenas de una sola letra en matemática (
$"a"$) se mostraban en cursiva - Las llamadas a funciones matemáticas ahora pueden tener argumentos con nombre con guiones y admiten la expansión de argumentos
- Acentos de mejor aspecto gracias a la compatibilidad con las características OpenType
flac(formas de acento aplanadas) ydtls(formas sin punto) - Se agregó el operador de texto
lcm - La función
boldahora funciona con ϝ y Ϝ - La función
italicahora funciona con ħ - Se corrigió un error por el cual la extensión de una ecuación matemática se veía afectada por error por metadatos internos
- Se corrigió la interacción entre
lry las expresiones de contexto - Se corrigió que el espaciado débil se ignorara incondicionalmente en
lr - Se corrigió que los subíndices y superíndices a veces quedaran en la posición equivocada con
lr - Se corrigió que las anotaciones de varias líneas (p. ej., overbrace) cambiaran la línea base matemática
- Se corrigió la fusión de adjuntos cuando la base es una ecuación anidada
- Se corrigió la resolución de los tamaños de texto contextuales (basados en em) dentro de matemática
- Se corrigió el espaciado alrededor de las tachuelas hacia arriba (⊥)
Bibliografía
- Las citas en prosa y las de solo autor ahora usan los nombres de los editores si no están disponibles los nombres de los autores
- Ahora se reconocen algunos
editortypede BibLaTeX no estándar pero de uso muy extendido, comoproducer,writer,scriptwriterynone(definido por el estilo difundidobiblatex-chicagopara indicar intérpretes en entradas demusicyvideo) - Los estilos CSL ahora pueden renderizar afijos alrededor de la bibliografía
- Para las entradas de BibTeX con
eprinttype = {pubmed}, el ID de PubMed ahora se procesará correctamente - Se mejoró el manejo de espacios en blanco en las cadenas que delimitan nombres abreviados con iniciales
- Ahora es posible la escritura en mayúsculas después de los apóstrofos usados como comillas
- Se corrigieron errores en el manejo de los caracteres delimitadores de CSL
- Se corrigió un problema al analizar caracteres multibyte en rangos de páginas que podía impedir que Hayagriva analizara algunos rangos de páginas de BibTeX
- Se actualizó el estilo CSL de APA
- Se actualizaron las configuraciones regionales CSL de finés, alemán suizo, alemán austríaco, alemán y árabe
Texto
- Se agregó compatibilidad para especificar qué juego de caracteres debe cubrir cada familia de fuentes
- Se agregó el parámetro
alla la funciónsmallcaps, que además activa las versalitas en las letras mayúsculas - Se agregó internacionalización básica para vasco y búlgaro
- La justificación ya no afecta a los bloques raw
- El espaciado entre CJK y latín ya no afecta al texto raw
- Se corrigieron los códigos de idioma erróneos que se usaban para griego y ucraniano
- Se corrigieron las comillas predeterminadas de croata y búlgaro
- Se corrigió un fallo en el manejo de texto de derecha a izquierda
- Se agregó compatibilidad con el resaltado de sintaxis de
rawpara algunos lenguajes nuevos: CFML, NSIS y WGSL - Nueva excepción de metadatos de fuente para New Computer Modern Sans Math
- Se actualizaron las fuentes New Computer Modern incluidas a la versión 7.0.1
Diseño
Se corrigieron varios errores con las notas al pie
- Se corrigió que se perdieran notas al pie cuando había varias anidadas dentro de otra nota al pie
- Se corrigieron bucles infinitos con notas al pie vacías y demasiado grandes
- Se corrigió un fallo con notas al pie demasiado grandes dentro de una ubicación flotante
- Se corrigió el dimensionamiento de las formas cuadráticas (
squareycircle) - Se corrigió que
block.stickyno funcionara bien en la parte superior de un contenedor - Se corrigió un fallo por espaciados débiles consecutivos
- Se corrigió un fallo cuando un bloque o un texto tienen tamaños negativos
- Se corrigieron separaciones silábicas innecesarias que ocurrían en escenarios poco frecuentes por una mala interacción entre el relleno y la optimización de párrafos
- Se corrigió que las citas sueltas dentro de
alignno pasaran a ser su propio párrafo
Sintaxis
- Los corchetes de cierre de nivel superior que no tienen un corchete de apertura correspondiente ahora son un error grave (Cambio incompatible menor)
- Ya no se permite agregar un espacio entre el identificador y los paréntesis en una regla set (Cambio incompatible menor)
- Los números con unidad ya no pueden tener un prefijo de base; por ejemplo, ya no se permite
0b100000pt. Antes se permitía sintácticamente, pero siempre se resolvía a un valor de cero. (Cambio incompatible menor) - Usar
iscomo identificador ahora produce una advertencia, porque podría convertirse en una palabra clave en el futuro Se corrigieron errores menores en el manejo de espacios en blanco
- en las listas de argumentos del modo matemático
- al final de los títulos
- entre el término y la descripción de una lista de términos
- Se corrigió el análisis de bloques raw de una sola línea vacíos con 3 o más acentos graves y una etiqueta de lenguaje
- Se corrigió un error menor en el análisis de paréntesis en matemática
- El marcado que solo puede aparecer al comienzo de la línea (títulos, listas) ahora también puede aparecer al comienzo de un elemento de lista
- Un shebang
#!al comienzo mismo de un archivo ahora se ignora
Exportación a PDF
- Se agregó la función
pdf.embedpara incrustar archivos arbitrarios en el PDF exportado - Se agregó compatibilidad con la exportación a PDF/A-3b
- La marca de tiempo del PDF ahora contendrá la zona horaria por defecto
Exportación a HTML
Nota: La exportación a HTML está en pleno desarrollo. La característica todavía está muy incompleta, pero ya se puede experimentar con ella detrás de un indicador de característica.
- Se agregó compatibilidad con salida HTML para algunos (pero no todos) de los elementos integrados
- Se agregó la función
html.elempara generar un elemento HTML arbitrario - Se agregó la función
html.framepara integrar en HTML contenido que requiere diseño (incrustando un SVG) - Se agregó la función
target, que devuelve"paged"o"html"según el formato de exportación
Herramientas y diagnósticos
Mejoras en el autocompletado
- Se agregó el autocompletado de rutas de archivo
- Autocompletado de variables más inteligente: al completar
rect(fill: |)ahora solo se mostrarán las variables que contengan un relleno válido (ya sea directamente o anidado, p. ej., un diccionario que contenga un relleno válido) - Ahora las distintas funciones se autocompletan con distintos tipos de paréntesis (redondos o cuadrados) según cuál sea más útil
- Los parámetros posicionales que ya se proporcionaron ya no se vuelven a autocompletar
- Se corrigió que el autocompletado de variables no considerara los parámetros
- Se agregaron snippets de autocompletado para usos comunes de figuras
- Se corrigió el autocompletado después de un elemento de importación a medio completar
- Se corrigió el autocompletado de la función
cite
- Se agregó una advertencia cuando un return incondicional en un bloque de código descarta contenido unido
- Se corrigió el mensaje de error al acceder a una etiqueta inexistente
- Se corrigió el manejo de importaciones anidadas en la funcionalidad del IDE
Interfaz de línea de comandos
- Se agregaron el argumento
--featuresy la variable de entornoTYPST_FEATURESpara optar por características experimentales. La única característica hasta ahora eshtml. - Se agregó un servidor HTTP con recarga en vivo a
typst watchcuando se apunta a HTML - Se corrigió que la autoactualización no reconociera ciertas arquitecturas de destino
- Se corrigió un fallo al canalizar la salida de
typst fontsa otro comando - Se corrigió el manejo de rutas relativas en la salida de
--make-deps - Se corrigió el manejo de la exportación a SVG y PNG de varias páginas en la salida de
--make-deps - Los dos puntos en los nombres de archivo ahora se escapan correctamente en la salida de
--make-deps
Símbolos
Nuevos
inter,inter.and,inter.big,inter.dot,inter.double,inter.sq,inter.sq.big,inter.sq.double,integral.interasymp,asymp.notmapsto,mapsto.longdivides.not.rev,divides.struckinterleave,interleave.big,interleave.struckeq.triple.not,eq.dots,eq.dots.down,eq.dots.upsmt,smt.eq,lat,lat.eqcolon.tri,colon.tri.opdagger.triple,dagger.l,dagger.r,dagger.invhourglass.stroked,hourglass.filleddie.six,die.five,die.four,die.three,die.two,die.oneerrorbar.square.stroked,errorbar.square.filled,errorbar.diamond.stroked,errorbar.diamond.filled,errorbar.circle.stroked,errorbar.circle.fillednumero
Renombrados (Cambio incompatible)
ohm.invtoOmega.inv
Punto de código modificado (Cambio incompatible)
angle.l.doublede《a⟪angle.r.doublede》a⟫angstromde U+212B (Å) a U+00C5 (Å)
Obsoletos
secty todas sus variantes, en favor deinterintegral.sect, en favor deintegral.inter
Eliminados (Cambio incompatible)
degree.c, en favor de°C($upright(°C)$o$upright(degree C)$en matemática)degree.f, en favor de°F($upright(°F)$o$upright(degree F)$en matemática)kelvin, en favor de simplemente K ($upright(K)$en matemática)ohm, en favor deOmega
Obsolescencias
- La función
path, en favor de la funcióncurve - El nombre
patternpara los patrones de mosaico, en favor del nuevo nombretiling image.decode,cbor.decode,csv.decode,json.decode,toml.decode,xml.decode,yaml.decode, en favor de que las funciones de nivel superior acepten directamente tanto rutas como bytessecty sus variantes, en favor deinter, yintegral.sect, en favor deintegral.inter- El comportamiento de compatibilidad de las comparaciones entre tipo y cadena de texto (p. ej.,
int == "integer"), que se introdujo temporalmente en Typst 0.8, ahora emite advertencias. Se eliminará en Typst 0.14.
Eliminaciones
- Se eliminaron la función
styley el argumentostylesdemeasure; usá en su lugar una expresión de contexto (Cambio incompatible) - Se eliminó la función
state.display; usástate.geten su lugar (Cambio incompatible) - Se eliminó el argumento
locationdestate.at,counter.atyquery(Cambio incompatible) - Se eliminó el comportamiento de compatibilidad por el cual
counter.displayfuncionaba sin contexto (Cambio incompatible) - Se eliminó el comportamiento de compatibilidad de
locate(Cambio incompatible)
Desarrollo
- La función
typst::compileahora es genérica y puede devolver unPagedDocumento unHtmlDocument typst-timingahora admite destinos WebAssembly medianteweb-syscuando está habilitada la característicawasm- Se aumentó la versión mínima admitida de Rust a 1.80
- Se corrigió la imagen de Docker para linux/arm64
Colaboradores
¡Gracias a todos los que contribuyeron a esta versión!