Regles reconnues par le convertisseur

4.1) Format general du document

4.1.1) Titre du document

la PREMIERE ligne du ducument ASCII devient le titre du document HTML.

Consequences :

4.1.2) Titres de chapitres

Pour faire simple, il suffit de commencer une ligne par une parenthese fermante pour qu'elle soit reconnue comme un titre.

Pour ne pas provoquer de generation spontanee de titres, il faut se debrouiller pour que les paires de parentheses soient sur la meme ligne. Vous verez plus bas que la mise en page ascii n'a aucune valeur en HTML : seuls comptent les paragraphes.

Pour voir ce qui se passe si on oublie de respecter cette regle stupide, jettez un oeil a l'exemple ci-dessous :

... (entre une parenthese ouvrante et une parenthese
fermante), 
sinon ca perturbe ...

En clair, il ne faut pas inserer un RETURN (entre une parenthese ouvrante et une parenthese fermante), sinon ca perturbe un peu la lecture, comme vous pouvez le voir ! Si votre editeur ASCII ne sait pas visualiser une ligne geante (comme emacs), vous aurez a inserer des RETURN au beau milieu de vos phrases. Du moment que vous n'inserez pas DEUX RETURN, vos lignes seront recollees dans le meme paragraphe, alors ne vous privez pas. Pour plus d'infos, reportez vous au chapitre sur les paragraphes.

Il y a deux niveaux de titres :

Rien de tel qu'une petite demonstration, avec le texte ASCII qui suit :

A) titre en chef (il n'y a pas que les chiffres dans la vie)

A.1) sous titre

A.1.1) desole, je ne gere pas encore les sous-sous-titre !

A) titre en chef (il n'y a pas que les chiffres dans la vie)
A.1) sous titre
A.1.1) desole, je ne gere pas encore les sous-sous-titre !

A noter que la partie qui se trouve a gauche de la parenthese devient automatiquement un anchor hypertexte, et qui est donc trivial de faire un lien qui se branche sur un chapitre, y compris dans un autre document. Pour faire l'equivalent de "( cf: chapitre 4.3.1.3)", reportez vous au chapitre 4.3.1.3.

4.1.3) Les paragraphes

Toute ligne separee par au moins DEUX RETURN de la ligne precedente devient un paragraphe, ce qui genere le tag HTML <p>.

A l'inverse, le fait de taper un RETURN a la fin d'une ligne ASCII, et de la continuer a la ligne suivante n'a aucune influence sur le paragraphe :

ces lignes
formeront un seul
paragraphe

celle la sera dans un autre paragraphe

Ces lignes formeront un seul paragraphe.

Celle la sera dans un autre paragraphe...

Vous pouvez donc utiliser un editeur ASCII de tres bas niveau, limite a 40 colonnes en largeur, et taper des RETURN en bout de ligne pour couper vos phrases, et le resultat final sera lisible, car c'est le navigateur qui fait la mise en page des paragraphes.

4.1.4) Les caracteres speciaux

Comme HTML utilise des caracteres speciaux pour faire sa mise en page, txt2html convertit d'abord les caracteres suivants :

C'est le minimum vital.

Il manque... les accents !

Ca se complique : quel jeu de caracteres utilisez vous sur votre machine preferee ?

Si votre machine travaille en ISO-8859, vous pouvez taper des caracteres accentues, il y a des fortes chances pour qu'ils apparaissent tels-quels (sans conversion). Sinon, pour faire propre, il faut respecter les directives HTML sur les caracteres speciaux :

Si vous tapez votre texte sur un Mac ou sur un PC, il y a bataille...

La "référence" ISO-8859 figure dans la documentation HTML de l'universite de Brighton, disponible sur ce serveur.

En attendant, comme txt2html sert SURTOUT a faire de la doc informatique, vous avez le droit de taper du Francais 7 bits. C'est tellement plus simple...

4.1.5) La signature du document

