L'avenir de LaTeX est compromis dans le sens où il n'évolue plus et je dirais même qu'il ne peut plus évoluer (cf. la mort silencieuse du projet LaTeX3).
Utiliser les différentes classes LaTeX et faire trois/quatre macros, ça va. Mais si on veut aller plus loin (comme créer ses classes ou modifier quelques comportements), ça devient vite compliqué, et ce pour plusieurs raisons :
1. TeX est un langage de macro, il a des fonctionnalités limités :
- les commandes de manipulation de fichiers sont extrêmement limitées ;
- manipuler, donc découper, un par un les caractères d'un mot ou les mots d'une phrase, c'est la croix et la bannière, surtout si l'on veut que ces caractères/mots soient eux-mêmes créés/modifiés (p.ex. : \escalier{mot} qui augmente la taille des caractères du mot à chaque caractère et qui fonctionne aussi bien avec un mot comme « abcd » que comme « \suite{a}{d} » ou simplement « a\^{t}\k{e}\d »)
- et, en général, les boucles, c'est pas évident (possible : récursivité, mais très compliqué : multiplication de macros intermédiaires).
2. pour des raisons de compatibilité avec plain TeX, ou tout bonnement de simplicité, le code des paquets LaTeX sont souvent difficilement lisibles...
P.ex. Knuth écrit " \z@ " à la place de " 0pt " parce que c'est plus rapide à lire pour le moteur de TeX (sic). Bon, avec les PC actuels je doute que cela fasse une grosse différence (même si la proportion est toujours la même, disons p.ex. x1/4, le temps de base est largement moindre : une compilation de 20s avec du code humainement plus lisible ou de 5s avec du moins lisible, ce n'est plus comparable avec 4h de compilation contre 1h...), mais tout le monde continue à écrire du code comme ça.
Sans parler de la gestion des espaces qui fait que (même si c'est évitable) tout le code est toujours tassé sur une seule ligne ou coupé sans rapport avec la structure logique.
3. ...et utilisent souvent des macros « internes » de LaTeX et des autres paquets (celles avec un @ dedans)
P.ex. on modifie la commande de base \truc mais ça ne modifie pas la commande \machin qui est censée l'utiliser parce qu'en fait le corps de \truc est réalisé par \@truc et la commande \machin utilise directement \@truc et non pas \truc. Vous me direz qu'il suffit de modifier \@truc. Mais le problème, c'est que la commande \bidule, du même paquet que \truc, utilise aussi \@truc, et qu'on ne veut pas que \bidule soit modifiée, elle. Donc est obligé de modifier \truc et \machin.
4. Mélange du contenu et de la forme...
LaTeX 3 devait permettre de régler une bonne part de tout ça... paix à son âme.
D'autres projets ont aussi essayé (p.ex. PolyTeX mais il y en d'autres dont j'ai oublié le nom), sans grand succès, peut-être à cause de la quantité de paquets (La)TeX disponibles et de leur réutilisation difficile.
Mais bon, pour ma part j'utilise toujours LaTeX (j'ai beaucoup de mal à utiliser les « interfaces intuitives » (sic) aussi facilement), et je pense que le moteur TeX est toujours compétitif vis à vis du rendu. Par contre, une petite couche (XML ou autre d'ailleurs) par dessus, ça me semble une très bonne idée.
[^] # Re: LaTeX
Posté par Sylvain Sauvage . En réponse à la dépêche ooo2dbk : Générer du DocBook à partir de documents OpenOffice.org. Évalué à 9.
Utiliser les différentes classes LaTeX et faire trois/quatre macros, ça va. Mais si on veut aller plus loin (comme créer ses classes ou modifier quelques comportements), ça devient vite compliqué, et ce pour plusieurs raisons :
1. TeX est un langage de macro, il a des fonctionnalités limités :
- les commandes de manipulation de fichiers sont extrêmement limitées ;
- manipuler, donc découper, un par un les caractères d'un mot ou les mots d'une phrase, c'est la croix et la bannière, surtout si l'on veut que ces caractères/mots soient eux-mêmes créés/modifiés (p.ex. : \escalier{mot} qui augmente la taille des caractères du mot à chaque caractère et qui fonctionne aussi bien avec un mot comme « abcd » que comme « \suite{a}{d} » ou simplement « a\^{t}\k{e}\d »)
- et, en général, les boucles, c'est pas évident (possible : récursivité, mais très compliqué : multiplication de macros intermédiaires).
2. pour des raisons de compatibilité avec plain TeX, ou tout bonnement de simplicité, le code des paquets LaTeX sont souvent difficilement lisibles...
P.ex. Knuth écrit " \z@ " à la place de " 0pt " parce que c'est plus rapide à lire pour le moteur de TeX (sic). Bon, avec les PC actuels je doute que cela fasse une grosse différence (même si la proportion est toujours la même, disons p.ex. x1/4, le temps de base est largement moindre : une compilation de 20s avec du code humainement plus lisible ou de 5s avec du moins lisible, ce n'est plus comparable avec 4h de compilation contre 1h...), mais tout le monde continue à écrire du code comme ça.
Sans parler de la gestion des espaces qui fait que (même si c'est évitable) tout le code est toujours tassé sur une seule ligne ou coupé sans rapport avec la structure logique.
3. ...et utilisent souvent des macros « internes » de LaTeX et des autres paquets (celles avec un @ dedans)
P.ex. on modifie la commande de base \truc mais ça ne modifie pas la commande \machin qui est censée l'utiliser parce qu'en fait le corps de \truc est réalisé par \@truc et la commande \machin utilise directement \@truc et non pas \truc. Vous me direz qu'il suffit de modifier \@truc. Mais le problème, c'est que la commande \bidule, du même paquet que \truc, utilise aussi \@truc, et qu'on ne veut pas que \bidule soit modifiée, elle. Donc est obligé de modifier \truc et \machin.
4. Mélange du contenu et de la forme...
LaTeX 3 devait permettre de régler une bonne part de tout ça... paix à son âme.
D'autres projets ont aussi essayé (p.ex. PolyTeX mais il y en d'autres dont j'ai oublié le nom), sans grand succès, peut-être à cause de la quantité de paquets (La)TeX disponibles et de leur réutilisation difficile.
Mais bon, pour ma part j'utilise toujours LaTeX (j'ai beaucoup de mal à utiliser les « interfaces intuitives » (sic) aussi facilement), et je pense que le moteur TeX est toujours compétitif vis à vis du rendu. Par contre, une petite couche (XML ou autre d'ailleurs) par dessus, ça me semble une très bonne idée.