# Auto-éditer un wikilivre/Auto-référencer/Version imprimable

Auto-éditer un wikilivre
Auto-référencer
Éditeur : Goelette Cardabela

# Auto-référencer
## Table des matières par chapitres

self-referencing

## Codes shell pour créer la page « Annexe »
### Annexer
#### (Appendix)

Annexer ou annexer.sh est la page principale qui permet de produire la page « Annexe », elle utilise les commandes shell "lister", "télécharger", "ajouter_sclt" et "ajouter_scli"
La première partie qui précède #O## annexer ################ est l'entête. Elle utilisée dans tous les fichiers de commandes de cet article. dans le fichier de commandes ajouter_scli cette entête est volontairement séparée pour la démonstration, avec son inclusion par la commande source. Les autres fichiers de commandes incluent directement cette entête pour faciliter la compréhension des codes.

### Lister
#### (List)

Créer une liste des liens vers les pages qui composent le livre.

### Télécharger
#### (Download)

Télécharger le code source de la page ou la sous page grâce à la liste obtenue dans la section Télécharger.

### Ajouter sclt
#### (Adding sclt) or (Append sclt)

Ajouter la section article, source, licence, contributeur(s).

### Ajouter scli
#### (Adding scli) or (Append scli)

Ajouter la section image, source, license, contributeurs(s) à la page Annexe.

#### Le fichier d'entête

Ce fichier doit être inclus dans le fichier de commandes ajouter_scli

#### Le fichier de commandes

Cette partie est consultable sur les versions plus récentes de Auto-référencer.
Pour consulter la section la plus élaborée, voyez Annexer, la troisième partie, imprimable.

## Tester les codes

Les fichiers de commandes shell peuvent être éprouvés successivement, sous linux ou sous d'autres systèmes d'exploitation acceptant les commandes shell : Windows 10, MinGw, Cygwin, ....
Pour effectuer ces tests il faut se placer dans le répertoire utilisateur et créer un répertoire des commandes, dans les exemples : mkdir ~/annexer
Les fichiers de commandes annexer, lister, télécharger, ajouter-sclt, ajouter-scli, sont prévus pour être placés dans ce répertoire.
Les commandes peuvent être éprouvées avec tous les livres disponibles. Pour ces tests nous avons utilisé le livre « LivreTest ».

### Commençer par le fichier de commandes principal « annexer »

Ce fichier de commandes contrôle le bon fonctionnement de l'entête qui est commune à tous les fichiers de commandes. cette entête pourrait s'appeler header.sh et être inclus dans les fichiers de commandes avec l'option source header.sh s'il est dans le même répertoire des commandes, ou reconnu dans l'environnement (path). Il vérifie que le répertoire des fichiers de commandes est correct, que le nom du projet est bien présent sur la ligne de commande en premier paramètre, comme dans l'exemple suivant : "./annexer LivreTest" où la variable de projet est LivreTest, le nom du livre.
Les commandes de ce fichier créent le répertoire des fichiers de commandes si il n'existe pas. Il va créer le répertoire du projet dans lequel on trouvera tous les fichiers intermédiaires, notamment : "Projet.list", "Projet.prj", "Projet.annexe", tous les fichiers html des Articles et les documents extraits les concernant; Article avec les extensions .article, .auteur, .license, voire aussi .licence français du bas de page, .RevisionID, etc ...
Pseudo codes obtenu avec la commande "mkd -Snws OPTHw annexer" :

#### Lançer les tests

Faire un brouillon avec le micro-ordinateur sous linux (ou autre système acceptant les shells linux).
* Mettre l'ordinateur en marche.
* Copier le code du fichier annexer dans un éditeur de texte comme Notepadqq, Gedit, ou Bluefish.
* Créer le répertoire Annexer avec l'éditeur, ou, sous console : mkdir ~/Annexer
* Enregistrer le texte avec pour nom annexer dans le répertoire Annexer.
* Sous console, entrer dans le répertoire Annexer : cd ~/Annexer
* Rendre la commande "annexer" exécutable : chmod 777 annexer
* Lancer la commande ./annexer LivreTest et finir avec un retour-chariot
* Observer le répertoire Annexer : ls -l ~/Annexer/LivreTest qui doit être vide.
Note : Si vous lancez la commande ./annexer LivreTest de n'importe répertoire, les répertoires ~/Annexer et ~/annexer LivreTest seront automatiquement créés. Il suffira de copier le fichier de commandes Annexer ou annexer.sh dans le répertoire de fichiers de commandes : "mv ./annexer ~/Annexer/annexer" ou "mv ./annexer.sh ~/Annexer/annexer.sh"

### Poursuivre avec le fichier de commandes « lister »

Le but est d'obtenir un fichier qui content la liste des liens vers les pages d'un de wikilivres à documenter.

#### Exemple par la page LivreTest.list

    Cette page va nous servir pour télécharger le code html de ces pages.
Nous pouvons obtenir ces liens grâce aux pages « Contenus » des Versions imprimables et « Compilation » issue de la compilation d'une page. (Menu à gauche d'une page wikimedia.) Il est aussi possible d'éditer et d'enregistrer manuellement une telle liste.

#### Les lignes qui méritent une attention