Pour identifier un document, inserez la directive ( origin) dans votre fichier ASCII. L'URL du fichier sera insere dans le document HTML final, ainsi que la date du fichier.

Si vous communiquez des versions imprimees de vos documents, cette reference permettra au lecteur curieux d'aller a la peche, si il pense que la date qui figure sur sa version papier est suffisamment ancienne pour que le document ait ete modifie depuis. A condition qu'il n'hesite pas a jouer du reload selon la configuration du cache de son navigateur...

Ci-dessous, voici la signature de ce document : source :
  http://192.9.210.24/tws/txt2html/txt2html_4.html
  1999-Aug-25   21:48

4.1.6) Le bas de page "ready made"

Pour inserer un bas de page standard, utilisez la directive ( footer).

NOTE : a ce jour, cette directive est TRES rudimentaire, car elle ne sait inclure qu'un seul modele global de pied de page. Il y a longtemps que je me dis que je vais modifier txt2html pour inserer le fichier .footer si il existe, ou alors autoriser la directive (footer: nom_fichier). Wait and see...

4.1.7) La table des matieres automatique

Inutile de la chercher, c'est un projet... qui nececite une passe supplementaire dans txt2html. Je cherche quelquechose d'astucieux.

Idee : la directive (contents) est remplacee par des liens sur tous les titres et sous-titres. Il suffit de faire des liens relatifs #numero, en inserant le contenu du titre comme texte du lien.

YAKA... c'est pour bientot.

4.1.8) La barre de navigation automatique

C'est aussi un projet, et ja ne sais pas sous quelle forme la placer dans le document pour que ca ne soit pas trop laid.

Idee : la directive (navbar) est remplacee par trois icones Previous-Up-Next, qui permettre d'avancer rapidement en relatif dans le document.

A priori, ces icones doivent etre a proximite de chaque ligne de titre, mais je ne trouve pas ca tres beau. Partout, c'est utile mais c'est laid. au debute et/ou a la fin d'un document, ca passe mieux mais c'est moins pratique.

A voir...

4.1.9) La directive d'eclatement automatique

BOUM !

Comme vous le savez sans doute, un GROS document est penible :

Le redacteur astucieux va donc chercher a morceler le contenu global en petits bouts, qui seront plus rapides a charger, plus agreables a lire, plus vivants (a cause des clics de navigation) (qu'en d'autres temps on appella "l'effet mulot").

Imaginez : vous ecrivez un document XXX.txt, contenant 7 chapitres. Vous inserez la directive (split), et txt2html va faire automatiquement :

C'est beau. J'en ai reve, je vois a peu pres comment je vais faire, mais je ne l'ai pas encore fait...



4.2) Mise en page

Si l'aspect general du document (ex: couleur des caracteres) ne peut pas etre modifie (pour l'instant), l'aspect du texte dans le document HTML n'est pas uniforme. Heureusement pour le lecteur...

Comme ces outils ont ete concus pour faire de la doc technique, la mise en valeur des informations importantes est revenue... aux termes techniques, pardi. Pour mettre en valeur les mots qui servent a faire de l'esprit, il reste les caracteres italiques, qui ne vont pas si mal.

4.2.1) Mettre en gras les expressions techniques

Pour montrer au lecteur que le mot qui se trouve dans la doc est un terme informatique reel (et pas une francisation d'un terme informatique), il faut l'encadrer avec des quotes (simples). Ce qui genere le tag HTML <b>..</b> (bold).

Pour les Perlistes acharnes, voila la regle de reconnaissance de mots encadres par des quotes pouvant contenir une apostrophe mais pas une ponctuation. Si vous avez une idee pour la simplifier...

s/^'([\S\.\/][^\']*[\S\/]*)'([\<\n\.!, ])/ '<b>$1<\/b>'$2/g;
s/\s'([\S\.\/][^\']*[\S\/]*)'([\<\n\.!, ])/ '<b>$1<\/b>'$2/g;
s/\s'([\w ]+\'[\w ]+)'/ '<b>$1<\/b>'/g;

4.2.2) Mettre en italiques ce qui n'est pas banal...

