TeX et traitement de données par flot e01 : lire du TeX

Posté par  . Édité par ZeroHeure et Benoît Sibaud. Modéré par ZeroHeure. Licence CC By‑SA.
66
10
nov.
2015
Technologie

Depuis quelques temps je travaille de manière sporadique sur une bibliothèque pour manipuler des documents TeX en Scala nommée ToolXiT.
Cette bibliothèque est loin d'être finie et bouge encore beaucoup, mais elle me permet aussi de faire des essais.
Ce faisant, j'ai pu faire face à quelques défis intéressants, qui méritent au moins une série de dépêches sur LinuxFr.org, que ce soit sur TeX lui même ou le traitement par flot de données.

Je vais essayer de faire une série aussi intéressante que celle de rewind sur la création de jeu vidéo, nous verrons bien comment elle évoluera.

Prêts ? Allons y !

Sommaire

TeX

Qu'est-ce que c'est ?

Le premier constat que j'ai pu faire en m'attaquant à TeX, c'est que globalement il existe une grosse incompréhension sur ce que c'est. Revenons donc sur les termes et définissons les précisément.

Ne souhaitant pas me lancer à l'aveugle et dans l'à-peu-près, je me suis procuré une copie papier de l'excellent TeXbook de Donald Knuth, auteur de TeX. Mon travail est entre autres le résultat de la lecture de ce livre de référence.

TeX est donc un logiciel de composition de documents.
Son but est de prendre une entrée textuelle composée de caractères et de sortir un document formaté.
TeX est aussi un langage, utilisé pour composer lesdits documents.
Même s'il est Turing-complet, je m'avancerai ici à dire que TeX est en fait un langage dédié (DSL), et a été spécifiquement créé pour mettre en forme des documents.

Le premier défi rencontré tient à la nature du langage.
TeX est un langage à macros qui sont développées au fur et à mesure du traitement de l'entrée.
Il n'est pas parsable (analysable syntaxiquement) au sens classique des autres langages ; il est impossible de construire un arbre syntaxique d'une entrée.
L'entrée peut modifier le comportement futur de TeX, notamment la manière dont le reste de l'entrée est analysé et interprété, ce qui rend impossible la construction d'un arbre syntaxique.
Pour un exposé du problème et un traitement d'un sous problème, je conseille vivement la lecture de cet article(pdf).

Qu'entends-je ? Il est impossible d'analyser du TeX ?
Ce n'est pas bien grave car ce langage permet simplement d'écrire une séquence de commandes à interpréter dans l'ordre pour produire un joli document.
Une fois qu'une commande a été traitée, TeX continue avec le reste, jetant ce qui a déjà été pris en compte.
Nous voyons donc déjà venir le côté de traitement par flot.

Pour ce faire, TeX reconnait environ 300 commandes primitives de natures diverses :

  • les commandes liées aux macros et à leur développement (définition, conditions, …) ;
  • les commandes représentant des variables utilisées pour la composition du document (tailles, polices, …) ;
  • les commandes de composition de document ;
  • d'autres types de commandes encore pour gérer des interactions, les logs, etc.

Outre leur description dans le livre de Knuth, vous pourrez trouver une excellente et complète référence en ligne de toutes les primitives de TeX, agrémentée de plein d'exemples.

Les commandes de composition sont des instructions à l'ordinateur afin de lui indiquer comment représenter le document.
C'est une séquence, sans structure, un peu comme des instructions de dessin.
Pour faire simple, TeX crée des boites, qui peuvent contenir d'autres boites, des caractères ou des lignes, et l'ensemble de ces boites compose des pages, des paragraphes, des lignes et des caractères.
Beaucoup de calculs ont lieu, tous plus intéressants les uns que les autres afin que le résultat soit agréable et respecte certaines règles typographiques.
Par exemple, l'algorithme de calcul des césures utilisé par TeX pour savoir quand couper un mot en fin de ligne pour que le résultat soit correct dans la langue du document pourrait faire l'objet d'un futur article dédié.
Et ce n'est qu'un exemple parmi d'autres.

À noter qu'il n'y a aucune notion de structure de document (titre, chapitre, section, …) dans TeX.

Le gros problème de TeX est qu'il est pour le moins rugueux à appréhender, et ne contient pas de notions de très haut niveau pour définir les éléments structurels d'un document.
Fort heureusement, le langage de macros permet de définir des commandes de plus au niveau, qui seront rapidement ramenées aux primitives par TeX, mais qui permettent à l'utilisateur de manipuler des concepts de documents plus facilement.

