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
. 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 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.