Typst est un #logiciel d’#écriture et d’#édition_scientifique créé par Martin Haug et Laurenz Mädje. Il existe sous la forme d’un éditeur collaboratif en ligne avec un accès gratuit et des fonctionnalités payantes (un peu comme #Authorea), ainsi que sous la forme d’un programme en ligne de commande, pour un usage local. On peut trouver en ligne le code et une documentation détaillée.
Je suis frappé par la vitesse avec laquelle les deux créateurs ont transformé leur projet de fin d’études en entreprise. Le marketing est plutôt malin, on situe tout de suite Typst par rapport à #Word, #Google_Docs et #LaTeX. À noter que Pandoc a très vite développé une compatibilité avec ce nouvel outil. Typst suscite clairement de l’enthousiasme dans une communauté fatiguée par des outils mal adaptés à ses besoins. Un sentiment d’efficacité se dégage de l’ensemble du projet, et on sait combien c’est important quand il s’agit de convaincre les gens de transformer leurs pratiques. Mais il reste à tenir certaines promesses, en premier lieu sur l’accessibilité des PDF : Typst a été présenté comme une amélioration possible à TeX sur ce point, or deux ans après ce n’est toujours pas le cas.
Je n’ai pas encore essayé l’outil. Mais pour les curieux, le mémoire de Laurenz Mädje décrit la genèse de Typst, et j’y ai relevé plusieurs éléments que je partage ci-dessous.
Pour justifier d’investir des efforts dans la création d’un nouvel outil d’écriture et d’édition scientifique, Mädje analyse les défauts de #TeX avec des mots qui frappent juste :
« La conception datée de TeX entrave fondamentalement l’expérience utilisateur » (p. 7) […] « la compilation est lente, l’accessibilité est mauvaise, et les possibilités de mise en page sont limitées » (p. 13).
Les deux logiciels appelés Typst – l’éditeur en ligne et le compilateur en ligne de commande – reposent sur un langage de programmation du même nom, qui s’écrit en partie comme un langage de balisage léger, proche de #Markdown :
« Typst, c’est à la fois un langage de balisage léger et un langage de programmation complet, réunis en une seule syntaxe, au format texte » (p. 7) […] « Intégrer stylage et programmation rend la mise en forme plus simple et plus souple » (p. 68).
C’est donc un vrai système de #programmation_éditoriale, ce qui me rappelle #Pollen, sur lequel j’avais publié une note de veille. L’intégration entre balisage et programmation existait déjà dans l’écosystème TeX avec #LuaTeX mais l’avantage de Typst est d’avoir repris la conception du système à zéro : en théorie, cela devrait permettre de développer rapidement un catalogue de fonctionnalités modulaires, comme les paquets de TeX, sur une base plus saine.
J’ai aussi relevé quelques concepts utiles, comme le couple balisage procédural – qui indique à l’ordinateur comment procéder – et balisage descriptif – qui décrit à l’ordinateur la structure du document. Mädje souligne que le #balisage_descriptif convient particulièrement à l’édition multiformats car il permet de changer de styles sans modifier le contenu. Il distingue trois catégories de langages de balisage descriptif, suivant qu’ils sont basés sur des tags, des macros ou des caractères. La phrase “The line between data and markup is fuzzy” (p. 16) a particulièrement retenu mon attention : elle suggère que le texte, c’est de la donnée ; et surtout, que le balisage, c’est déjà un peu de la sérialisation.
Enfin, j’ai relevé cet argument pro-balisage (ou #anti-WYSIWYG, comme on veut) dans la conclusion :
« Les langages de balisage ont un avantage concret sur les systèmes de composition #WYSIWYG : ils permettent aux auteurs de définir la structure du document indépendamment de son apparence et de passer automatiquement de l’une à l’autre ; cela donne une meilleure expérience d’écriture, avec moins de travail répétitif » (p. 71).