Dans le vocabulaire consacré, un ensemble de macros utilisé pour un document est appelé un format.
Dans son livre, Knuth définit le format plain TeX qu'il utilise lui même pour composer son livre.
Entre autres, ce format définit des macros permettant de déclarer des théorèmes numérotés, de créer des sections ou encore de composer des documents avec des caractères accentués non présents sur le clavier.

C'est mieux, mais encore compliqué et assez bas niveau.

LaTeX ? ConTeXt ?

TeX n'est réellement devenu populaire dans certains milieux que par d'autres formats, très (trop) complets, comme LaTeX ou ConTeXt.
Ces deux projets consistent en un énorme ensemble de macros TeX entassées les unes sur les autres avec des concepts plus haut niveau comme les tables de matière et de figures ou le placement automatique de figures.
Ils ont aussi une structure modulaire permettant de charger des paquets adaptés à des usages précis (dessin, tableau, …).

Ces formats simplifient grandement l'usage de TeX, mais ont à mes yeux de gros problèmes :

  • ils sont composés d'un empilement démentiel de macros, développées lors du traitement du document rendant le diagnostic quelque peu ardu en cas d'erreur se produisant au fin fond d'un développement ;
  • ils donnent une fausse impression de langage de documents structurés alors que tout est toujours à plat. Les éditeurs qui prennent les commandes comme \chapter et autres \section comme des primitives sont très peu stables face au cas général d'une entrée TeX, et il est très facile de les faire se prendre les pieds dans le tapis et casser tout leur intérêt (outline, …) avec quelques \def bien placés ;
  • ils confondent trop contenu et mise en forme sémantique (mise en exergue, en gras, …) et mise en forme du document final (page format A4, format pdf, …).

Cependant ces outils restent dans le top de l'existant pour moi et surpassent n'importe quel traitement de texte WYSIWYG, tant en terme d'utilisabilité que de résultat (phrase subjective détectée).

Vous remarquerez que dans cette section, à aucun moment je n'ai parlé de formules mathématiques.
Il est en effet souvent admis que TeX et ses dérivés sont principalement utiles pour écrire des maths.
Je dirais : non.

Tout simplement, la composition de formules mathématiques consiste en un sous ensemble non trivial de la composition de document en général et TeX la prend en charge de manière native sans s'y restreindre.
Ainsi, même sans avoir besoin de formater des symboles grecs ou des équations, TeX peut avoir des avantages, que ce soit pour mettre en forme des hiéroglyphes ou des partitions de musique ; on peut même estimer qu'avoir ses documents (spécifications, lettres, factures, …) sous format texte est plus fiable pour les stocker pendant des années que n'importe quel format de traitement de texte et utiliser TeX à ces fins.
Tout est histoire de goût et de préférence bien sûr, et je m'éloigne du sujet initial.
Tout ça pour dire : TeX n'est pas synonyme de maths.

Périmètre de la bibliothèque

Maintenant que nous savons de quoi nous parlons, je souhaite recentrer la dépêche sur ce qui a vocation à être pris en charge dans la bibliothèque que je développe.
Le but est de savoir interpréter une entrée TeX composée de caractères et de macros et de sortir une suite de commandes primitives pouvant être ensuite interprétées pour mettre en forme le document.
Le but premier est donc d'implémenter la définition et le développement des macros.
Et ce problème n'est déjà pas forcément trivial.

Lire du TeX

Avant de parler du traitement des macros, il est important de définir comment Knuth a envisagé la lecture d'une entrée par TeX.
Tout le reste dépend fortement de ses choix.
Dans son livre, il explique que l'entrée est avant tout une suite de caractères, qui sont ensuite transformés en tokens qui peuvent correspondre à un caractère ou une séquence de contrôle de la forme \name.
Ces tokens sont ensuite développés via le développement de macros, jusqu'à ce que des commandes primitives soient rencontrées.
Quand de telles commandes apparaissent, elles sont interprétées.

Nous voyons ici se découper un traitement de l'entrée par couches successives qui la transforment petit à petit pour mettre en forme le document.
Ce qu'il est important de noter est que le développement des macros se fait au niveau des tokens, donc après une première couche d'analyse pour transformer les caractères.

De plus, les macros et primitives pouvant modifier la manière de transformer les caractères en tokens, nous comprenons aussi que l'entrée doit être traitées au fur et à mesure et ne peut pas être lue entièrement avant d'être traitée.

