Existe-t-il des alternatives à #

L’idée d’écrire ses documents « comme des programmes » ne se limite pas à et de nombreuses pistes d’implémentation ont été explorées au fil des ans, dont certaines de façon fructueuse. Quelques unes ont été antérieures à d’autres cherchent à le remplacer, enfin d’autres sont relativement complémentaires. L’utilisation d’une syntaxe de type se retrouve dans un certain nombre d’entre elles, mais pas dans toutes.

Note

Les projets énumérés ici sont entièrement distincts de ou de ses dérivés (ce ne sont pas des programmes -like »).

1.  Projets actifs#

https://typst.app/assets/images/typst.svg

1.1.  typst#

typst est un système de mise en page écrit en Rust. Sa syntaxe est proche de celle du markdown. Typst souhaite être d’un apprentissage aisé et propose des temps de compilation réduits.

https://sile-typesetter.org/images/logo.png

1.2.  SILE#

SILE est un système de mise en page écrit en Lua et utilisant la bibliothèque HarfBuzz pour le rendu des caractères. Sa syntaxe d’entrée principale est largement inspirée de par exemple :

\begin{document}
Hello SILE!
\end{document}

est un document SILE valide (remarquez l’absence de préambule ici).

SILE peut également prendre du XML en entrée. Cette fonctionnalité permet principalement de créer des classes de document pour traiter des fichiers XML conçus pour d’autres systèmes : par exemple, SILE a une classe docbook. Elle facilite également la création de catalogues ou de dictionnaires dont les données sont enregistrées dans un fichier XML.

SILE est programmable en Lua. Puisque XML est un langage de description raisonnable, et que Lua est un vrai langage de programmation, l’écriture d’extensions et de commandes pour SILE tend à être plus facile et plus rapide que pour Il est également possible de définir des macros à la manière de dans le document pour des mises en forme simples.

SILE supporte complètement Unicode et les polices TrueType et OpenType. Comme il s’appuie sur des bibliothèques de mise en forme modernes, il prend facilement en charge plusieurs langues et tous les types d’écritures (par exemple l’arabe et le japonais). Il sait également mettre en forme les équations mathématiques.

SILE n’a pas la pléthore d’extensions dont dispose mais il possède quelques fonctionnalités fondamentales qui sont absentes de

  • le support de mises en pages complexes à base de cadres, inspiré d’InDesign ;

  • la composition du texte sur une grille (pour éviter les problèmes de transparence quand on imprime sur papier fin).

À la fin de 2023, il est en développement actif (plusieurs sorties par an) et dispose des fonctionnalités requises pour la plupart des usages. Le contenu et l’aspect du manuel d’utilisation permettent de s’en faire une idée. Cependant, il n’a pas encore atteint la version 1.0 : il faut donc s’attendre à quelques bugs (par exemple sur les titres courants) et à des changements dans de futures versions qui pourraient vous obliger à modifier certaines parties de vos documents.

https://raw.githubusercontent.com/wiki/gfngfn/SATySFi/img/satysfi-logo.png

1.3.  SATySFi#

SATySFi (prononcé de la même manière que le verbe « satisfy » en anglais) est un nouveau système de mise en page basé sur un langage de programmation fonctionnelle à typage statique. Il se compose principalement de deux couches : la couche texte et la couche programme. La première sert à écrire des documents dans une syntaxe semblable à celle de La seconde, dont la syntaxe est semblable à celle d’OCaml, sert à définir les fonctions et les commandes. SATySFi vous permet d’écrire des documents balisés avec des commandes de votre cru. De plus, les erreurs de typage sont signalées avec des messages informatifs, ce qui est une aide précieuse quand on écrit ses propres fonctions.

https://patoline.github.io/images/titleduck.png

1.4.  Patoline#

Patoline est un système de mise en page écrit en OCaml qui utilise un mélange de syntaxe de type et d’« échappements » vers OCaml pour fournir le contrôle de la mise en forme. Patoline vise une conception modulaire, et un traitement rapide des documents par la machine.

(Le projet Patoline était précédemment hébergé à l’adresse http://patoline.org)

1.5.  Lout#

Lout est un formateur de documents automatique, écrit par Jeffrey H. Kingston. Il prend en entrée une description de haut niveau d’un document, dans un style similaire à celui de Lout reprend certains des algorithmes de mise en forme de mais utilise comme langage de personnalisation un langage de programmation fonctionnelle de haut niveau, au lieu d’un langage de macros. Lout a été publié en même temps que au début des années 1990. Il n’a jamais eu une base d’utilisateurs aussi vaste que celle de mais il est toujours maintenu.

Astuce

Plus de renseignements sur la page wikipedia de Lout.

1.6.  troff/nroff/groff#

groff : la famille des outils de mise en forme « *roff » est apparue avant et a beaucoup influencé sa conception. Ils font partie intégrante d’Unix et de tous les systèmes de ce type, comme linux.

Notamment, les pages de manuel sont composées avec groff et ses dérivés, aussi bien pour leur affichage sur écran que pour leur impression.

2.  Projets historiques#

2.1.  ANT typesetting system#

ANT est l’acronyme de « *ANT is* not TeX ».

Le projet ANT, d’Achim Blumensath, ne visait pas à reproduire avec une implémentation simplement différente, mais plutôt à fournir un remplacement de utilisant des algorithmes de composition semblables à ceux de mais offrant un environnement de programmation très différent, basé sur OCaml et ayant une conception flexible et modulaire,

Ainsi, bien qu’ANT possède un langage de balisage essentiellement identique à celui de le langage servant à définir la mise en forme des documents est un langage de programmation bien établi et assez répandu, de sorte que la conception des documents ne dépend plus des compétences de quelques experts en programmation de macros

La version la plus récente de ANT est la 0.8, publiée en décembre 2007. Son développement a été brièvement repris en 2016.