Remarques liminaires: La quasi-totalité des opérations décrites ci-dessous ont été automatisées dans trois scripts, nommés tout bêtement script1.sh, script2.sh et script3.sh. Par ailleurs, les numéros de versions sont les mêmes que ceux employés par les copies d'écran d'emacs. ------------- 0 - En principe, au moment où l'on commence le traitement, le remplacement des guillemets à l'anglaise par des guillemets à la française devrait déjà avoir été fait, ainsi que le travail de petite typographie. Il faut aussi avoir réservé un traitement spécifique aux "o e dans l'o". Pour le moment, histoire de ne pas me casser la nénette, je les saisis comme ceci: ooee. Bien sûr, on a intérêt à faire tout cela par recherche-remplacement sur un fichier de synthèse. 1 - Les fichiers en Xtags, même produits sur PC, ont leurs fins de paragraphes à la mode Macintosh. Il faut donc les mettre à la mode Unix (et non Windows), en appliquant successivement td131310, puis vire1326. (on passe donc de la version 00 à la version 02 en passant par la version 01) 2 - Si le fichier Xtags a vraiment été produit sur Macintosh, il faut transcoder ses caractères accentués, ce qui se fait à l'aide des fichiers de transcodage macunicd.txt et unicdiso.txt. Si ce transcodage n'est pas nécessaire, renommer quand même le fichier pour ne pas se mélanger les pinceaux. (on passe donc de la version 02 à la version 04 en passant par la version 03) 3 - Les fichiers Xtags comportent au début le descriptif du contenu des formats, qui d'une part est inutile, d'autre part gêne pour certains traitements (découpage en lignes, en particulier). On applique cupenlin (nouvelle version, dont le prototype était appelé cupenln3; cette nouvelle version sait tronquer les lignes sans espace) pour rendre les fichiers éditables avec un éditeur de lignes, puis on vire les descriptifs de formats à la main, justement avec un éditeur de lignes. Cela dit, quand j'aurai du temps, il faudra que j'écrive un programme vrnttxtg.c (vire en-tête Xtags) pour pouvoir automatiser cette opération; ça ne m'a pas l'air très compliqué. (à ce stade, le numéro de version est 05) 4 - Bien que ça ne serve pas à grand-chose et qu'on puisse aussi le faire à la main lors de l'étape précédente, comme j'aime bien faire les choses proprement, on applique lgnvdext (pour virer les lignes vides éventuellement rajoutées au début ou à la fin du fichier par certains traitements). (à ce stade, le numéro de version est 06) Jusqu'à ce stade du récit, les éventuelles modifications apportées au texte avec un éditeur Ascii ne seraient pas trop difficiles à réimporter dans le fichier Xpress original. Ca ne va plus être le cas après ce qui suit. 5 - Il faut transcoder ce qui est spécifique à la saisie sous Xpress: remplacer les | et _ par des   (attention, le caractère de soulignement est parfois utilisé dans les noms de fichiers, notamment pour la référence du diaporama indiquée dans le sommaire; il faudra alors faire la correction manuellement), les apostrophes cursives en apostrophes droites (à noter que la différence est invisible sous emacs), les ooee en oe, et même <\@> en @ (en fait, le caractère arrobas étant utilisé pour identifier les formats d'Xpress, il est préférable de ne jamais l'utiliser dans le texte). Le fichier de transcodage adéquat s'appelle xprshtml.txt (à ne pas confondre avec xmlhtml.txt). Il ne serait peut-être pas absurde de reporter plus loin l'opération de transcodage des insécables: elles nuisent à la lisibilité du fichier Ascii, et de toute façon il y aura encore des opérations de transcodage en aval. (à ce stade, le numéro de version est 07) 6 - Il faut maintenant songer à la cotation html proprement dite. Comme pour l'essentiel elle s'effectue paragraphe par paragraphe, on fait un coup de raponlin. (à ce stade, le numéro de version est 08) 7 - On fait tourner xtgshtml, ce qui transforme les cotations séquentielles d'Xpress en balises ouvrantes et fermantes à la mode HTML. Cette modification affecte les balises de format (de type @Format:, qui devient ) et les balises d'enrichissement ( devient ). Il est à noter que pour le moment, ce programme est sensible à la casse, ce qui risque de poser des problèmes au cas où les fichiers de départ seraient cotés à la main. A noter que cette moulinette place des balises et pour les lettres en exposant. Pour le moment, je les laisse, même si elles donnent souvent de mauvais résultats pour l'affichage en HTML. (à ce stade, le numéro de version est 09) 8 - Il va maintenant falloir ajouter des marques de début et de fin de paragraphe, avec ajoutep. (à ce stade, le numéro de version est 10) 9 - Pour que les fichiers soient éditables, on redécoupe en lignes (par exemple de 65 signes de large) avec cupenlin. (à ce stade, le numéro de version est 11) 10 - Seuls les paragraphes qui ne comportent pas déjà une pseudo-balise SGML doivent avoir des balises de paragraphe. Les lignes entourées d'accolades, qui indiquent les limites d'un texte inclus dans un fichier de synthèse, doivent aussi être débarrassées de ces balises