Dans son livre, Knuth utilise un vocabulaire biologique assez parlant pour décrire les différentes phases de traitement de TeX :

  • TeX lit les caractères avec ses yeux et les transforme en tokens ;
  • les tokens passent ensuite par la bouche de TeX qui les mâche pour en faire des primitives ;
  • ces primitives sont ensuite passées au système digestif qui les digère et un document formaté en sort.

Le vocabulaire usuel voudrait que les yeux soient une sorte de lexer et que la bouche soit le parser.

Le système de macros de TeX

Donc TeX est un langage de macros.
C'est bien mais il existe plusieurs types de systèmes de macros (section 2 pour un résumé) qui sont très différents les uns des autres.

Sans faire durer le suspens plus longtemps, entrons directement en matière : TeX possède des macros de type lexical, c'est-à-dire qu'il manipule des éléments lexicaux (les tokens) et qu'une fois développée, une macro est remplacée par une suite de tokens ne formant pas forcément une structure syntaxique correcte.
Il s'agit tout simplement de remplacer une suite de tokens formant un appel à une macro par une nouvelle suite de tokens, qui sont à leur tour développés si nécessaire, et ainsi de suite.

Les macros agissent sur les tokens et non sur les caractères de l'entrée.
Globalement il existe en première approximation deux types de tokens seulement :

  • les caractères comme c
  • les séquence de contrôle comme \a.

Si vous souhaitez plus de détails sur les règles qui transforment les caractères en tokens, je vous renvoie aux chapitres 7 et 8 du TeXbook.
Notamment vous pourrez y trouver la raison pour laquelle des espaces semblent disparaitre dans vos documents, comme avalés par TeX.

Les macros peuvent prendre des paramètres (jusqu'à neuf dans l'implémentation de Knuth), avec ou sans délimiteur, elles peuvent être développées au moment de leur déclaration ou à leur utilisation, être globales ou locales, etc.
Les règles qui régissent leur utilisation et leur définition sont assez nombreuses et font l'objet d'un chapitre entier dans le TeXbook (chapitre 20).
Je n'aborderai pas toutes les subtilités ici, mais traiterai d'un exemple simple.

\def\double#1{#1#1}

Cette commande \def déclare une nouvelle macro \double qui prend un argument #1 en entrée et le double.
Ainsi, l'appel

\double{to}

est développé en

toto

Pour procéder au développement de macros dans une entrée TeX, il faut simplement être capable de lire autant de tokens que nécessaire pour avoir tous les paramètres de la macro, et de les remplacer par le texte de remplacement donné lors de la définition, et de lire la nouvelle entrée.

TeX possède aussi des primitives qui entrent en jeu dans le développement de macros, comme les conditionnelles.
D'autres primitives inhibent temporairement le développement de macros, comme \noexpand.
Tout cela est composé de règles simples individuellement, mais dont la combinaison résulte en un système assez complexe.

Reprise sur erreur

Un autre aspect que je souhaitais mentionner ici est la reprise sur erreur de TeX.
En cas d'erreur lors du développement de macros ou du traitement d'une primitive, le système de reprise sur erreur de TeX se met en marche.
Il permet soit de relire l'entrée pour corriger l'erreur, soit de sauter les tokens jusqu'à trouver une séquence de tokens correcte.

Ce mécanisme est d'intérêt dans le traitement de données par flot et nous y reviendrons sûrement dans la suite.

Conclusion

Nous avons donc vu ce qu'est TeX et comment il se lit à un haut niveau.
Armés de ces concepts et définitions, dans les prochains épisodes, nous aborderons le design de la bibliothèque ToolXiT, le traitement de données par flot en général et dans notre cas ainsi que les solutions mises en place pour que tout se passe bien.

ToolXiT est en développement constant, cette série de dépêche devrait me permettre de le faire évoluer en même temps, et j'espère qu'il en sortira quelque chose de bon.
N'hésitez pas à faire des retours sur ces articles ou sur l'implémentation, ils sont les bienvenus.