Pour insister sur ce qui est important, je vous conseille de METTRE EN MAJUSCULES pour dissuader le lecteur de ne pas faire autre chose que ce que vous venez de lui expliquer...

Pour mettre en valeur le petit quelque chose qui se cache dans votre phrase, rien de tel que des italiques. Ce qui genere un tag HTML <i>..</i> (italic).

C'est tellement simple, que tout exemple est inutile.

4.2.3) Creer une liste enumerative (<ul>..</ul>)

Intuitivement, quand on redige un document dans lequel on cherche a enumerer des informations, il y a de fortes chances :

Bref, si on voulait faire une liste en ASCII, il y a de fortes chance pour qu'elle ait une presentation proche de l'exemple ci-dessous :

ceci est une liste :
 - premier ligne
    - deuxieme ligne (peu importe le nombre d'espaces en debut de ligne)
	- un TAB en debut de ligne...

L'utilitaire txt2html genere des listes ENUMEREES (tag <ul>..</ul>) en s'appuyant sur plusieurs regles :

Comme il y a toujours des exceptions BIZARRES, en voici une qui croustille : NOTE 1 : A ce stade du developpement, l'option sous-liste n'a pas ete retenue. Comment faire pour detecter la fin de la sous-liste ? En commencant les lignes de la sous-liste par -- ?...

4.2.4) Creer une liste ordonnee (<ol>..</ol>)

Ici encore, on se refere a l'intuition pour deviner ce qui doit etre fait...

Si on cherche a enumerer des informations en les numerotant pour les classer, il y a de fortes chances :

  1. pour que la phrase qui decrit le contenu de la liste se termine par un :,
  2. que tous les elements de cette liste soient presentes a la ligne,
  3. que chaque ligne commence par un grigri numerote, qui veut dire que c'est un nouvel element dans la liste.
Bref, si on voulait faire une liste en ASCII, il y a de fortes chance pour qu'elle ait une presentation proche de l'exemple ci-dessous :

ceci est une liste :
 1 - premiere ligne
2- deuxieme ligne (peu importe le nombre d'espaces en debut de ligne)
	3- un TAB en debut de ligne (c'est aussi de l'espace pour Perl)

L'utilitaire txt2html genere des listes ORDONNEES (tag <ol>..</ol>) en s'appuyant sur plusieurs regles :

Comme pour les listes non ordonnees, un titre est equivalent a une ligneterminee par un :...

NOTE 1 : A ce stade du developpement, l'option sous-liste n'a pas non plus ete retenue.

4.2.5) Incorporer un exemple reel "pour faire vrai"

... il est IMPOSSIBLE d'inclure des exemples issus de coupe/colle de traces quelconques. Essayez la conversion txt2html d'un script de login ou des traces de l'installation de Solaris 38.5.12, vous aurez du mal a relire... La seule solution HTML pour casser la mise en page automatique est d'utiliser le tag <pre>..</pre> (litteral copy), qui garantit le WYTISYG (What You Type...).

Comme cette fois ci, il n'y avait aucune justification fumeuse du type c'est comme ca que vous l'auriez fait, il fallait bien inventer une regle :

Vous en avez deux exemples un peu plus haut. A defaut de redaction intuitive, il reste un vague parfum de soucis de lisibilite, que txt2html renforce en s'assurant que la zone est bien mise en valeur en inserant des NEWLINE (tag <br>).

4.2.6) Inserer un trait de separation

En langage HTML, c'est une horizontal rule.

txt2html detecte les lignes qui contiennent beaucoup de caracteres susceptibles de servir de separateur dans du texte : -, _, = ou #.

La ligne du fichier ASCII qui contient beaucoup de ces caracteres a la suite est entierement remplacee par un tag <hr>, SAUF dans une zone <pre>...</pre>, cela va de soi.

Voici un exemple protege, suivi de sa transformation en <hr> par txt2html :

 -------------------------------------------- ce texte sera efface


