Spécification de utags
documentation technique utags le programme C utags c analyse la base textuelle mentor et met à jour l'index utags équivalent du fichier tags de la commande unix ctags
documentation technique utags pm module perl de recherche dans la base hypertexte utags
Reference hypertexte
Lors de la recherche de références hypertextes on pourra effectuer plusieurs
recherches si la recherche directe ne donne pas de résultat:
recherche sans les accents,
Lors de l'ajout le fichier des étiquettes si dans une étiquette il y a
des accents, on enregistrera deux étiquettes, la réelle et celle privée
d'accents.
recherche sur une partie de la référence.
Spécification de domaine
Les domaines sont gérés par un fichier d'extension ".dom" contenant une liste dont les éléments
sont les chemins des fichiers
Les fichiers domaines se trouvent sur le directory %UTAGS%\dom
On traite successivement chaque fichier domaine.
Pour chaque nom de domaine, une reference hypertexte sur le fichier domaine est générée.
La liste domaine est réecrite en fin de traitement, et il est édité un
fichier texte contenant la liste des références hypertexte pour chaque
domaine. Cette liste est accédée elle-même par la réference hypertexte domaine.
Arborescence des domaines sous la forme de références hypertexte.
Aprés avoir constitué la liste des sources sous la forme de branche
(cf branche spécification de ListeFichierCharger ) on édite les références
hypertexte permettant de naviguer dans cet arbre.
algorythme:
boucle sur la lecture séquentielle de la liste tant quelle n'est pas vide.
boucle de lecture séquentielle de la liste des sources.
en rupture sur la première colonne (délimiteur :)
si on n'est pas en début de liste: on ferme un bloc
on édite une étiquette hypertexte avec le nom de cette colonne.
on ouvre un bloc.
on édite une référence hypertexte sur la deuxième colonne si on est
en rupture sur celle-ci.
si la deuxième colonne est terminale ( délimiteur | )
on supprime l' élément de la liste.
Enregistrement domaine
un élément de la liste des fichiers d'un domaine est en fait un enregistrement CSV cf enregistrement domaine
dont le premier champ et le chemin du fichier.
les autres champs de l'enregistrement domaine sont:
- le titre du fichier (optionnel). Ce titre est utile pour les fichiers binaires qui ne sont pas analysé et qui n'ont donc pas de titre.
Ceci permet de documenter le fichier dans le sommaire général.
- le filtre fichier qui permet de surcharger le filtre définit pour l'extension (cf extensio lst)
- la profondeur d analyse
- d'autres champs libres c'est à dire non utilisé par nomfic c ou utags c. Cf tableau domdir
Type de domaine
Domaine reference
un domaine de type référence est un domaine dont les fichiers ne sont pas analysé par utags_exe (utags_c) c'est à dire qu'ils ne sont
pas indexé dans la base hypertexte utags.
Domaine repertoire
Le domaine répertoire est une spécialisation du domaine mentor et reflète le contenu d'un répertoire du système.
07/09/2011 évolution de domdir via traite csv pl le tableau ci-dessous alimente à partir de la commande "dir" les lignes
du tableau en évitant les générés htlm et les fichies backup et en renommant le chemin de base avec la variable d'environnement
La connexion entre le domaine et le répertoire se fait par une commande dir intégrée à un tableau csv.
Tableau domdir
les colonnes titre, filtre et profondeur sont associés à la structure des domaines mentor enregistrement domaine
Tableau domdir simple todo: il doit y avoir un atelier generique qui fait le dir à partir d'un paramètre et qui est appelée par CSV_INS dans les tableaux domdir pour conserver les colonnes manuelles
|
|
filepath | titre | filtre | profondeur |
|
|
|
|
%BASE%\bacasable\test-renommage-fichier.txt | fichier de test | | |
|
nbr | | | |
|
tableau domdir simple chemin complet du fichier | | | |
|
1.000000 | | | |
|
Tableau domdir date et taille fichier : utiliser pour les listes de fichiers dans les domaines mentor cf extensio_lst
|
|
filepath | titre | filtre | prfd | dat_mod | taille | dat_cre | dat_mod_ini |
|
|
|
|
|
%BASE%\bacasable\test_renommage_fichier.txt | | | | 20140409_162312 | 12 | 20140409_172306 | |
|
nbr | | | | nbr | som | | |
|
filename | | | | dat_mod | taille | | |
|
1.000000 | | | | 1.000000 | 12.000000 | | |
|
pour liste hors domaine mentor
|
|
filepath | dat_mod | taille | dat_cre |
|
|
|
|
|
%BASE%\bacasable\test-renommage-fichier.txt | 20140409_172312 | 12 | 20140409_172306 |
|
nbr | nbr | som | |
|
tableau domdir date et taille fichier chemin complet | dat_mod | taille | |
|
1.000000 | 1.000000 | 12.000000 | |
|
Tableau domdir date taille et lien fichier
|
|
filepath | titre | filtre | prfd | dat_mod | taille | dat_cre | lien | dat_mod_ini |
|
|
|
|
|
%BASE%\bacasable\test_renommage_fichier.txt | | | | 20130223 112520 | 0 | 20130223_122520 | test renommage fichier txt | 20130223_112520 |
|
nbr | | | | nbr | som | | | |
|
filepath | | | | dat_mod | taille | | | |
|
1.000000 | | | | 1.000000 | 0 | | | |
|
Tableau domdir basename
|
|
filepath | titre | filtre | prfd | basename | extension | path | filename |
|
|
|
|
|
%BASE%\bacasable\test-renommage-fichier.txt | | | | test-renommage-fichier | txt | g:\mt\bacasable\ | test-renommage-fichier.txt |
|
nbr | | | | | | | |
|
tableau domdir basename chemin complet du fichier | | | | | | | |
|
1.000000 | | | | | | | |
|
Tableau domdir renommage atelier renommage normalise fichier
|
|
filepath | dat_mod | taille | dat_cre | dat_mod_ini |
|
|
|
|
|
|
|
|
|
nbr | nbr | som | | |
|
filename | dat_mod | taille | | |
|
0.000000 | 0.00000 | 0.000000 | | |
|
|
|
filepath | titre | filtre | prfd | chemin avec non normalisé fonction nnf | comparaison nom fichier actuel et nom fichier normé (vide si égal) | commandes de renommage | | pour exécuter les commandes de renommage, supprimer le undersrore de la formule |
|
|
|
|
%BASE%\bacasable\test-renommage-fichier.txt | | | | g:\mt\bacasable\test_renommage_fichier.txt | g:\mt\bacasable\test-renommage-fichier.txt|g:\mt\bacasable\test_renommage_fichier.txt | move "g:\mt\bacasable\test-renommage-fichier.txt" g:\mt\bacasable\test_renommage_fichier.txt | | |
|
nbr | | | | | nbr | | nbr | |
|
tableau domdir ren chemin complet du fichier | | | | | comparaison nom fichier actuel et nom fichier normé (vide si égal) | | | |
|
1.000000 | | | | | 1.000000 | | 0.0 | |
|
08/03/2017 14:53:27 renomage d'une liste à inserer
|
|
filepath | chemin avec non normalisé fonction nnf | comparaison nom fichier actuel et nom fichier normé (vide si égal) | commandes de renommage | pour exécuter les commandes de renommage, supprimer le undersrore de la formule |
|
|
|
|
|
nbr | | nbr | | |
|
filename | | comparaison nom fichier actuel et nom fichier normé (vide si égal) | | |
|
412.000000 | | 88.000000 | | |
|
old Tableau domdir grep cf atelier grep
Domaine domdir gde local dom maj
|
:time,20171121_133757: |
|
|
chemin_complet | titre | filtre | profondeur | dat_mod | taille | dat_cre |
|
|
|
|
|
|
|
Commande test renommage fichier
REM commande pour restauration de l'état initial de test de tableau domdir
dir d:\mt\bacasable
g:\mt\bacasable
touch %BASE%\bacasable\test-renommage-fichier.txt
echo 123456789>%BASE%\bacasable\test-renommage-fichier.txt
move %BASE%\bacasable\test_renommage_fichier.txt %BASE%\bacasable\test-renommage-fichier.txt
La connexion entre le domaine et
le répertoire se fait par une commande dir de recherche de la balise "Domdir "
qui permet de reconstituer la liste des fichiers du domaine à partir de la macro fdlr.
(ou bien la macro fdlR qui a un filtre moins restrictif cf FdlR )
La chaine de recherche doit se trouver dans une ligne du domaine, par exemple:
#domdir;dir /b /l /s c:\temp;
#
#
#domdir;dir /b /l /s E:\MQSeries\Qmgrs\q | sed -e "/xmitq/d"
e "/ghost/d"
e "/dead/d"
e "/system/d"
e "/mangled/d"
e "/testspl/d";
#
#
Ce domaine contiendra tout les fichiers mp3 présent sur le sous-répertoire fic\mp3 du répertoire de base.
Spécification de sommaire
Référence sources:écriture du sommaire SommaireEditerSommaireLigneAjouter
Pour chaque module on enregistre dans un texte ou une liste les références
hypertexte avec les niveaux d'accolades. S'il y a des résumés on les prends
aussi ( cf détection étiquette).
Le sommaire est stocké dans un fichier à part .
Cette fonctionnalité devrait exister de manière indépendante pour pouvoir
l'appliquer sur un bloc.
le 15/02/1997 à 16:17:45
le fichier externe du sommaire doit être placés dans un directory spécial
identifié par une variable d'environnement PATH SOM.
La liste sommaire est une liste au format CSV non triée comprenant les champs suivants:
niveau de bloc de l'étiquette
étiquette
commentaire du bloc .
édition sommaire alg
Le sommaire est édité par la fonction SommaireEditer.
On édite l'étiquette du sommaire puis les références dans l'ordre de la liste
à l'intérieur d'un bloc unique. Les étiquettes sont indentées par des
tabulations (caractères paramétrables) en fonction du niveau de bloc.
Zoom sommaire
le 12/05/1997 à 10:43:15 - à faire
Lorsque un sommaire est trop grand, on ne voit plus le regroupement
de certain niveau d'accolades car il sont séparé par les références
d'un nombre important d'étiquettes de bloc de niveau supérieur.
Comme le sommaire est enregistré dans une liste, on peut lors de
l'édition de cette liste déterminer si un niveau ne sera pas lisible.
Dans ce cas on éditera un bloc avec les références de ce seul niveau
comme pour le sommaire général.
Sommaire zoom alg
Algorythme:
pour chaque element de la liste Sommaire,
si rupture sur niveau
alors
boucle de recherche du nombre d'element de meme niveau
dans le bloc (la fin de rupture arrive lorsqu'on rencontre
un niveau inférieur au niveau traité).
pour ce niveau d'accolade, si les références
de ce niveau sont séparés d'un nombre de ligne supérieur à un écran,
alors on édite un bloc avec seulement des références de ce niveau
On edite ensuite la référence correspondant au niveau traité et on continue.
Il y aura donc un paramétre pour le utags.ini qui est la taille en
ligne de la fenetre d'affichage.
On aura donc la vision globale de n'importe quel niveau dans le
sommaire, dans un seul écran.
Spécification de propriété des fichiers de l'arborescence des domaines
but:
On veut gérer des propriétes au niveau des fichiers et des extensions des
fichiers qui participent à l'arborescence pour piloter celle-ci.
liens: spécification de champs dans les listes spécification de enreg champs dans les listes
Une propriété pourra être un champ entier d'une liste (liste de fichier ou
d'extension). La valeur par défaut d'une propriété sera VRAI,
c'est à dire que l'élément correspondant participe pleinement à la propriété.
On considéra la valeur 0 comme valeur neutre, si la valeur lu de la propriété
est zéro ou n'est pas défini (vide ou blanc) alors la valeur renvoyé de la
proprièté sera zéro, comme la valeur par défaut est VRAI la propriété sera
VRAI car la valeur neutre de la propriété n'infirme par la valeur par défaut.
Les valeurs négatives seront utilisées pour nier cette propriétés aux éléments avec
plusieurs niveaux de négation selon les cas.
Les valeurs positives seront réductrices de la valeur du zéro, mais dans le cadre de la
participation à la propriété.
On doit faire évoluer la liste Extension pour qu'elle ne contiennent pas seulement
l'extension du fichier mais les propriétés qui s'y rattachent.
On doit faire évoluer la liste Source pour qu'elle ne contiennent pas seulement
le chemin du fichier mais aussi des propriétés du fichier.
Compatibilité avec les listes simples (un seul champ par enregistrement).
Si on modifie les listes il faut faire attention à ce que partout où on
utilise l'élément comme unique champs, on puisse spécifier par défaut le
premier champs (compatibilité). La compatibilité est assuré par le fait que la fonction
qui lit la valeur de la propriété ChampEntierLire renvoie la valeur 0
pour la propriété si le champ lu n'y figure pas.
Il y a deux niveaux pour la définition d'une propriété pour un fichier.
La propriété générale au niveau de l'extension du fichier, la propriété au
niveau du fichier lui-même dans le fichier domaine.
La propriété au niveau fichier est une surcharge de la propriété au niveau
extension. Le neutre est utilisé pour rendre un niveau transparent par
rapport à une propriété. La surcharge au niveau fichier détermine la
propriété sauf si elle est neutre.
Propriétés des extensions (extensio lst) ou des sources (domaines .dom)
Filtre fichier
La première de ces propriétés est un entier qui exprime la participation ou
non au système de gestion des fichiers:
3 signifie qu'on ignore complétement le fichier et qu'il ne participe plus
même par son nom au système.
1 signifie que le fichier est pris mais ne participe pas à l'export du
système (c'est le cas des fichiers locaux qui ont le même nom sur plusieurs
machines mais qui ne sont pas identiques en contenu).
0 signifie que le fichier est pris sans restriction
Profondeur d'analyse
La deuxième propriété est un entier qui exprime la profondeur d'analyse de blocs de fichier.
3 signifie que le fichier n'est pas analysé et ne figure pas dans les sommaires
et ne possédent pas de référence hypertexte.
2 signifie que le fichier n'est pas analysé mais néamoins figure dans les
sommaire et à une références hypertexte qui dirige sur son chemin dans le fichier domaine.
1 signifie que le fichier n'est pas analysé mais néanmoins figure dans les
sommaire et à une référence hypertexte pour accéder au fichier - seule référence.
0 signifie que le fichier est complétement analysé par utags et que toutes
les étiquettes hypertextes sont prisent en compte.
1 et au delà correspond au niveau de profondeur d'analyse de blocs.
Gen html
Booléen indiquant si on doit générer un document html à partir du fichier.
3 signifie que l'on ne génére pas l'html et que l'on fait pointer la référence html directement sur le fichier source
2 signifie que l'on ne génére pas l'html mais que l'html existe par ailleurs
avec le nom normalisé cf spécification de génération de page html ou que le lien pointe
directement sur le fichier qui s'ouvrira avec l'application adéquate.
Cela signifie que dans le sommaire, la référence HTML pointera sur le fichier
pré-existant au nom normalisé.
(pour extension htm par exemple)
1 pas de génération et pas de lien vers le fichier source
0 génération totale
1 signifie que l'on génére le fichier html en créant les références et les
étiquettes, mais que l'on conserve sur la totalité du fichier la mise en
forme du texte. cf balise PRE.
Le source comm
spécifie dans le cas d'un fichier source la forme du commentaire par une ou deux chaines séparées par une virgule.
si une seule chaine est présente alors c'est que la deuxième chaine est un retour chariot: ligne commentaire.
cf spécification de gestion des commentaires pour les sources
Algorythme de construction du sommaire général
Pour rendre le sommaire général plus convivial, il est nécessaire d'inclure
le titre du fichier et non plus seulement le nom du fichier. On ajoute le
titre du fichier dans la liste Source par memorisation titre fichier pour sommaire général.
On considère que le titre d'un fichier est le premier commentaire
d'étiquette mentor que l'on rencontre dans le fichier, voir texte structuré.
On crée une liste Arbre équivalente dans sa structure à la liste Source mais
qui est sauvegardée dans arbre.txt. Ceci permet d'avoir une liste complète
de tout les modules même si on ne traite que les fichiers modifiés ou un
sous-domaine car le titre est mis à jour dans Source seulement si le fichier
est analysé dans TexteAnalyser.
(cf fusion de Source dans Arbre et sauvegarde,
allocation d une liste pour l'arbre général de l'hypertexte.)
Dans le module nomfic, on charge dans Source le titre s'il est présent. Le
titre dans un fichier domaine est en position 2 ce qui n'est pas le cas dans
la liste extensio lst cela pose un probleme pour la fonction ProprieteFichierLire
Le problème vient du fait que les colonnes sont identifiées par des nombres
cf evolution enreg
La liste Arbre contient comme premier champ l'arborescence des domaines,
c'est à dire pour chaque ligne, le chemin des domaines pour arriver à la
feuille terminale.
L'édition du sommaire général est une double boucle sur cette arborescence.
( cf construction de l'arbre de navigation dans l'hypertexte )
La première boucle à pour fonction de lire la liste Arbre avec une vue de
plus en plus détaillée en se déplaçant à chaque itération dans la profondeur
de l'arbre. On édite ainsi le sommaire pour le domaine racine, puis on passe
à chaque sous-domaine du domaine racine dans la deuxième itération et ainsi
de suite jusqu'à arriver en fin de profondeur de l'arbre.
(cf parcours de l'arbre dans le sens de la profondeur)
On edite une étiquette de domaine lorsque l'on détecte la rupture sur etiquette
On edite une référence de fichier ou domaine lorsque l'on détecte la rupture sur référence
Editer le titre d'un fichier terminal (feuille) est facile car cela se fait
localement. Par contre pour le titre d'un domaine, on ne sait pas ou est la
ligne correspondant au fichier domaine dans la liste Arbre.
La liste est traitée séquentiellement et elle n'est pas triée de façon à
faire apparaitre le fichier domaine en rupture première sur un domaine.
Ceci provient de l'algorythme de lecture de la fonction ListeFichierCharger
et de la façon dont sont constitués les fichiers domaines.
Une solution est de rajouter le titre du domaine dans la liste LstDom.
La liste Domaine doit être maintenu de la même manière que la liste Arbre,
c'est à dire chargée au début, mise à jour par la liste Source et sauvegardée à la fin.
Une autre solution consiste à rajouter le champs tag à l'enregistrement de la
liste Arbre (cf enregistrement Arbre ) de façon à accéder de manière indéxé à cette
liste. Par contre on détruit ainsi l'ordre naturel de cette liste (par
domaine) ce qui ne permet plus de détecter les ruptures ci-dessus évoquées.
On peut par conséquent créer une fonction d'indexation de la liste (index
secondaire).
Spécification de génération de page html
La génération des pages HTML nécessite lors de l'analyse de non seulement
détecter les étiquettes mais aussi les références. Le couple de délimiteur ""
est ajouté à l'argument tagDel de la fonction TexteAnalyseranalyse utags du fichier.
Ajout de la détection référence (cf définition du bloc structurel).
Il faut déterminer pour un type de fichier si la génération HTML est demandée.
On ajoute donc un champ dans la liste des extensions extensio lst
On généralise en créant une fonction de lecture des propriétés spécification de ProprieteFichierLire
Si on doit générer le fichier au format html, celui-ci aura un nom construit
à partir du nom du fichier. On transformera l'extension du fichier en suffixe
du nom et l'extension de la page html sera .htm. (cf basename c)
Par exemple pour sommaire.txt on aura sommaire_txt.htm.
On retrouvera ainsi facilement l'étiquette du fichier origine à partir de la
page HTML, ce qui rend aisé l'accés au fichier si on veut faire une mise à jour par exemple.
utags csommaire utags c détection référence
La génération de l'intranet correspondant à l'hypertexte mentor est composée
de trois éléments:
Le sommaire général html. cf construction de l'arbre de navigation dans l'hypertexte
Le sommaire de chaque fichier. cf écriture du sommaire
La génération des pages html. cf TexteAnalyser
Le code HTML doit pouvoir être paramètré facilement sans recompilation du
programme utags. Il faut donc prévoir une liste composée des éléments de la
syntaxe html. La liste sera composée d'enregistrements dont les champs sont:
l'identifiant de l'élément syntaxique.
l'élément syntaxique lui-même.
Le lien entre le programme et la liste sera l'identifiant de l'élément
syntaxique. C'est donc lui qui est codé en dur dans le programme utags.
cf chargement des paramètres syntaxique html.
l' option -w de main utags permet de demander la génération html.
Elle est conditionnée par la variable gen html.
Le point central de la génération de l'intranet est la recherche du tags correspondant
dans le fichier tags utags.
Sommaire général html
références:
algorythme de construction du sommaire général
construction de l'arbre de navigation dans l'hypertexte
Dans l'édition des liens hypertextes du sommaire général, les liens pour les
étiquettes des domaines sont des liens intrapages, les liens pour les
fichiers terminal de l'arborescence pointe vers les sommaires des fichiers.
Les liens pour les références aux sommaires des fichiers ne nécessitent que le nom du fichier
disponible à travers la référence éditée (cf récupération du chemin du fichier source traité)
et le chemin des sommaires représenté par la variable PATH SOM.
edition de la référence html du domaine ou du fichier terminal
On fait la distinction entre une référence intrapage vers un domaine dans le
sommaire général (cf reference intrapage de domaine)
et une référence vers un sommaire de fichier par le niveau
de l'arbre des domaines cf (reference vers sommaire).
On peut éditer la référence vers le fichier à coté de la référence vers le sommaire.
Sommaire fichier html
17/03/2002 écriture du sommaire
L'évolution en cours zoom sommaire étant moins urgente que la génération
html, on supprime le code de cette évolution qui va dans le source zoom sommaire
Par contre on réutilise la fonction SommaireEditer pour y intégrer
l'édition du sommaire html, car la simple fonction ListeSimpleDecharger ne
suffit plus.
La liste Sommaire doit être remaniée pour ne plus contenir le texte brut du
sommaire à éditer. On reprend la spécification spécification de sommaire
Génération des pages html
initialement prévu dans TexteAnalyser (fabrication des sommaires) la génération des pages html à été implémenté dans mt to htm pl
Le point central est la détection référence
L'idée de base est de générer une mise en forme HTML trés convenable à
partir de balise discrète et restreinte visible dans le document texte source.
Il faut donc déterminer un ensemble de règles de mise en forme.
Langage de balisage leger mentor
Spécification de règles de mise en forme texte source
La forme globale du texte est une encapsulation de bloc de texte
une numérotation du document HTML sera générée à partir du niveau de
profondeur des blocs, ainsi que la taille des titres de bloc.
Le bloc structurel définit les étiquettes et les références HTML
Modifieur de bloc: spécialisation des blocs de texte
- Un bloc spécialisé sera défini par un caractère délimiteur suivant
immédiatement le délimiteur de début de bloc.
- Un bloc de type CSV sera défini par
ce type de bloc pour générér des blocs d'édition
... ou des blocs de journal (fiche détail)
& ...
- Les numérotations avec puces seront définit Par des blocs de type
Le niveau de puces est définie automatiquement par le niveau de bloc.
Les puces numérotées sont définies par ...
.
- Un bloc de type
...
générera un texte avec conservation de la
forme du bloc. ( balise PRE ). La police reste la police par défaut qui
est proportionnelle.
- Un bloc de type
...
générera un texte avec conservation de la
forme du bloc. ( balise PRE ). La police est la police fixe courrier
ceci pour préserver l'alignement du texte dans le cas de copie écran par exemple.
- Un bloc de type
© ...
indique qu'il s'agit d'un code qu'il ne faut pas interpréter, le texte du bloc sera copié sans aucune analyse lexiquale.
- Un bloc de type
| ...
générera un texte justifié.
- Bloc de type source Un bloc de type
§ ...
considera le texte comme un source pur qui ne sera pas interprété.
- Un bloc de type underscore
sera interprété comme un commentaire HTML
- Un bloc de type double underscore
__ ... _---> sera supprimé de la génération HTML
- Un bloc de type
/ ...
sera ignoré et n'apparaitra pas dans le code HTML.
- Un bloc de type
générera un tableau bicolonne avec le texte affiché en double
pour lecture avec exercice de convergence ou de divergence. cas lecture convergente lc todo: faire évoluer la macro lc pour qu'elle mette le bloc suivant en introduction du texte
Cette page présente le texte en double afin qu'en même temps de la lecture on peut faire un exercice de convergence occulaire (ce que l'on fait chez un orthoptiste)
avec l'avantage que l'on peut dimensionner la fenêtre et donc l'effort de convergence, sans avoir besoin d'une série de prisme de convergence progressive.
Si la largeur de la page est réduite il est facile de faire fusionner les deux images plus on l'élargit plus on demande un effort aux muscles occulaires.
Il est possible de faire fusionner les deux images de deux manières: en convergence et en divergence. La convergence contracte les muscles et la divergence les étire (muscles en extension).
En combinant les deux manières ont obtient une séance complète d'orthoptie : le travail de remforcement des muscles (musculation) et leur relaxation (stretching, gainage ou travail de tenségrité)
La modulation de la largeur de la fenêtre correspond à la succession des séances où l'on utiliser des prisme de plus en plus convergent ou divergent.
Il y a même un avantage par rapport au travail de l'orthoptiste c'est que la modulation de la largeur se fait de manière continue ce qui permet des performances plus grande du système occulaire.
Modifieur d'affichage du texte: altération de l'affichage du texte cas modifieur d affichage
Un texte entre parenthèse suivi d'une étoile Nouveau:
apparaîtra ) dans une couleur spéciale
avec la mention "nouveau". cf cas nouveaux.
Un texte entre parenthèse suivi d'un signe pourcent ( apparaîtra ) dans une couleur spéciale.
cf cas couleur.
Un texte entre parenthèse suivi d'un signe ¤ Obsolète:
apparaîtra ) dans une couleur grisé
avec la mention "obsolète". cf cas obsolète.
Gestion des caractères en gras
Un texte entre parenthèse suivi d'un point d'exclamation apparaîtra en gras.
Un mot suivi d'un deux points doublé en fin de ligne apparaît en gras.
gras::
L'utilisation du caractère nbsp (no break space) permet de transformer
une phrase en mot unique (cf macro epw) !
on peut préciser un code couleur par la syntaxe suivante: _couleur_hexa ... texte
cf tableau couleur .
Une étiquette de type
hil Html inline l'ajouter
qu'un
spécification de html inline
Commentaire de bloc indiquera que l'on concaténera
l'étiquette ainsi que le commentaire dans l'étiquette HTML.
Spécification de traitement des infixes
- La présence d'un infixe en préfixe dans une étiquette HTML devrat
provoquer le remplacement du préfixe par son libellé trouvé dans la table Infixe
pour constituer le texte de l'étiquette HTML. Le libellé est inserré en
début de texte et le préfixe supprimé.
- 12/05/2005 certain infixe comme "des" pour descriptif sont homonymes d'un
mot qui peut apparaître dans une étiquette. Par contre en terme de
suffixe, il n'y a pas d'ambiguité. Donc il faut prévoir dans la table des
infixe, un indicateur qui signifie "suffixe seulement" et par la même prévoir
"préfixe seulement"
Numérotation des chapitres
Les blocs sont édités en tant que chapitres. En gérant une table de
comptage des chapitres par niveau on peut éditer une numérotation de chapitre.
L'indice de la table doit être le niveau de bloc. Si on incrémente nu
niveau de bloc les niveaux de bloc supérieur (plus grand détail) doivent
être réinitialisé. Il faut construire la chaine de numérotation par une
boucle sur cette table jusqu'au niveau du bloc.
Saut de page
le caractères ascii "form feed"
dec: 12 oct: 014 char: ^L FF hex: 0c bin: 1100
qui réalise un saut de page dans l'envoi du texte brut à l'imprimante générera un paragraphe avec la propriété
universelle "style" pour déclancher un saut de page lors de l'impression du document html.
la valeur de la propriété style est "page-break-before: always;"
Pour rendre visible le saut de page à l'écran on peut utiliser la balise HR: ligne de séparation.
cf cas saut de page.
L'implémentation de la génération des pages HTML est faite en langage perl par le script
mt to htm pl. Dans génération de la page html on écrit une liste fichiers traités
dont les pages HTLM sont à générer.
Cette liste LstGenHTML est crée dans chargement des paramètres syntaxique html.
En fin de programme le fichier est écrit et la commande perl mt to htm pl est lancé pour générer les pages.
Spécification de commentaire mentor html
- la forme d'une étiquette de bloc de texte impose que le commentaire de bloc suive exactement l'étiquette.
- le contrôle des différents élément dans la génération html se fait par la reconnaissance des séparateurs de bloc
- dans ce cas il faut aussi utiliser les séparateurs de mot: une condition supplémentaire est que le précédent
séparateur de mot doit être ">" lorsqu'une parenthèse ouvrante doit être considéré comme le début d'un commentaire de bloc.
Spécification de environnement utags
todo: 03/05/2005 on introduit la variable UBASE qui contient le nom de la
variable d'environnement qui définit le chemin de la base mentor.
Cette variable n'est normalement pas connu de utags mais il devient
nécessaire qu'elle le deviennent afin de l'utiliser dans les fichiers utags
et urefs pour les chemins de fichier, rendant ainsi le fichier tags
portable. Ceci est nécessaire pour utiliser mentor sur une clé USB ou le
nom de la lettre de montage disque n'est définie qu'au branchement. La présence
de la valeur de UBASE dans le fichier utags plutôt que la valeur de la
variable d'environnement qu'elle contient rend le fichier utags indifférent
par rapport à la lettre de montage de la clé USB.
Spécification de tritex
Le tri d'un texte s'opère par le chargement du texte par bloc dans une liste.
Chaque élément de la liste est en fait un bloc de texte référencé par une
étiquette.
Pour cela il faut une nouvelle fonction de chargement de liste. Cette
fonction utilisera le module de lecture "fichier" pour la lecture des
éléments de la liste. Un argument permettra de définir les délimiteurs de
bloc.
Spécification de formatex
Il y a différents formattages possibles:
passage d'un mode texte ascii au mode word de Microsoft,
reformatage d'un texte ascii pour la longueur des lignes.
Dans les deux cas il y a des règles sur la forme du texte:
on conserve la forme de l' hypertexte utags.
si une ligne commence par au moins deux blancs elle sera prise comme
un paragraphe, et une ligne de séparation sera introduite.
Les fonctionnalités de formatex sont:
Analyse du texte
Un texte ASCII saisi par éditeur est composé par une suite de mot et
de caractères spéciaux de césures:
le "blanc" ou "espace" caractère ascii 40 est le séparateur unique,
les caractères '', '
', '-' et '\n' sont des délimiteurs de bloc.
il n'y a pas de délimiteur de chaine de caractères.
On lit un mot, puis ce mot est réécrit en sortie.
On effectue des traitements en fonction du délimiteur de bloc que l'on
rencontre.
Les traitements différent suivant le formatage choisi.
16/08/2002 idée pour rendre plus puissant le code de l'analyseur.
lorsqu'on traite la séquence des mots on s'aperçoit qu'il est intéressant
de connaître le contexte par exemple le mot ou le séparateur précédent et
evéntuellement le mot précédent le mot précédent etc...
Il semble donc intéressant de stocker dans une pile fifo les mots et les
séparateurs et de gérer le contexte en se positionnant dans la pile.
Conversion pour word
FORMAT WORD
Comment transferer un texte écrit sous un éditeur classique vers un
traitement de texte comme WORD.
Paragraphe word
Word a une manière particulière de concevoir un texte:
Un texte est formé de paragraphe, ces paragraphes sont délimités par
le caractère '\n'. Les retours à la ligne forcés sont indiqués par le
caractére '' (ascii 11 Vertical Tabulation).
Lorsque l'on saisi sous un éditeur on peut choisir une présentation du
texte qui corresponde à ce que l'on trouve dans WORD:
un paragraphe sera délimité par une ligne vide (cad 2 '\n' à la suite)
où par un délimiteur spécial par exemple ""
un retour à la ligne forcé peut se produire par un retrait sur la ligne
qui suit ou un tiret. Si le tiret est isolé il s'agit d'un alinéa, si il
est à la fin d'un mot, il indique qu'un mot a été coupé.
Avec ces régles on peut définir des règles de transformation de l'éditeur
vers le traitement de texte.
Règles de conversion pour word
Retour à la ligne simple
si on trouve un \n et que le précédent démiliteur n'est pas un \n, on
supprime ce \n du texte résultant. Le retour à la ligne est fait
automatiquement dans WORD (lignes pliées).
Une ligne vide un paragraphe
si on trouve un \n et que le précédent démiliteur est un \n, on
met ce \n dans le texte résultant
Troncation de ligne
si on trouve un '\n' et que le délimiteur précédent est un '-'
et qu'il n'y a pas de mot entre.
c'est que l'on a un tiret troncateur de mot pour aller à la ligne, on
réécrit le '-' puis on ajoute un \n.
Retour à la ligne pour énumération
si on trouve un '-' isolé c'est qu'il s'agit d'un alinéa, on ajoute
un caractère de saut de ligne et l'on réécrit le '-'
dans le texte résultant.
Paragraphe delimiteur de bloc
si un trouve un délimiteur de bloc classique '' ou '
' en colonne zéro,
on insére un \n.
Retour à la ligne forcé
- si aprés un retour à la ligne simple (\n) on trouve avant le prochain mot au
moins deux séparateurs, on considère que c'est un retrait et que le
retour à la ligne à été voulu. On ajoute donc un caractère de saut de ligne
(VT) pour WORD. Si le retour à la ligne venait d'une ligne vide c'est qu'on
est en début de paragraphe, on ne fait donc pas le traitement.
Formattage ascii
Message enrobement
L'utilitaire formatex reformate un texte en constituant de nouvelles lignes.
Chacune de ces lignes peut être insérer dans un message donné sous la forme
d'une liste simple. Le message sera inséré dans cette liste simple à
l'endroit où sera trouvé la chaine : "", le message sera inséré entre les
deux double-quotes.
S'il n'y a pas de double-quotes dans le message il ne sera pas utilisé.
Nombre de colonnes maxi
ce paramètre donne la longueur maximale des lignes formatées. Par défaut
ce paramètre a pour valeur 79. Dans le car du FORMAT_WORD il n'en est pas
tenu compte, car les lignes sont des paragraphes.
Spécification de impexp
La base hypertexte à exporter est définie par un fichier .dom
on constitue à partir du .dom une liste de fichier à exporter.
on lance pkzip avec cette liste.
Information export
Sur le support d'export on a:
le fichier compressé dans un fichier zip
la liste des fichiers compressés constituée:
du chemin complet du fichier dans l'architecture de la base hypertexte,
de la date de dernière MAJ du fichier,
la base à partir de laquelle a été faite la dernière opération sur le
fichier (export ou import).
Documentation technique utags pm : module perl de recherche dans la base hypertexte utags
l'appel du module utags pm charge l'index utags en mémoire
Documentation technique TableauCharger
la fonction TableauCharger charge un tableau mentor à partir de son étiquette, d'une recherche dans l'index utags