Le mpg-blog

LaTeX et autres geekeries

Rencontre ConTeXt 2008, partie 6

without comments

5 minutes de gloire

  • Professionnel de l’édition, travaillant au départ sous FrameMaker, bouquins d’histoire de l’art. Progressivement plus de matériel compliqué, surtout des appareils de notes complexes et volumineux. Il entend alors parler de TeX, essaye LaTeX, et a des problèmes d’interférence de paquets. Essaie alors ConTeXt, dont le développement centralisé évite ces problèmes. Il reste encore des choses à ajuster à la main, au niveau des la table des matières et l’index (interlignes, etc) quand même.
  • Sort un slide super marrant avec des bonhommes qui tiennent des drapeaux et nous demande de deviner ce que ça veut dire. Visiblement c’est du langage de sémaphore. L’auteur fait aussi des bouquins bilingues (grec + thèque) (une page de chaque langue face à face) avec des maths et beaucoup de notes de bas de pages. Joue aussi avec de l’XML pour composer son carnet d’adresses en ConTeXt.## Taco : finalement pas de tutoriel Lua

Comme il ne peut de toute façon pas nous apprendre Lua en 45 minutes, il va plutôt nous montrer comment c’est utilisé dans LuaTeX. Il recommande chaudement (et j’approuve) le livre Programming in Lua pour apprendre (pas très cher en papier, et la première édition lisible en ligne). (La référence Lua, à jour, est aussi disponible en ligne, mais peut aussi s’acheter en papier si l’on veut, ndlr.)

Commence par montrer la différente entre print() et tex.print() : l’un écrit dans le log, l’autre dans le document (dans le flux d’entrée de TeX pour être précis). Pour apprendre ce genre de choses, voir la section « the {texio} library » dans le manuel de LuaTeX (nommé luatexref-t.pdf, et composé avec ConTeXt et MPlib pour l’anecdote : observer les lunes en bas des pages : elles font un tour complet sur la longueur du document ; pourtant ça compile très vite et Hans en est très fier).

Présente ensuite \startluacode (c’est du ConTeXt) qui a l’avantage de lire le code Lua en verbatim (pratique pour les % et autres). Le démo met du temps à marcher parce qu’il faut quand même échapper le signe % pour TeX, puis le \ pour Lua, et qu’il faut bien 5 minutes pour retrouver la bonne combinaison. (Je ne sais pas si c’est si anecdotique que ça, à la réflexion.)

Montre ensuite un exemple impressionnant mais un rien trop technique pour moi de génération à la volée d’une fonte virtuelle à utiliser dans le document (en modifiant une fonte existante).

L’orateur suivant va plus loin en montrant comment on peut générer des fontes virtuelles dont les glyphes sont des images externes auxquelles on peut même appliquer des traitements basiques (rotation, étirement, symétrie). C’est marrant pour montrer ce qu’on peut faire, mais quand à l’intérêt réel… Ensuite on enchaîne il enchaîne sur sa vraie présentation :

Hartmut Henkel : Aperçu de LPeg pour les habitués de AWK

Bon, soyons honnêtes avant que ça commence : je ne sas pas me servi de AWK même si je vois vaguement ce que c’est, et j’ai entendu dire que Lpeg est une bibliothèque Lua récemment intégrée à LuaTeX, mais rien de plus. Voyons si ça s’éclaire.

La présentation commence par une blague (réussie) sur ce que wikipedia renvoie pour Lpeg : low pressure electric gun. En vrai, PEG signifie parsing expression grammar et le L est là pour Lua. Il s’agit de décrire un langage formel et de récupérer des chaînes dedans correspondant aux différents éléments de la « phrase ».

Différences entre des regex et Lpeg : 0. Il y a des ancres (^) implicites. 0. On peut construire les motifs LPeg plus facilement. 0. Pas de problèmes de fin de ligne. 0. Pas de problème non plus pour traiter des flux binaires. 0. Grammaire plus puissante.

(Je décroche assez rapidement : la présentation est vraiment adressée aux habitués de awk. J’aurais quand même appris quelques truc choses si un jour je dois utiliser lpeg.)

Taco : les fichiers sources de ConTeXt MarkIV

Visite guidée des divers fichiers sources de ConTeXt, à la manière des bus à impériale qui font le tour de la ville. Le bus avance assez vite, il y a plein de bâtiments, pas le temps de prendre de photos. Ça semble quand même bien structuré par quartier : caractères, boîtes, fontes, langues, modules, etc. Les bâtiments abritent généralement des macros TeX ou des fonctions Lua, plus rarement les deux peuvent cohabiter. On peut retrouver le plan de la ville dans le manuel de ConTeXt (ndlr : comme dirait Wikipedia, référence nécessaire, il y a sans doute plus d’un manuel… j’imagine qu’on trouvera aussi prochainement la présentation de Taco sur le site de la conférence).

Ah, en fait Hans reprend la visite, on va maintenant s’attarder sur certains quartiers. On regarde par exemple char-def.lua qui est une grosse table en Lua associant à chaque caractère certaines propriétés telles que définies par le standard Unicode (catégorie, direction, nom, version majuscule ou minuscule (équivalent de \uccode et \lccode)…).

On change de quartier et on flâne un peu dans core-*, qui gère des choses comme les inclusions de fichiers, etc. Puis on va voire les font-* : là aussi il y a des tables gigantesques recensant toutes les propriétés OpenType connues, ce genre de chose. Il y a une famille nommée l-* qui reprend en gros les diverses bibliothèques Lua intégrées à LuaTeX et les enveloppe dans des fonctions qui font par exemple un peu plus de contrôle d’erreur que les versions « brutes » fournies par LuaTeX. D’autres familles ont le contrôle de « régimes » (les encodages d’entrée). Il y a aussi un gratte-ciel nommé sort-lan.luaqui définit comment trier des mots dans différents langages.

(Au passage, j’observe une ou deux astuces de codage en Lua pour intercepter proprement certaines erreurs communes et avoir l’occasion d’engueuler l’utilisateur nous-même (on va pas laisser ce plaisir à l’interpréteur Lua, non plus), tout en gardant un code compact et lisible. Tant mieux parce qu’à part ça je commence à me perdre dans certains points particuliers à ConTeXt qu’Hans est en train de détailler.)

Written by mpg

août 22nd, 2008 at 6:38

Posted in TeX et compagnie

Tagged with