4.2.7) Augmenter l'espacement entre les paragraphes

Quand txt2html analyse le fichier ASCII, il essaye au juge de reproduire ce qu'il voit.

Si votre fichier ASCII contient un grand nombre de caracteres RETURN entre deux paragraphes, c'est sans doute car vous vouliez mettre en evidence une separation.

Par defaut, la separation des paragraphes a une taille constante, car c'est le navigateur HTML qui se charge de la mise en page des tags <p>

Si vous voulez inserer des RETURN dans un editeur HTML, vous utilisez le tag <br>. txt2html aussi, et il utilise la loi suivante : nb_BR = int((nb_RETURN - 2) / 2).

Deux caracteres RETURN, c'est la facon classique de marquer les paragraphes.

Trois caracteres RETURN : pas de difference.


Quatre caracteres RETURN : un <br> insere entre les paragraphes.



4.3) A propos d'hypertexte

4.3.1) Les liens hypertexte

A l'origine de tout ce bricabrac, il y avait le besoin de faire la documentation _technique_ d'une plate-forme heterogene, pour Mr tout-le-mode, et sur tout ou presque (du partitionnement d'un disque systeme a la facon d'ecrire une macro Excel).

Comme l'ecriture d'un MEGA-MANUEL-D'UTILISATION aurait rendu chevre le plus patient des managers, qu'aucun utilisateur n'aurait consulte le document, et qu'il aurait ete impossible d'en sortir une version papier a jour, il ne restait plus que la documentation vivante.

Meme si vous defendez FrontPage ou Word 97 ou AolPress (plutot chouette, ce freeware !), vous avez besoin DE TEMPS pour faire votre doc. Il est impossible de l'ecrire sur un coin de table et de la deposer dans l'arborescence Intranet pour esperer qu'elle sera automatiquement incorporee au tas. Si vous avez la chance d'avoir un moteur de recherche sur votre site, au mieux elle sera accessible apres la mise a jour de l'index, mais elle ne sera pas hypertexte.

Comme les editeurs hypertexte ne permettent pas de rediger rapidement de la doc (entre le temps de chargement de l'editeur et le temps passe a mettre en forme et a brancher les liens...), il y avait la solution alternative : laisser a la machine le soin de faire le gros du travail.

L'ambition de txt2html est de retrouver A LA PLACE du redacteur de la doc l'emplacement du document auquel il fait reference a priori. Si plusieurs documents portent exactement le meme nom dans l'arborescence, txt2html retient celui qui offre le maximum de vraissemblance, en raisonnant utilisant sur les chemins d'acces.

La directive universelle (et assez intuitive) de lien hypertexte est cf:. Elle peut etre consommee a plusieurs sauces, mais c'est toujours le meme principe de base.

Comme vous allez rediger vous aussi votre doc sur un coin de table, vous aurez le droit a l'erreur. Si txt2html NE TROUVE PAS le lien demande, il insere dans le document .html un lien de type mailto: pour l'administrateur du site, que l'utilisateur est invite a utiliser pour signaler qu'il y a un couac. Que vous mettrez a jour en 30 secondes, bien sur...

Cette erreur est volontaire, merci de ne pas la signaler : fichier_introuvable

4.3.1.1) Le lien simple sur un autre fichier HTML

Si vous avez une regle de nommage pseudo-normalisee pour tous vos documents, vous devez pouvoir y faire reference de tete, car le nom du fichier doit correspondre avec son contenu.

Usage: ( cf: nom_fichier), sans l'extension .html ou .htm (sans espace entre la parenthese et cf).

Par exemple, meme si vous savez comment on installe Windows 95, rien ne vous empeche d'aller voir, par politesse... Le lien en bout de paragraphe correspond a la metamorphose de la directive ( cf: install_win95) (sans espace entre la parenthese et cf) : Installation de Windoz 95

Comme vous venez de le decouvrir en direct live, le nom du fichier (assez austere) est remplace par le TITRE du document (qui parle plus, en general...). Si le titre ne vous plait pas, vous pouvez toujours le surcharger en toute simplicite !

