Typst 0.11.0 (15/03/2024)
Tablas
- Las tablas ahora son mucho más flexibles; leé la nueva Guía de tablas para empezar
- Se agregó el elemento
table.cellpara configurar celda por celda - Las celdas ahora pueden abarcar varias columnas o filas
- Ahora se puede personalizar el trazo de cada celda
- Los argumentos
aligneinsetde la función table ahora también aceptan funciones(x, y) => .. - Se agregaron
table.hlineytable.vlinepara personalizar líneas con comodidad - Se agregó el elemento
table.headerpara encabezados de tabla que se repiten en cada página - Se agregó el elemento
table.footerpara pies de tabla que se repiten en cada página - Toda la nueva funcionalidad de tablas también está disponible para las grillas
- Se corrigieron errores relacionados con las separaciones (gutters)
¡Gracias a @PgBiel por su trabajo en las tablas!
Plantillas
- Ahora podés usar paquetes de plantillas para empezar proyectos nuevos. Hacé clic en Start from template en el panel de la app web y elegí la plantilla que prefieras, o ejecutá el comando
typst init <template>en la CLI. Podés explorar acá las plantillas disponibles. - Cambiar de plantilla a posteriori ahora es más fácil. Alcanza con importar una función de estilos de otro paquete de plantilla.
- Los autores de paquetes ahora pueden enviar sus propias plantillas al repositorio de paquetes. Compartí una plantilla para un paper, para tu institución o para una obra original y ayudá a la comunidad a arrancar con ventaja sus proyectos.
- Las plantillas y los paquetes ahora están organizados por categoría y disciplina. Filtrá los paquetes por cualquiera de las dos taxonomías en el asistente Start from template. Si sos autor de paquetes, mirá la nueva documentación de categorías y disciplinas.
Contexto
- Se agregaron las expresiones de contexto: leé el capítulo sobre contexto para empezar
- Con el contexto, podés acceder a propiedades configurables con set, p. ej.,
context text.langpara acceder al idioma establecido conset text(lang: "..") - Las siguientes funciones existentes pasaron a ser contextuales:
query,locate,measure,counter.display,counter.at,counter.final,state.atystate.final - Se agregaron los métodos contextuales
counter.getystate.getpara obtener el valor de un contador o estado en el contexto actual - Se agregó la función contextual
herepara obtener la ubicación del contexto actual - La función
locateahora devuelve la ubicación de la única coincidencia de un selector. Su comportamiento anterior fue reemplazado por las expresiones de contexto y solo sigue disponible de forma temporal por compatibilidad. - Los métodos
counter.atystate.atahora son más flexibles: aceptan directamente cualquier tipo de selector localizable con una única coincidencia (p. ej., una etiqueta) y no solo ubicaciones - Cuando hay contexto disponible,
counter.displayahora devuelve directamente el resultado de aplicar la numeración en lugar de producir contenido opaco. Ya no debería usarse sin contexto. (Se planea declararlo obsoleto) - La función
state.displayya no debería usarse; usástate.geten su lugar (Se planea declararlo obsoleto) - El argumento
locationdequery,counter.finalystate.finalya no debería usarse (Se planea declararlo obsoleto) - El argumento
stylesde la funciónmeasureya no debería usarse (Se planea declararlo obsoleto) - La función
styleya no debería usarse; usá contexto en su lugar (Se planea declararlo obsoleto) - Ahora también se proporciona el contexto correcto en varios otros lugares donde está disponible, p. ej., en reglas show, funciones de retorno de llamada de diseño y funciones de numeración del índice
Estilos
- Se corrigió la prioridad de varias reglas show-set: ahora se aplican en el mismo orden que las reglas set normales
- Las reglas show-set sobre el mismo elemento (p. ej.,
show heading.where(level: 1): set heading(numbering: "1.")) ahora funcionan correctamente - Establecer propiedades de un elemento dentro de una regla show de transformación (p. ej.,
show heading: it => { set heading(..); it }) ya no se admite (antes tampoco funcionaba siempre); usá reglas show-set en su lugar (Cambio incompatible) - Las reglas show de texto que coinciden con su propia salida ahora funcionan correctamente (p. ej.,
show "cmd": `cmd`) - Los elementos que se pasan a las reglas show y los que devuelven las consultas ahora contienen todos los campos de sus respectivas funciones de elemento y no solo algunos
- Todas las propiedades configurables con set ahora se pueden usar en selectores where
- Los selectores and y or ahora se pueden usar con reglas show
- Los errores dentro de reglas show y expresiones de contexto ahora se ignoran en todas las iteraciones de introspección salvo la última, en línea con el comportamiento del antiguo
locate - Se corrigió un error por el cual se permitían reglas set de documento después de contenido
Diseño
- Se agregó el argumento
reflowarotateyscale, que les permite afectar el diseño - Se corrigió un error por el cual la ubicación flotante o las figuras flotantes podían quedar fuera de orden
- Se corrigió la superposición de texto y figura en figuras flotantes de página completa
- Se corrigieron varios casos en que la función
hideno ocultaba bien su contenido - Se corrigió el uso de
hyven pilas - El contenido invisible, como una actualización de contador, ya no fuerza un bloque visible solo para él
- Se corrigió un error con un espaciado horizontal seguido de contenido invisible (como una actualización de contador) directamente al comienzo de un párrafo
Texto
- Se agregó la propiedad
strokepara el texto - Se agregó internacionalización básica para serbio y catalán
- Se agregó compatibilidad con el método de numeración japonesa contemporánea
- Se agregaron parches para varios metadatos erróneos en fuentes específicas
- La dirección del texto ahora se puede reemplazar dentro de un párrafo
- Se corrigieron las comillas tipográficas del danés
- Se corrigió la fuente de reserva junto a un salto de línea
- Se corrigió el ajuste de ancho de la puntuación japonesa de estilo JIS
- Se corrigió la traducción al finés de “Listing”
- Se corrigió el orden en Z de varias decoraciones de texto (subrayados, etc.)
- Se corrigió un error por el cual las características de texto no se podían reemplazar en reglas set consecutivas
Modelo
- Se agregaron los argumentos
depthyoffseta heading para aumentar o disminuir el nivel de título de un conjunto de contenido; la sintaxis de títulos ahora establecedepthen lugar delevel(Cambio incompatible) - Los marcadores de lista ahora ciclan por defecto
- La función
quoteahora selecciona con más robustez las comillas correctas según el idioma y el anidamiento - Se corrigieron errores de sangría relacionados con la regla show predeterminada de términos
Matemática
- Las ecuaciones en línea ahora saltan de línea automáticamente en los lugares adecuados
- Se agregó el argumento
number-aligna las ecuaciones - Se agregó compatibilidad para ajustar el
sizede los acentos en relación con su base - Se mejoró el posicionamiento de los acentos
- Las primas ahora siempre se adjuntan como scripts por defecto
- Se expuso el elemento
math.primesque respalda la sintaxis$f'$en matemática - El modo matemático ya no se ve afectado por
strongniemph - Se corrigió
attachdentro de fracciones - Se corrigió que
math.classno afectara la ubicación inteligente de límites - Se corrigió el espaciado débil en los grupos
lr - Se corrigió el diseño de los operadores grandes para la fuente Cambria Math
- Se corrigió el estilo matemático de los puntos de código de símbolos hebreos
Símbolos
- Se agregó
gradientcomo alias denabla - Se agregó
partialcomo alias dediff;diffquedará obsoleto en el futuro - Se agregaron
colon.double,gt.approx,gt.napprox,lt.approxylt.napprox - Se agregaron
arrow.r.tildeyarrow.l.tilde - Se agregó
tilde.dot - Se agregaron
forcesyforces.not - Se agregó
space.nobreak.narrow - Se agregaron
lrm(marca de izquierda a derecha) yrlm(marca de derecha a izquierda) - Se corrigió el símbolo
star.stroked(que antes tenía el punto de código equivocado)
Scripting
- Ahora se pueden comparar arrays lexicográficamente
- Se agregó el método contextual
to-absolutea las longitudes - Se agregó
calc.root - Se agregaron los métodos
int.signumyfloat.signum - Se agregaron los métodos
float.is-nanyfloat.is-infinite - Se agregaron los métodos
int.bit-not,int.bit-and,int.bit-or,int.bit-xor,int.bit-lshiftyint.bit-rshift - Se agregó el método
array.chunks - Ahora se puede convertir un módulo en diccionario con el constructor de diccionarios para acceder a su contenido de forma dinámica
- Se agregó el argumento
row-typea la funcióncsvpara configurar cómo se representan las filas - El análisis de XML ahora permite DTD (definiciones de tipo de documento)
- Se mejoró el formato de los números negativos con
stryrepr - Los bucles for ahora pueden iterar sobre bytes
- Se corrigió un error con la coincidencia de patrones en bucles for
- Se corrigió un error por el cual las etiquetas no formaban parte de los diccionarios de
.fields() - Se corrigió un error por el cual los sumideros de argumentos sin nombre no capturaban los argumentos sobrantes
- Se corrigió un error tipográfico en la salida de
reprde los trazos
Sintaxis
- Se agregó compatibilidad con patrones de desestructuración anidados
- Los espacios especiales (como los espacios finos o los de no separación) ahora se analizan de forma literal en lugar de colapsarse en espacios normales (Cambio incompatible)
- El texto coreano ahora puede usar la sintaxis de énfasis sin agregar espacios (Cambio incompatible)
- El token
contextahora es una palabra clave y ya no se puede usar como identificador (Cambio incompatible) - Ya no se permiten comentarios de línea anidados dentro de comentarios de bloque (Cambio incompatible)
- Se corrigió un error por el cual
x.)se trataba como un acceso a campo - Los elementos de texto ahora pueden abarcar llaves en el marcado
- Se corrigió un análisis silenciosamente incorrecto cuando el nombre de la función está entre paréntesis
- Se corrigieron varios errores en el análisis de patrones de desestructuración, arrays y diccionarios
Herramientas y diagnósticos
- El clic para saltar ahora funciona bien dentro de texto
raw - Se agregó una sugerencia para acceder a un campo si no existe un método
- Se mejoró la sugerencia para llamar a una función guardada en un diccionario
- Se mejoraron los errores de las funciones de acceso mutables en arrays y diccionarios
- Se corrigió el mensaje de error al llamar al constructor de un tipo que no tiene uno
- Se corrigió un mensaje de error confuso con diccionarios anidados para trazos en distintos lados
- Se corrigió el autocompletado para varios paquetes con el mismo nombre de distintos espacios de nombres
Visualización
- La función
imageya no amplía las imágenes más allá de su tamaño natural - La función
imageahora respeta la rotación guardada en los metadatos EXIF - Se agregó compatibilidad con filtros SVG
- Se agregó el componente alfa a los colores
luma - Se agregaron los métodos
color.transparentizeycolor.opacify - Se mejoró la función
color.negate - Se agregaron los argumentos
strokeyradiusa la funciónhighlight - Se cambió el color predeterminado de
highlightpara que sea transparente - La conversión de CMYK a RGB ahora tiene gestión de color
- Se corrigió un fallo con degradés en el espacio de color Oklch
- Se corrigió la mezcla de colores en los espacios basados en matiz
- Se corrigieron errores en la conversión de colores
- Los tamaños de SVG ya no se redondean, lo que evita relaciones de aspecto ligeramente erróneas
- Se corrigieron otros errores relacionados con SVG
color.componentsya no redondea nada
Exportación
- Los PDF ahora contienen destinos con nombre para los títulos, derivados de sus etiquetas
- Se cambió la estructura interna del PDF para que sea más fácil que herramientas externas extraigan o modifiquen páginas individuales, lo que evita un error de los PDF de Typst en Vista Previa de Apple
- Los PDF producidos por Typst ahora deberían ser reproducibles byte a byte cuando se establece
set document(date: none) - Se agregó un indicador faltante a las anotaciones de PDF
- Se corrigieron varios errores con degradés en la exportación a PDF
- Se corrigió un error con patrones en la exportación a PDF
- Se corrigió un error con la incrustación de imágenes en escala de grises en la exportación a PDF
- Se corrigió un error con la asignación To-Unicode de las fuentes CFF en la exportación a PDF
- Se corrigió un error en la generación del índice (outline) del PDF
- Se corrigió un error de ordenamiento en la exportación a PDF que producía una salida no reproducible
- Se corrigió un error con texto transparente en la exportación a PNG
- Los archivos SVG exportados ahora incluyen unidades en sus
widthyheightde nivel superior
Interfaz de línea de comandos
- Se agregó compatibilidad para pasar entradas mediante un indicador de la CLI
- Al pasar el nombre de archivo
-, Typst ahora lee la entrada desde stdin - Ahora usa la implementación de TLS nativa del sistema para las descargas de red, que en general debería ser más robusta
- El modo watch ahora detecta correctamente cuando se crea un archivo que antes faltaba
- Se agregó el indicador
--colorpara configurar si se imprime salida con colores - Se corrigió el user agent con el que se descargan los paquetes
- Se actualizaron las fuentes incluidas a las versiones más nuevas
Desarrollo
- Se agregó
--vendor-openssla la CLI para configurar si se enlaza OpenSSL de forma estática en lugar de dinámica (no se aplica a Windows ni a las plataformas de Apple) - Se eliminó de la CLI el antiguo indicador de trazado (y de verbosidad)
- Se agregó el nuevo indicador
--timings, que reemplaza al antiguo perfilado con flamegraph en la CLI - Se agregó una CLI mínima al crate
typst-docspara extraer la documentación del lenguaje y de la biblioteca estándar como JSON - El argumento
identde la funcióntypst_pdf::exportpasó deOptionaSmart. Solo debería establecerse enSmart::Customsi podés proporcionar un identificador estable (como puede hacerlo la app web). La CLI usaSmart::Auto.
Colaboradores
¡Gracias a todos los que contribuyeron a esta versión!