La ligne 91 dans l'édition du 11 avril 2020 : Remarque : $Projet est un répertoire et $1.contenu est un fichier.
Cette ligne prend en compte le texte de la page Contenus de la Version imprimable du livre pour créer le fichier de liste.
La ligne elle même signifie :
* Exemple d'une page Contenus de Version imprimable :
La ligne 101 de la même édition :
Cette ligne prend en compte le texte de la page Compilation de la Version compilée du livre pour créer le fichier de liste.
Le commentaire est le même que pour la ligne précédent à ceci près qu'au premier filtre on supprime aussi le caractère ':' du début de ligne des fichiers issus de la compilation.
* Exemple d'une page de Compilation de Version compilée :

#### Lancer les tests

* Copier le code du chapitre Lister dans un éditeur et enregitrer ce code dans le répertoire Annexe sous le nom « lister » ou « lister.sh »
* Autoriser l'exécution du code par la commande chmod 777 ~/Annexe/lister
* Copier le « Contenus » de la Version imprimable vu précédemment dans ce sous chapitre,
* Enregistrer ce « Contenus » dans le fichier Annexe/LivreTest/LivreTest.contenus
* Lancer la commande ./lister LivreTest
On devrait obtenir le fichier ~/Annexe/LivreTest/LivreTest.list :
Vérifier que l'on a modifié les autorisations du fichier LivreTest.contenus afin qu'il ne puisse pas être supprimé par mégarde lors des manipulations de fichiers.

### Poursuivre avec le fichier de commandes « télécharger »

Le but est de télécharger tous les fichiers html qui composent le livre grâce au fichier de liste obtenu précédemment.

#### Les lignes qui méritent une attention

lignes 80 à 87 de la version du 10avril 2020
La première ligne crée la structure complète des répertoires et fichiers, depuis la racine du site, jusqu'aux fichiers html qui composent le livre.
La cinquième ligne crée les fichiers html à analyser, dans le répertoire courant.
La sixième ligne crée le fichier de projet $Projet/$1.prj. Ce fichier nous sera utile pour créer la page « Annexe » complète sclti concaténation de sclt et scli. sclti signifie : Sources, Contributeur(s), Licences, Textes, et Images; on entend par Textes les contenus des articles, et par Images toutes les illustrations.

##### Liste des fichiers html créés
#### Lancer les tests

On devrait obtenir :

##### Contenu du fichier de projet LivreTest.prj
### Poursuivre avec le fichier de commandes « ajouter_sclt »

Le but est de créer l'entête de la page Annexe et d'y ajouter la liste des articles avec les sources, licences, contributeurs.
Les numéros des pages n'est possibles que lorsque la version imprimable aura été créée, avec une post-indexation et une post-annexion.

#### Les lignes qui méritent une attention

Remarque : Dans les explications du code on entend par projet le nom du projet entré en paramètre dans la commande ./ajouter_sclt projet
Lignes 125-126 de la version du 13 avril 2020
mkd n'est pas inclus dans les distributions linux. les paquets et sources sont téléchargeable pour tous les systèmes d'exploitation. Pour toute informations complémentaires : mkd (commande unix), Mkd_(Extracteur_de_documents) Cette ligne de commandes extrait tous les commentaires avec une sortie dans un fichier projet.tmp ainsi que vers la sortie standard (l'écran par défaut) où elle est reprise pour être listée en colonne grâce au séparateur de chaînes ','.
Lignes 131-134
$ligne est la variable lue ligne par ligne du fichier de liste projet.prj dans une boucle tant qu'il y a des lignes à lire, faire ... Cette ligne est aussi le nom de l'article qui va être analysé.
Lignes 136-140
La deuxième ligne crée le fichier de projet.RevisionId dans lequel on écrit une chaîne de caractères sans retour à la ligne. La troisième ligne :
Lignes 143-153
Les lignes 1 et 2 sont des commentaires à l'usage des programmeurs. Les lignes 3 et 4 sont des lignes de tests La ligne 6 ajoute ", ''licence'' :" au fichier projet.sclt La ligne 7 crée le fichier projet.lisence et y ajoute la même chaîne qu'à la ligne 6
La ligne 8 :
ligne 9 : mêmes remarques que précédemment par sélection du bas de page en français avec licence. ligne 10 : ajout de la chaîne projet.lisense au fichier projet.sclt ligne 11 : ajout à l'écran, peut être masqué à l'écran et copié dans un fichier projet.log.txt avec la commande ./ajouter_clt projet > projet.log.txt
Lignes 155-159
La ligne 1 est un commentaire La ligne 2 ajoute la chaîne de caractères , auteur(s) : au fichier projet.sclt la ligne 3 trie la ligne qui contient wgRelevantUserName, la chaîne est coupée et la partie de la chaîne qui contient le nom de l'utilisateur est copiée dans le fichier projet.auteur les lignes 4 et 5 copient respectivement le contenu du fichier projet.auteur dans le fichier projet.sclt, puis à la console.

#### Lancer les tests
##### fichier obtenu avec la commande ~/Annexer/ajouter_sclt LivreTest
### Poursuivre avec le fichier de commandes « ajouter_scli »

Dans les articles on inclut des illustrations, des images, des photos, le but est d'extraire de ces articles; les liens vers ces fichiers, ainsi que les licences, auteurs, voire le chapitre ou le sous chapitre, afin de les retrouver dans les textes, faute de numéro de page.

#### Le fichier d'entête

Ce fichier doit être inclus dans le fichier de commandes ajouter_scli
* ↑ https://korben.info/installer-shell-bash-linux-windows-10.html
* ↑ http://montefiore.ulg.ac.be/~nvecoven/ci/files/tuto_bash/tuto_bash.html