4.3.1.2) Declarer soi-meme un point d'ancrage

Si vous avez fait attention au chapitre qui traite des... titres des chapitres, il ne vous a pas echappe que le numero du chapitre etait automatiquement declare comme point d'ancrage (anchor en langage HTML).

Si vous pensez que votre document possede un mot cle qui merite d'etre le point de convergence de liens hypertexte internes (depuis ce document) ou externes (depuis d'autres documents), alors il suffit que vous le surligniez en l'encadrant avec une paire de doubles crochets carres du type [[ (je ne mets pas l'autre, sinon ils seront substitue...).

Par exemple, j'ai encadre les mots quatrieme dimension un peu plus loin dans ce document. Vous pouvez cliquer sur le lien et constater que le texte de destination n'a aucun formatage particulier et que les crochets ont disparu dans la version .html. C'est juste un point d'ancrage.

4.3.1.3) Le lien sur un ancrage, interne ou externe

Il suffit de faire reference a l'ancrage que vous avez declare. Le lien ci-dessus a ete genere en substituant la directive ( cf: #quatrieme dimension).

Si vous avez une memoire d'elephant, et si vous vous souvenez avoir declare un point d'ancrage dans un autre fichier, vous pouvez y faire pointer un lien en precisant le nom du point d'ancrage a la suite du nom du fichier. Si l'ancrage n'existe pas, le navigateur vous laissera au debut du fichier, et ce n'est deja pas si mal...

Usage : ( cf : #ancrage) ou ( cf : nom_fichier#ancrage) (sans espace entre la parenthese et cf).

Autre exemple qui fait reflechir... Sachant qu'il existe des chapitres dans ce document, je ne prends pas trop de risques en vous renvoyant a l'excellent chapitre 9 du document d'installation de Windows 95, avec la directive ( cf: install_win95#9) : Installation de Windoz 95 (9).

Les deux exemples precedents ont permis d'illuster la facon dont txt2html remplace la directive austere cf: par du beau texte :

4.3.1.4) La surcharge du texte qui apparait dans le lien

Comme vous n'etes pas oblige de prendre pour argent comptant ce que txt2html va substituer a votre directive de lien, il suffit de surcharger avec du texte.

Usage : '( cf : nom_fichier, surcharge)', '( cf : #ancrage, surcharge)' ou '( cf : nom_fichier#ancrage, surcharge)' (sans espace entre la parenthese et le cf).

Pour ceux qui en redemandent, je vous laisse le soin d'aller voir ou peut bien pointer ce lien...

4.3.2) Les images

Quoi de plus naturel que des copies d'ecrans pour illustrer votre propos !

4.3.2.1) Quelles images ?

Comme les navigateurs reconnaissent par defaut les types GIF et JPEG, moi aussi !

L'automate construit la liste de toutes les images disponibles en retenant les extensions correspondantes .gif, .pjg ou .jpeg. Si vous avez des images dans d'autres formats :

4.3.2.2) Inclure une image dans le document

Cette directive sert a INCLURE l'image dans le fichier, pas a creer un lien sur l'image. Si l'image est grosse, et qu'elle penalise le temps de chargement du document, vous pouvez inclure une mini image, et faire un lien sur la grosse image ou mieux, inclure une mini-image qui est un lien cliquable sur la grosse image.

Usage : ( inc: nom_image), sans l'extension .gif ou .jpeg (sans espace entre la parenthese et le inc).

Pour les utilisateurs presses qui debranchent l'option Auto Load Images car ils estiment que la bande passante de leur Intranet n'est pas assez rapide, txt2html indique le nom de l'image avec la directive ALT=nom_image. Ce qui leur permet de cliquer au coup par coup sur ce qui les interresse.

Par defaut, l'image est mise en page par defaut par le navigateur. Il est possible de faire des effets demoniaques (que je trouve laids) en utilisant les options HTML. Comme cela correspondait a deux methodes differents de mise en page, j'ai simplifie en offrant la possibilite de preciser la disposition.

