(traduction en cours de
AutomaticForwardIndex seul lien de référence)
Un IndexAvant peut être maintenu automatiquement, une fois adopté le bon logiciel et la bonne métadonnée. Le problème reste de choisir le juste milleu entre des fonctionnalités et les efforts de maintenance des méta-données.
Sur le reste de cette page, nous pourrions parler de hiérarchie des noeuds. Chaque noeud à l'exception du noeud du haut a exactement un parent si c'est un arbre. Si un noeud a plusieurs parents, c'est un semi-lattice et ne peut être linéarisé trivialement. Les Orphelins sont des noeuds sans parent. Un noeud parent a zéro à n noeuds enfants. Ces noeuds enfants s'appellent les siblings (enfants de même parent). Si les noeuds enfants sont classés, alors chaque noeud a un sibling suivant et précédent.
La Linearisation est le processus consistant à arranger tous les noeuds de manière linéaire. L'exemple le plus évident serait d'imprimier un wiki comme un livre, ou d'assembler toutes les pages wikis dans une page web monolithique .
L'enfant a un pointeur vers le Parent
La forme la plus simple de métadonnée pour maintenir est d'avoir chaque point de noeud vers son parent.
- Avantage : Les utilisateurs ont seulement à modifier une page pour la "migrer" d'un parent vers un autre.
- Avantage : Quand vous créez la page, assigner un parent peut survenir au même moment.
- Avantage : L'indication d'un parent peut être obligatoire lors de la sauvegarde de la page.
- Avantage: L'indication de pas plus d'un parent peut être imposée lors de la sauvegarde de la page.
- Dispositif: En utilisant cette information, vous pouvez montrer "où dans la hiérarchie" se trouve le noeud courant, en listant tous les noeuds de parent jusqu'au noeud supérieur.
- Inconvénient: Les noeuds d'enfant ne sont pas triés, ou sont triés arbitrairement, par exemple alphabétiquement. La linéarisation sera donc quelque peu arbitraire.
- Inconvénient: Les enfants ne peuvent pas être groupés sans plus de metadonnées.
Parent a des pointeurs vers les Enfants
Une alternative consiste à renverser la situation : Chaque noeud de parent a un "menu" -- une liste commandée de noeuds d'enfant.
- Inconvénient: Les utilisateurs doivent éditer deux pages "pour le déplacer" d'un parent à l'autre.
- Peut-être un inconvénient: Lors de la création de la page, assigner un parent est impossible. CommunityExpectation peut exiger des utilisateurs de créer un lien vers de nouvelles pages d'abord sur le noeud de parent, facilitant ainsi le processus.
- Peut-être un avantage: Spécifier pas plus d'un parent est insignifiant ; listez juste le noeud dans plusieurs menus. Plus souvent, empêcher un semi-trellis (semi-lattice ?) comporte la vérification additionnelle au moment où sont sauvés les menus.
- Inconvénient: Spécifier un parent ne peut pas être imposé.
- Inconvénient: Il est dur de trouver où est le noeud courant "dans la hiérarchie", à moins que vous ne cachiez l'information ou effectuiez des recherches répétées.
- Dispositif: En utilisant cette information, vous déterminez automatiquement les prochains et précédents enfants de mêmes parents pour un noeud. La linéarisation sera insignifiante ; tout ce que vous devez déterminer est comment gérer des parents multiples et des orphelins. Une solution évidente à ce problème sera simplement d'imprimer le noeud la première fois qu'il arrive pour les futures occurences parce qu'ils pointent vers les enfants du premier parent. Les liens suivants et précédents seront cependant suboptimaux pour des occurences à venir, puisqu'ils se dirigent aux enfants du premier parent seulement.
- Dispositif: Le menu avec les enfants n'a pas besoin d'être une liste à plat ; il peut comporter le groupage et des sous-positions.
Spécifiez la Linéarisation Séparément
L'info texte GNU [1] du système de documentation produits des formats différents ; l'un d'entre eux est le fichier Info qui peut être butiné en utilisant un info-navigateur, une autre est le fichier TeX qui peut être utilisé pour imprimer un livre. Pour le fichier Info les parents ont à la fois des menus et un parent, suivant et des pointeurs précédent (il y a un support logiciel pour générer le menu parent en utilisant les trois pointeurs) Pour le fichier TeX, chaque noeud spécifie son niveau de structure (chapitre, section, sous section) et tous les noeuds sont imprimés au fur et à mesure de leur apparition dans le fichier.
Voilà ce que le manuel dit à ce propos :
- You can use node pointers and menus to structure an Info file any way you want; and you can write a Texinfo file so that its Info output has a different structure than its printed output. However, virtually all Texinfo files are written such that the structure for the Info output corresponds to the structure for the printed output. It is neither convenient nor understandable to the reader to do otherwise.
Plus simplement, cette approche comprend une maintenance d'un bon nombre de méta-données et les avantages ne sont pas très clairs.
(à relire)
DossierLien PageTranslation AutomaticForwardIndex