Le mpg-blog

LaTeX et autres geekeries

Rencontre ConTeXt 2008, partie 5

with 2 comments

Deuxième jour de la conférence : le réveil est aussi difficile qu’hier, et on commence par les 5 minutes de gloire réglementaires…

5 minutes de gloire

  • N’utilise pas encore ConTeXt, faute de manuel pour l’apprendre (sous forme de livre, pas de pdf). C’est la raison de sa présence ici : apprendre de façon vivante.
  • Mathématicien à la base. Utilisateur de ConTeXt, et réalisateur de fontes (Minion Math). Son principal intérêt pour ConTeXt vient de ‘intégration de LuaTeX, plus précisément ses apports au niveau fontes et typo.## Martin Schröder : bibliothèques pdf et TeX

(Apparemment la même présentation qu’à Cork.)

(L’orateur fait une expérience et demande qui dans l’audience a déjà ouvert un pdf dans son éditeur de texte (dézippé) pour voire : une forêt de mains se lève. Deuxième question : qui a regardé la standard pdf — déjà moins de mains…)

(Nldr : actuellement, pdfTeX utilise xpdf pour la plupart de ses manipulations sur les pdf (inclusion, etc.).) D’autres biblio sont apparues récemment, et leurs fans respectifs demandent à l’équipe pdfTeX pourquoi elle ne les utilisent pas plutôt. Exigences pour une bonne biblio pdf : être libre, activement maintenue, proposer un haut niveau d’abstraction, permettre l’écriture, supporte pdf1.5, les couleurs…

Actuellement il y a trois moteurs TeX produisant du pdf, sans réelle base de code commune. pdfTeX mélange xpdf (C++), TeX (WEB-Pascal), et du code en C, avec XPDF lié statiquement. LuaTeX fait à peu près pareil, sans couche d’abstraction claire entre LuaTeX et pdf. XeTeX au contraire sépare deux programme (xdvipdfmx a réécrit son propre analyseur de pdf).

Xpdf a ses défauts : conçus pour lire au départ (pas écrire), pas conçus comme une biblio, problème de sécurité… D’autres biblio sont : - poppler : fork de xpdf, actif, mais pas d’écriture ; - podofo : très intéressante, C++, ecriture, mais surtout exploration ; - GNU PDF : belles promesse, rien de publié ou de prêt à sortir ; - iText : en Java, écriture ; - MuPDF : dérive de GhostScript, pas très actif ; - multivalent : lecteur universel en Java, écriture, dernière activité en 2006 ; - d’autres…

En conclusion, il n’y a pas de solution parfaite maintenant : xpdf vieillit, poppler semle prêt, podofo, Mupdf et GNU PDF sont le futur.

Hartmur Henkel : MetaPost pour débutants

Outil de programmation de graphiques vectoriels, de haute qualité typo (avec un peu d’effort) bien copain avec (La)TeX, langage de macros, fun et même Metafun (avec ConTeXt). Exemple de truc bitmap moche et comparaison avec la version MetaPost.

Histoire : descendant de MetaFont (version 0 en 1984 par Knuth), MetaPost nait en 1990, assez peu développé depuis 95, récemment repris avec brio par Taco H. (bugs corrigés, fonctionnalités, MPlib en LuaTeX, etc.). Le différence entre les deux est essentiellement le format de sortie : PS (vectoriel) contre GF (bitmap).

Sources d’info : manuel de l’utilisateur, Metafont book (Knuth), le format plain.mp, le paquet MetaFun et sa doc.

Pour travailler avec, il faut : le programme mpost (toute bonne distro TeX), un éditeur de texte, lecteur PS ou PDF, papier et crayon pour concevoir et calculer le dessin. Exemple de document :

prologues := 3;     % sortie EPS
beginfig(1)     % figure numéro 1
draw (0,0)--(3,4);  % commande de dessin
endfig;         % fin de la figure
end         % fin du fichier

Les commandes ne commencent pas par \ et l’unité par défaut est le point PostScript. En ConTeXt, on peut inclure les eps produits par MP directement en compilant par PDFLatex, grâce à quelques macros magiques qui s’occupent de tout.

On voir ensuite quelques commande de base, et le concept de développement (et pas exécution) des boucles for par exemple. Concept pratiques, comme le solveur d’équations linéaires. Introduction à la syntaxe bizarre (pour moi) des variables avec suffixes et de la variable spéciale (!) z. Exemple de chemins, cycles, etc. (Remarque perso : la syntaxe de TikZ ressemble en effet beaucoup à celle de MP, concernant les chemins.)