et

. On s'en débarrasse en transcodant avec le fichier nettoiep.txt. L'inconvénient est que ce fichier doit être modifié chaque fois que l'on invente une nouvelle balise, il serait donc concevable de réfléchir à un programme qui se chargerait de cette opération. (à ce stade, le numéro de version est 12) Il est recommandé à ce stade du récit de vérifier qu'il ne reste pas de balises oubliées par nettoiep.txt, en faisant des recherches sur les séquences

< et >

. On peut aussi faire des recherches sur les accolades ouvrantes pour vérifier que les lignes qui servent à délimiter les sous-fichiers sont propres. Ces précautions sont spécialement utiles si l'on a récemment créé un nouveau format Xpress, ce qui entraînera au minimum une mise à jour du fichier nettoiep.txt. S'agissant du sommaire et du diaporama, c'est à ce stade du récit que l'on fait tourner les moulinettes C trtsomm et trtdiapo. S'agissant des textes normaux, il va falloir introduire à ce stade des balises de rupture (((tit))), (((txt))), etc., permettant le découpage du fichier en petits morceaux. On fait cela en transcodant avec le fichier ajourupt.txt, à la suite de quoi il va falloir appliquer à la suite td131310, puis vire1326 (en effet, ajourupt.txt ajoute des CR et non des LF; transcod ne fonctionnerait pas bien autrement). A noter que j'ai dû modifier ajourupt.txt récemment, l'une des chaînes de transcodage excédant la longueur gérée par transcod.c (lequel mériterait donc d'être amélioré). (on atteint donc le numéro de version 15) Il faut maintenant s'attaquer à la cotation HTML proprement dite. On va distinguer d'une part ce qui concerne l'aspect typographique du texte lui-même (essentiellement sa grosseur, sa graisse, son style et sa couleur) -- cela sera pour l'essentiel effectué par transcodage -- et d'autre part ce qui concerne sa mise en page -- qui sera effectuée par la technique des masques. La dichotomie n'est pas nette. Disons pour simplifier que les balises

, , , ,
sont a priori placées par transcodage, tandis que les balises , , , , ,
et
sont placées par les masques. Les balises tangentes sont celles qui concernent à la fois la logique et la typographie, comme

et

; pour ces dernières, il faudra être plus soigneux dans l'élaboration des fichiers de transcodage et de masque. Le transcodage des balises est assuré par le fichier xmlhtml.txt. Il s'effectue sur le fichier de synthèse. (on atteint donc le numéro de version 16, qui est a priori le dernier pour le fichier de synthèse) Jusque là, on a travaillé sur le fichier de synthèse. Pour la mise en page proprement dite, il va falloir éclater cette synthèse par decuptxt. Il faut opérer ce découpage dans un sous-répertoire synthese que l'on créera pour l'occasion. A présent, les éléments de chacun des textes doivent être séparés puis rassemblés au travers de masques HTML grâce au programme maskhtml. Cela suppose que chaque texte soit éclaté avec decuptx3, et il faut aussi éliminer les fichiers provisoires. J'ai automatisé tout cela par un script shell nommé ecltrsbl.sh (éclate-rassemble), qu'il faut placer lui-même dans le sous-répertoire synthese. Attention, ce script prend pour argument le préfixe du texte, c'est-à-dire le nom de chaque fichier de texte moins son extension. Pour qu'il fonctionne, il faut qu'il existe au même niveau hiérarchique que le sous-répertoire synthese: d'une part un autre sous-répertoire nommé html, dans lequel on aura au préalable placé tous les fichiers Jpeg, d'autre part, un autre sous-répertoire nommé maskhtml, dans lequel on aura placé le programme maskhtml lui-même, son fichier d'initialisation maskhtml.ini, et tous les masques employés (fichiers d'extension .msk). Comme il est rare que tout cela fonctionne du premier coup, il peut être utile de rédiger un autre script, nommé par exemple faittout.sh, qui lance ecltrsbl.sh pour tous les textes du numéro. ---------- Nota: Certains chapeaux comportent une cotation de l'italique effectuée manuellement. Ce n'est pas forcément une mauvaise idée (car on peut avoir besoin de repasser en romain). Y réfléchir.