Usage: '( inc: nom_image, left)', '( inc: nom_image, center)', '( inc: nom_image, right)'.

Pour voir ce que cela donne, reportez vous au fichier COBAYE.TXT, fichier utilise pour les tests de mise en forme txt2html (4).

4.3.2.3) Faire un lien vers une image (quand elle est trop grosse)

Creez un micro-document qui fait reference a la grosse image avec la directive inc:. Le chargement de ce micro-document provoquera le chargement de la grosse image.

Dans votre document, faites reference au micro-document, et debrouillez-vous pour inclure la version miniature de la grosse image a proximite du lien. Ceci est un exemple de micro-document, dont le titre incite a cliquer tout de suite :

Cliquez ici pour voir Claudia Schiffer topless (1280x1024, 600dpi)

( inc : oops_your_VM_is_imploding)

Cliquez ici pour voir Claudia Schiffer topless (1280x1024, 600dpi)

Bon, d'accord, on peut faire plus simple : donnez le nom complet du fichier image a la directive file decrite au chapitre 4.3.3.

Mais retenez qu'un lien sur un fichier separe, qui inclus l'image, est une solution classique, utilisee par les redacteurs soucieux des lecteurs, et conscients que le temps de chargement du texte seul a peu de chances de mettre a mal la patience des cliqueurs fous. Pour les images, c'est une autre histoire. Si l'option Auto load images n'existait pas, il faudrait l'inventer...

4.3.2.4) Faire un lien avec une image

Surchargez le lien avec la directive inc: nom_image, et pointez sur une mini-image. Elle sera rapide a charger. Et si c'est la version miniature d'une grosse image, ca fait vraiment pro.

Votre lien doit alors ressembler a '( cf: nom_fichier, ( inc: mini_image))'. Et devinez ce qui se cache derriere cette belle fleur...

Vous pouvez aussi inserer la directive inc: nom_image dans le titre du micro-document utilise ci-dessus. Apres avoir converti le micro-document, toute reference a ce micro-document entrainera la substitution du titre, qui fait l'inclusion de l'image.

DANGER : cette option ne peut fonctionner QUE si le micro-document se trouve DANS LE MEME REPERTOIRE que le document qui fait reference au micro-document. Le titre du micro-document contiendra la reference a l'image en relatif, et ce lien ne sera valable QUE depuis le repertoire ou se trouve le micro-document.

4.3.3) Le lien sur un fichier (ni HTML ni image)

Pour ce type de fichier, il faut preciser le nom complet avec l'extension. txt2html se charge de trouver le chemin qui offre le maximum de vraissemblance.

Usage : file: nom_fichier ou 'file: nom_fichier, surcharge en clair'.

Vous pouvez pointer sur n'importe quoi, sauf sur un fichier .html, car il est dans la liste utilisee par cf:.

Si vous pointez sur une image, il faut preciser son extension complete (a la difference de la directive inc:).

4.3.4) Le lien sur un repertoire

DANGER : ce type de lien permet d'envoyer le navigateur dans la quatrieme dimension. Il en revient tout secoue, repetant sans relache la meme rengaine : The requested URL was not found on this server.

Reserver l'usage de cette directive AUX CAS PARTICULIERS, si possible aux sous-repertoires qui sont LIES a votre document. Comme txt2html prend la directive au pied de la lettre, il n'y a aucune verification d'usage.

Usage : utiliser la directive dir: nom_chemin ou dir: nom_chemin, surcharge en clair' (en lencadrant avec des parentheses).

Inutile de preciser qu'un chemin absolu a de tres fortes chances de partir tout droit dans la quatrieme dimension : /lost_and_not_found...




Ce fichier contient au moins une reference hypertexte qui n'a pas pu etre resolue automatiquement par 'txt2html'...

(cf: txt2html_4.1)   (cf: fichier_introuvable)   (cf: txt2html_4.3)