Trucs qui m’impressionnent : accès un « temps » dans la représentation paramétrique d’un chemin (ça a l’air super, ça), extraction de sous-chemins, « temps » et points d’intersection de chemins (ça c’est encore mieux). Les définitions vardef de macros et leur utilisation pour automatiser plein de calculs.

Intégration avec TeX pour le texte des étiquettes, légendes etc. avec etex et btex. Lent, un peu lourd (fichiers intermédiaires) pour certains trucs. On comprend l’intérêt d’un truc comme MPlib liant étroitement LuaTeX et MP.

Ce qui fournit une transition toute trouvée vers

Taco : MPlib

Buts : un composant MetaPost ré-utilisable « reentrant » (?), sans les vieux bugs, rapide. Problèmes avec la MetaPost actuel : le WEB-Pascal a mal vieillit, les morceaux de code C restant sont assez indissociable du reste de TeX Live niveau compilation… Solution : tout passer en CWEB, ne dépendant que de ctangle pour compiler, et livrer le résultat sous forme d’une bibliothèque. Le programme mpost devient un léger enrobage autour de cette bibliothèque. Suivent quelques détails techniques sur le style de programmation utilisé.

Taco présente ensuite un exemple de programme C minimal appelant MPlib, ainsi qu’un programme Lua minimal l’utilisant. La structure de données retournée est intéressante : postscript en est une partie mais pas tout, ça ouvre la voie à d’autres types de sortie (théoriquement). Le système horriblement compliqué qui fait fonctionner btex...etex et TEX() en MP est ré-implémenté sous forme d’une sous-bibliothèque : plus simple, plus propre, plus rapide.

Le planning : première bêta 1.100 présentée au TUG’08, avec tout les outils de base évoqués ci-dessus. La suite : plus d’allocation dynamique, étendre les capacités (limites et précision) (= MegaPost), améliorer les messages d’erreur et étendre les API.

Taco finit en remerciant les différents TUG de par le monde qui ont financé le projet, lui permettant d’y consacrer un temps suffisant, et en montrant différents trucs de MP utilisés dans sa présentation, avec les temps de compilation via pdfTeX+MP ou LuaTeX+MPlib : la différence est impressionnante.

Autre jolie transition….

Hans : intégration de MetaPost dans ConTeXt

Avec beaucoup d’exemple et de mesures de performance. Où j’apprends au passage que metafun est un format metapost (il y a des formats MP comme il y a des formats TeX), actuellement le seul utilisable via l’interface utilisateur (aussi nommée) metafun de ConTeXt pour MetaPost.

Il y a pas mal d’explications techniques sur beaucoup d’aspects qui étaient problématiques auparavant, et les solutions apportées. Ce qu’un débutant comme moi en retient, c’est que maintenant, ça marche exactement de la façon dont on veut que ça marche : ça a enfin l’air raisonnable, il n’y a plus de hacks insensés. Le truc est bien intégré et l’interface utilisateur semble claire (autant que je puisse en juger).

Faire un bouquin de 1200 pages sur les langues du monde entier

Rapport d’expérience sur la réalisation (en ConTeXt) de ce bouquin (référence ?) décrivant les quelque 7000 langages référencé, avec des cartes, un index monstrueux (400 pages), etc. et la création à cet effet du module ethnologue pour ConTeXt.

On parle de beaucoup de problèmes d’organisation, comme les répertoires où mettre les fichiers, le définition du mode « relecture » (très propre en ConTeXt, il faut le dire), comment lire des fichiers de données aux formats variés (ça a aussi l’air facile), l’index, etc. Le question de l’encodage et des fontes n’est pas abordée : ce n’était visiblement pas un problème. XeTeX a été utilisé avec MarkII.

Remarque hors sujet : au milieu de la présentation, des trolls sur langues vs idiome sont lancés. En général, on apprend pas mal de choses sur les langues, les systèmes d’écriture et leurs histoires ici (surtout le soir autour d’un verre de whisky breton (on aura tout vu))…

Une des conclusions est que TeX a une place à prendre par rapport à la concurrence (sérieuse, genre InDesign ou XPress, pas Word) pour les projets traitant des gros paquets de données structurées presque en base de données, car il autorise un traitement automatique programmé très efficace dans ce contexte.

Written by mpg

août 22nd, 2008 at 1:03

Posted in TeX et compagnie

Tagged with

2 Responses to 'Rencontre ConTeXt 2008, partie 5'

  1. « Faute de manuel pour l’apprendre ». Je confirme, Manuel aide beaucoup !

    Julien

    22 août 08 at 15:45

  2. Attention message hors ConTeXt

    Le whisky breton, bon… mais surtout pas la bière, garçon, pas la bière ! Ils en font à l’eau de mer et je te dis que je préfère presque boire vraiment la tasse.

    Le TeXnicien de surface

    22 août 08 at 19:42