Aller plus loin

  • # La suite !

    Posté par  . Évalué à 10.

    Hello,

    Superbe dépêche très instructive sur l'histoire de TeX et LaTeX !

    J'attends avec impatience la suite.

  • # Séries !

    Posté par  (Mastodon) . Évalué à 10.

    Je vais essayer de faire une série aussi intéressante que celle de rewind sur la création de jeu vidéo

    Ho oui ! Allons-y, multiplions les séries ! Du coup, j'ai créé une page sur le wiki pour les recenser : Séries de dépêches et de journaux sur un même thème.

  • # super, merci.

    Posté par  . Évalué à 4.

    je suis tellement une brelle avec TeX que le seul que j'arrive a utiliser (et "utiliser" est a minimiser) c'est LyX.

    • [^] # Re: super, merci.

      Posté par  . Évalué à 3.

      LyX est vraiment bien pour combiner WYSIWYG et rendu fait par TeX.
      Son approche est intéressante, le TeX est un format de stockage plus qu'une fin en soi dans LyX, qui lui gère vraiment un document. Je trouve l'outil super sympa même s'il est d'aspect rugueux.

      • [^] # Re: super, merci.

        Posté par  . Évalué à 3.

        Quand je m'étais mis à LateX, j'avais regardé ce logiciel, mais il m'avait paru beaucoup moins flexible et pratique (notamment car trop cliquodromesque) que LateX, et donc moins intéressant… Un autre désavantage, c'est que je comptais surtout sur lui pour ne pas m'embêter avec les images (i.e. pouvoir faire du copié collé avec directement), mais que cela n'était pas supporté, voire plus embêtant encore que de taper \begin{figure…..

        Bon, maintenant je fais du XeLateX avec l'éditeur TeXworks et c'est parfait pour mon usage (régulier). Et j'ai une macro \fig pour insérer des images :)

        • [^] # Re: super, merci.

          Posté par  . Évalué à 2.

          Quand je m'étais mis à LateX, j'avais regardé ce logiciel, mais il m'avait paru beaucoup moins flexible et pratique (notamment car trop cliquodromesque) que LateX, et donc moins intéressant…

          En même temps, c’est aussi sa principale force : il est possible de le donner en main à des gens qui n’ont pas envie d’apprendre LaTeX.

          Comme le format textuel qu’il utilise se versionne beaucoup mieux que des documents libreoffice, c’est plutôt pas mal dans un contexte collaboratif.

          Mes commentaires sont en wtfpl. Une licence sur les commentaires, sérieux ? o_0

          • [^] # Re: super, merci.

            Posté par  . Évalué à 1. Dernière modification le 19 novembre 2015 à 12:05.

            Je voulais dire qu'à l'époque j'avais préféré apprendre LateX plutôt que d'apprendre à me servir de LyX. Le code produit est certes plus lisible que pour LibreOffice, mais est-ce vraiment difficile ? :p

  • # TeX et LaTeX (et conTeXt) ... mais peu de ToolXiT

    Posté par  . Évalué à 3.

    Merci beaucoup pour cette article de présentation de votre bibliothèque et de TeX en général.

    Pour la petite histoire, je pense qu'il manque la partie sur la prononciation correcte de TeX et de LaTeX (avec un K). Pour conTexT, je ne sais pas.
    C'est fort instructif et très accessible.

    Maintenant, je me pose la question suivante : quid de votre bibliothèque ?
    Je n'ai même pas compris à quoi elle pouvait servir, ni pourquoi elle a été créée.

  • # Objectifs de la bibliothèque?

    Posté par  (site web personnel) . Évalué à 4.

    Tu n'as pas dit exactement ce que tu voulais faire avec ta bibliothèque, et un bref coup d'œil au Github du projet ne m'a pas beaucoup plus renseigné. Apparemment tu as au moins envie d'écrire un interpréteur de macros TeX – et il y a un point qui va rapidement t'embêter: que faire pour interpréter les commandes qui examinent l'état de la machine? Comme tu le remarques, on ne peut pas faire d'analyse lexicale ou syntaxique d'un programme TeX. Comme le programme s'écrit lui-même au fur et à mesure qu'on l'interprète on ne peut pas vraiment faire d'analyse a priori.

    Un point capital que tu effleures sans vraiment énoncer – et que je veux donc souligner – est que TeX est un système de composition typographique tandis que LaTeX est un système de description de documents. Bien-sûr, strictement parlé, toutes les primitives TeX peuvent être utilisées dans un document LaTeX, mais il est recommandé d'utiliser LaTeX comme un système déclaratif en “oubliant” qu'il est écrit en TeX. Si tu t'intéresses à la manipulation des documents LaTeX sous forme symbolique, tu peux donc faire des hypothèses restrictives sur leur structure, qui te permettraient d'écrire un analyseur syntaxique.

    Si tu es à la recherche de sources d'inspiration pour résoudre les problèmes que tu vas rencontrer, il y a littéralement des dizaines d'implémentations de TeX – ou de variantes – dans des languages divers, et je crois même qu'il existe une bibliothèque C encapsulant l'interpréteur TeX.

    Cf. https://en.wikipedia.org/wiki/New_Typesetting_System, https://www.ctan.org/tex-archive/systems/ant?lang=en

    • [^] # Re: Objectifs de la bibliothèque?

      Posté par  . Évalué à 4. Dernière modification le 18 novembre 2015 à 11:45.

      Il me semblait avoir été clair, mais l'objectif de cette dépêche n'est aucunement de parler de ToolXiT pour le moment, qui est juste un prétexte pour parler de ce qui est énoncé dans le titre : lire du \TeX.

      Pour le moment cette bibliothèque est une application de ce que j'ai appris et une preuve de concept en constante évolution.
      Sur le long terme, le but est de pouvoir l'utiliser en frontend d'import pour une bibliothèque plus large de manipulation de documents. J'y reviendrai surement plus tard quand la série sera plus avancée, mais c'est vraiment pas l'objectif du moment.

      Je commence par la base donc avec l'interpréteur de macros. Ce que tu dis est cité dans l'article, et bien identifié, sur le fait que l'état change et que le comportement ultérieur en est affecté, et justement tout ce qui est dit ici expose (à un haut niveau) ce problème, les réponses viendront dans les articles suivants de cette série.

      Un point capital que tu effleures sans vraiment énoncer – et que je veux donc souligner – est que TeX est un système de composition typographique tandis que LaTeX est un système de description de documents. Bien-sûr, strictement parlé, toutes les primitives TeX peuvent être utilisées dans un document LaTeX, mais il est recommandé d'utiliser LaTeX comme un système déclaratif en “oubliant” qu'il est écrit en TeX. Si tu t'intéresses à la manipulation des documents LaTeX sous forme symbolique, tu peux donc faire des hypothèses restrictives sur leur structure, qui te permettraient d'écrire un analyseur syntaxique.

      Je ne parle pas de \LaTeX ici, mais comme dit dans le titre je parle du problème de "lire du \TeX". Comme je le dis aussi ci-dessus, j'explique ce que \LaTeX apporte et les problèmes que j'ai avec (ça reste personnel bien sûr comme analyse) et justement je ne veux pas faire d'approximations, comme il en existe un paquet dans pas mal d'outils.
      Je ne veux pas faire du \LaTeX mais du \TeX, ce qui permet plus de choses derrière car ça ne présuppose aucun format utilisé. Ce qui est recommandé dans le cadre de \LaTeX est hors sujet là, je ne souhaite pas écrire un document, je ne dis pas comment utiliser \LaTeX, je parle de lire du \TeX en exposant le problème à un haut niveau.

      De plus cette série utilise aussi \TeX comme prétexte pour parler de traitement de données par flot et pour présenter un outil pour ce faire : les iteratees (teasing !).

      Si tu es à la recherche de sources d'inspiration pour résoudre les problèmes que tu vas rencontrer, il y a littéralement des dizaines d'implémentations de TeX – ou de variantes – dans des languages divers, et je crois même qu'il existe une bibliothèque C encapsulant l'interpréteur TeX.

      Cf. https://en.wikipedia.org/wiki/New_Typesetting_System, https://www.ctan.org/tex-archive/systems/ant?lang=en

      Je connais bien sûr ces projets, j'ai fait pas mal de recherches avant de me lancer, mais mon but n'est pas de le copier. Il n'existe pas des dizaines de vraies implémentations de \TeX, beaucoup font des raccourcis pour justement pouvoir le parser au sens traditionnel et sont en fait des parsers d'un sous ensemble de \LaTeX. Je ne veux pas encapsuler l'existant mais proposer une autre solution au problème. Je ne veux pas non plus proposer un nouveau langage mais avoir une interpréteur complet d'un langage existant, le but étant à terme de pouvoir l'utiliser sur des documents déjà écrits.

      En bref, le but de cet article est de présenter une problématique (le fait que ce soit du \TeX est juste un prétexte, ça pourrait s'appliquer à d'autres données), et la suite sera de montrer comment j'y réponds. Ce n'est pas de la pub pour ToolXiT, qui est à l'état de jouet inutile. Cette dépêche en attend d'autres, comme je le précise au début, seule elle n'apporte rien d'autre que l'énoncé d'une problématique.
      Je ne voudrais pas qu'on se trompe en lisant cette dépêche en pensant qu'elle présente un remplaçant à \TeX ou un autre système, ou bien qu'elle parle du traitement de documents en \LaTeX, c'est hors du périmètre.

      • [^] # Re: Objectifs de la bibliothèque?

        Posté par  (site web personnel) . Évalué à 2. Dernière modification le 18 novembre 2015 à 13:33.

        Comment est-ce que tu peux “lire” ou interpréter le code suivant par exemple?

        \setbox1=\hbox{Un texte}
        \ifdimen\wd1>10pt \catcode`\@=10 \else \catcode`\@=11 \fi
        \def\atsign{@}
        

        En prenant d'autres exemples qui composent un paragraphe, il ne semble pas possible de produire une interpréteur TeX qui se comporte conformément à l'interpréteur original sans en réimplémenter tous les aspects. Est-ce donc ton but?

        Si tu aimes les formats TeX qui ne sont pas LaTeX, j'en profite pour faire de la pub pour Cadet. :)

        • [^] # Re: Objectifs de la bibliothèque?

          Posté par  . Évalué à -1.

          En prenant d'autres exemples qui composent un paragraphe, il ne semble pas possible de produire une interpréteur TeX qui se comporte conformément à l'interpréteur original sans en réimplémenter tous les aspects. Est-ce donc ton but?

          Ça me semble aller de soi quand je dis vouloir "lire du TeX". Je ne vois pas ce qui te pose problème en fait…
          Une fois encore, le but est de proposer une solution au problème de traitement par flot avec une application au TeX.

          Dans la bibliothèque en cours de développement, il y a un environnement qui contient les registres (globaux et locaux) pour toutes les dimensions internes de TeX (enfin qui en contient de plus en plus).
          Cet environnement est modifié au fur et à mesure du traitement suivant les actions des primitives TeX sur ce même environnement.

          Si tu aimes les formats TeX qui ne sont pas LaTeX, j'en profite pour faire de la pub pour Cadet. :)

          Tu en avais déjà fait la pub ici non ? Il me semble l'avoir découvert suite à un journal.

          • [^] # Re: Objectifs de la bibliothèque?

            Posté par  (site web personnel) . Évalué à 4.

            Ça me semble aller de soi quand je dis vouloir "lire du TeX". Je ne vois pas ce qui te pose problème en fait…

            Ce qui va de soi ici ou là ne va pas de soi ailleurs, certains diraient plutôt “interpréter du TeX” que le lire, mais en cas de doute on peut toujours poser des questions.

            Tu en avais déjà fait la pub ici non ? Il me semble l'avoir découvert suite à un journal.

            C'est tout à fait possible car je parle régulièrement de mes projets ici mais je n'en ai pas de souvenir précis.

  • # Césure ?

    Posté par  . Évalué à 4.

    Bonjour.

    Et merci pour votre article ; le regard d'un programmeur sur TeX est très intéressant.

    L'algorithme de césure vous intéresse ? Le hasard fait qu'un article francophone très détaillé existe à son sujet : vous le trouverez sur le site des Cahiers GUTenberg, la revue du groupe francophone des utilisateurs de TeX.

    Il existe par ailleurs un site francophone de questions & réponses sur (La)TeX : texnique.fr.

    Cordialement,

    Pathe

    • [^] # Re: Césure ?

      Posté par  . Évalué à 1.

      Je m'étais amusé à l'implémenter en quelques heures, c'est vraiment incroyable comment un concept aussi simple donne des résultats aussi bons. Le code se trouve sur GitHub.

      Merci pour le pointeur vers ce numéro, je ne l'avais jamais lu.

  • # Césure, suite

    Posté par  . Évalué à 1. Dernière modification le 24 novembre 2015 à 17:30.

    Chose étrange, je ne réussis plus à modifier mon message précédent. L'article est intitulé « Voyage au centre de TeX : composition, paragraphage, césure » et son auteur est Yannis Haralambous.

  • # musixtex

    Posté par  . Évalué à 2.

    Bonsoir,

    le lien concernant l'écriture de partitions est cassé; ce n'est pas grave, car je
    suis persuadé que le système MusixTex développé par feu Daniel Taupin n'était pas
    capable de noter des partitions utilisant plus de 12 systèmes (un système pouvant
    contenir jusqu'à 4 portées). J'en avais fait la remarque à Daniel T. un 29 mai
    avant qu'il ne meure. Il pensait qu'il y avait « de quoi faire ». Oui, il est possible
    de noter en MusixTex beaucoup de musique chambre - mais pas toute la musique.

    Du concept erroné à la base de MusixTex ne survivent que les fontes que Daniel T.
    a améliorées et qu'on retrouve dans certains projets libres qui se portent bien.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.