Auto-éditer un wikilivre/Auto-référencer

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Programmation bash (exercices, tests et documentation.)
Un livre appartenant à la série Programmation de Wikilivres.

self-referencing

Blue-rocket.svg Ce wikilivre est en cours de rédaction, n'hésitez pas à participer !
Sweden road sign A10.svg Ce wikilivre est bien avancé et peut être utilisé avec précaution.
Sciences humaines.svg Ce livre a été classé comme étant accessible aux lecteurs de niveau 12.

Codes shell pour créer la page « Annexe » d'un wikilivre[modifier | modifier le wikicode]

Information : Les fichiers ont été modifiés depuis la version originale du 10 avril avec la description détaillée des premiers codes.
Pour des examens approfondis il est possible d'accéder à ces modules d'origine dans le chapitre déroulable Nouveautés, section 3.1 : Programmes_d'évaluations_et_de_tests.
Cliquer sur l'historique de chaque module pour visualiser les codes correspondants aux dates des évaluations et des tests.
Voilà de bons exercices pour le(s) confinement(s)
--------
Pourquoi avoir choisi le shell bash ?
Les codes shells sont les plus proches du code machine, ils sont donc ultra-rapides, même sur de très vieux micro-ordinateurs, ils sont disponibles pour tous les systèmes d'exploitation, gratuits, efficaces, parfois difficiles à mettre en œuvre ou à comprendre car les règles sont strictes et les différentes versions diffèrent quelque peu selon que l'on choisit les versions posix[1] ou gnu ou autres shells : csh, tcsh, ksh, etc.
Synopsis de ce projet
Examiner le projet en préétude, avec le LivreTest
Ce projet doit permettre de créer la page Annexe des livres de wikilivres, avec :
  1. Les références.
  2. La liste des articles avec le lien, la licence associée, ainsi que les noms des contributeurs.
  3. La liste des illustrations avec le lien, la licence associée, ainsi que les noms des auteurs.
  4. La licence de la page principale ou de sa version imprimable.
Outils de programmation
  1. Le shell BASH : Le programme sera écrit en code bash (Bourne again shell) ou Bourne_shell(bsh ou sh), sous linux de préférence. Il existe des versions de bash pour d'autres systèmes d'exploitation[2].
  2. Le système d'exploitation : Préférez Ubuntu pour avoir un accès direct aux paquets de mkd et ses applications dérivées, par le serveur sécurisé launchpad
  3. Le logiciel mkd : extracteur de documents. Il est recommandé de l'installer dès que possible. [3].
  4. En complément de mkd, le shell mkddocu extracteur de documents écrit en bash. Avec l'option -s il extrait toutes les chaînes de caractères pré-encodées pour les traductions avec gettext.
À défaut de mkd vous pouvez compiler mkdcpp[4][5]
Directives de programmation
Les modules du programme devront être indépendants et éprouvés séparément avant d'être intégrés dans le programme principal. Pour ce faire on écrira un module d'entête header.sh qui servira aux tests de chaque module. Ce module d'entête fonctionnera comme les module "include" des langages C, c++ etc. Ce sera le fichier d'entête de chaque module inclus avec la commande shell source. Exemple : source header.sh
    Utiliser les codes d'extraction suivants pour les logiciels de documentation
#H pour les commentaires d'entête. On va les retrouver dans toutes les commandes du projet
#O pour les commentaires d'organigramme.
#P pour les commentaires destinés aux Programmeurs.
#S pour les commentaires de structure.
#T pour les commentaire de tests, ce sont souvent des points d'arrêt pour la mise au point.
#w pour des commentaires d'attention, de mise en garde.
Internationalisation des messages
Tous le messages affichés avec la commande echo devront être traduits en anglais, langue de base pour les traductions, puis intégrés dans le programme final. Un fichier .pot sera créé pour les messages puis traduits à l'aide de Poedit et compilés sous forme de fichier .mo copiés dans les répertoires de traduction habituels.
Internationalisation des manuels
  1. Un manuel man(1) unix sera écrit en français puis traduit en anglais.
  2. Un manuel html sera écrit en français et en anglais pour être lus à l'aide de navigateurs internet.
Références
  1. http://pwet.fr/man/linux/commandes/posix/
  2. https://korben.info/installer-shell-bash-linux-windows-10.html
  3. Mkd_(Extracteur_de_documents)/La_commande_mkd#Disponibilité
  4. Mkd_(Extracteur_de_documents)/Ajouter_des_modules#
  5. https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/mkdcpp
  6. modifier cette description du projet

    Entête des modules[modifier | modifier le wikicode]

    (header)
    Documentation
    Le fichier de commandes header.sh doit être inclus dans tous les modules
      de test du programme principal. Il initialise le répertoire des commandes,
      le répertoire de travail du projet; le projet est le nom du livre, de
      l'article ou de la page. Si ils n'existent pas ils seront créés
    Ce projet éducatif et de tests est destiné à être utilisé sous wikilivres
      en langue française et en caractères UTF8. 
      Les variables Site et SitePrefix se rapportent à "fr.wikibooks.org".
    Le programme est prévu pour fonctionner à l'initiative du contributeur qui
      qui doit copier la page "Contenus" ou la page de la compilation dans le
      répertoire de travail "~/Annexe/<nom du livre>"
    Les modules en tests sont indépendants, cependant ils doivent être exécutés
      dans l'ordre ./header.sh <livre>, ./lister <livre>, ./télécharger <livre>
      ./ajouter_sclt <livre>, ./ajouter_sclic, ./ajouter_sclip <livre>
    La liste des pages à analyser est indispensable dans tous les modules en
      tests. L'absence de la liste des pages à analyser est signalée à chaque
      lancement des modules du programme principal "Annexer"
    
    AVERTISSEMENT : Ce programme avec ses modules doit être utilisé par des
      wikipédiens, à titre personnel. La structure du résultat est voisine de
      l'impression par PediaPress. Pour cette raison ce programme n'est pas
      commercialisable.
    
    Organigramme
    2:#P Nom du fichier de commandes : header ou header.sh
    3:#P Syntaxe : ".header.sh <nom du livre>"
    4:#P Exemple : "./header.sh LivreTest" à la console pour les essais.
    5:#P Ce fichier d'entête est commun aux fichiers de commandes annexer, lister,
    6:#P   télécharger, ajouter_sclt, ajouter_sclip dans lesquels ils sont inclus.
    7:#P Date de création : 24 mars 2020
    8:#P Modifié le : 14 mai 2020 par GC ajout des "données_de_conversions" url->utf8
    9:#P Modifié le : 16 mai 2020 par GC maj de la nouvelle syntaxe de la commande.
    10:#P Version sur WikiLivres le : 17 mai 2020
    11:#P
    34:#P Note : L'extraction de la documentation peut se faire par la commande :
    35:#P   Documentation :
    36:#P     mkd -Stw D header.sh <livre>_doc/header.sh.D.doc
    37:#P     grep -e '#D' header.sh | sed s/#D//g  > <livre>_doc/header.sh.HPw.doc
    38:#P   Organigrammes :
    39:#P     grep -e -n '#H' -e '#P' -e '#w' header.sh
    40:#P     ou : grep -E "#H|#P|#w" header.sh > <livre>_doc/header.sh.HPw.doc
    41:#P   Exemples :
    42:#P     mkd -Stw D header.sh LivreTest_doc/header.sh.D.doc
    43:#P     grep -e '#D' header.sh | sed s/#D//g  > LivreTest_doc/header.sh.D.doc
    44:#P     grep -n -E "#H|#P|#w" header.sh > LivreTest_doc/header.sh.HPw.doc 
    45:#P
    47:#H vider (nettoyer) l'écran.
    54:#H tester la présence du répertoire racine des commandes, si il n'existe pas,
    55:#H   le créer.
    65:#H initialiser la variable Conversion avec le lien vers le fichier
    66:#H   données_de_conversion
    69:#H si le programme de test de header.sh est actif, alors supprimer le fichier
    70:#H   'données_de_conversions'
    77:#H tester la présence du fichier des 'données_de_conversion', si il n'existe
    78:#H   pas; le créer.
    121:#H créer la foncion header_syntax.
    126:       #w seulement avec la commande 'Annexer'
    127:       #w echo "ou $0 <livre> [-v] [-pb||-pc]"
    128:       #w echo "options -v:mode bavard, -pb ou -pc:versions personnalisées Wikibooks ou Commons."
    132:#H tester la présence du premier paramètre de la ligne de commandes
    146:      exit 0 #P exit 0 : Fin d'affichage de la syntaxe
    150:#H initialiser la variable "Projet" = répertoire de projet.
    156:#H tester la présence du répertoire du projet, si il n'existe pas, le créer.
    165:#H initialiser les variables 'Site' (nom du serveur) et 'SitePrefix'.
    169:#H nettoyer l'écran, afficher les variables globales et le contenu du répertoire de projet.
    198:#H entrer dans la répertoire de travail.
    

    Annexer (main)[modifier | modifier le wikicode]

    (Appendix)

    Annexer ou annexer.sh est la page principale qui permet de produire la page « Annexe », elle utilise les commandes shell "header.sh, "lister", "télécharger", "ajouter_sclt", "ajouter_sclic" et "ajouter_sclip".

    Documentation
    mkd -Stw D annexer Bash_doc/annexer.D.doc, qui respecte les tabulations, ou :
    mkd -sStw D annexer > Bash_doc/annexer.D.doc, avec une présentation comme ci-dessous.
      la commande "annexer" est le programme principal de tests pour créer la
        page "Annexe" des livres de wikilivres.
      annexer (module de tests) analyse la ligne de commandes et initialise la
        variable $Verbose ou affiche la syntaxe à la demande interrogative '?'
        en premier paramètre.
      ce programme supprime tous les fichiers obsolètes du répertoire de travail
         "~/Annexe/<nom du livre>" et de ses sous répertoires, avec l'accord de
         l'utilisateur.
      les modules lister, télécharger, ajouter_sclt, ajouter_scli* sont exécutés
        dans l'ordre, puis pour finir, le fichier "Annexe" du livre est assemblé.
      à la fin de l'exécution de chaque module il est possible d'interrompre le
        programme par la validation de la ligne (retour chariot après #T) :
        #T exit -> sur deux lignes comme ci-après :
        #T
        exit
     
      l'extraction de la documentation peut se faire par la commande :
        mkd -Stw DOP annexer (D=Docu, O=organigramme, P=pour programmeurs)
     
    
    Organigramme
    mkd -nStw O annexer Bash_doc/annexer.O.doc
      47    analyse de la ligne de commandes :
      48      si le premier paramètre est le caractère ?
      50      alors :
      52        afficher la syntaxe et quitter.
      63      fin si
      66    inclure le fichier d'entête header.sh
      69   ## annexer ################
      71    initialiser les variables $Verbose et $Personal à 'false'
      80    si ne nombre de paramètres est supérieur à 1
      82    alors :
      84      si le deuxième paramètre est '-v'
      86      alors initialiser la variable $Verbose à 'true' (vrai).
      89      fin si
      91      si le deuxième paramètre est '-pb'
      93      alors initialiser la variable $Personalwb à 'true' (vrai).
      96      fin si
      98            si le deuxième paramètre est '-pc'
     100      alors initialiser la variable $Personalco à 'true' (vrai).
     103      fin s
     105    fin si
     108    si le nombre de paramètres est égal à 3
     110    alors :
     112      si le troisième paramètre est '-v'
     114      alors initialiser la variable $Verbose à 'true' (vrai).
     117      fin si
     119      si le troisième paramètre est '-pb'
     121      alors, si la variable $Personalco n'est pas à validée, initialiser la variable $Personalwb à 'true' (vrai).
     123      fin si
     126      si le troisième paramètre est '-pc'
     128      alors, si la variable $Personalwb n'est pas à validée, initialiser la variable $Personalco à 'true' (vrai).
     130      fin si
     132    fin si
     135    si le nombre de paramètres est supérieur à 3
     137    alors : signaler l'erreur et quitter.
     142    fin si
     156    afficher : 'effacer tous les fichiers obsolètes ? :'
     157      '*.html *.str *.img *.lnk tmp temp *.tmp *.temp *.list ?'
     161    attendre 'un' (un seul) caractère de réponse.
     165    si la réponse au clavier est 'o' (oui !),
     167    alors effacer les fichiers du répertoire de projet (nom du livre).
     173    sinon, continuer.
     175    fin si
     181    se placer dans le répertoire des commandes(~/Annexer/.)
     184    créer le fichier contenant la liste des articles à analyser. (./lister $1)
     185      si la variable $Verbose et validée (à 'true'),
     187      alors : exécuter la commande 'lister' en mode bavard.
     190      sinon : exécuter 'lister' en mode silencieux, les observation seront dans
     191        le fichier lister-cmd.txt 
     194      fin si
     199    si le code de retour est supérieur à 0
     201    alors afficher le nom du module de commande en erreur et quitter 'annexer'
     202      avec retour à 1
     206    fin si
     212    se placer dans le répertoire des commandes
     216      si le mode bavard est activé,
     218      alors: exécuter la commande 'télécharger' en mode bavard.
     221      sinon: exécuter la commande 'télécharger' en mode silencieux..
     224      fin si
     229    si le code de retour est supérieur à 0
     231    alors afficher le nom du module de commande en erreur et quitter 'annexer'
     232      avec retour à 1
     236    fin si
     242    se placer dans le répertoire des commandes
     245    créer la "page Annexe" et ajouter les sources, contributeurs, droits de
     246      copie du texte des articles.
     247      sclt signifie : s=source, c=contributeurs, l=license, t=texte des articles
     248    si le mode bavard est activé,
     250      alors : exécuter la commande 'ajouter_sclt' en mode bavard.
     253      sinon : exécuter la commande 'ajouter_sclt' en mode silencieux.
     256      fin si
     261    si le code de retour est supérieur à 0
     263    alors afficher le nom du module de commande en erreur et quitter 'annexer'
     264      avec retour à 1
     268    fin si
     274    se placer dans le répertoire des commandes
     277    si la variable $Personal est invalide 'false' 
     279    alors:
     281      exécuter ajouter_sclic 
     282        (ajouter les sources, licence, contributeurs des images avec la commande
     283        globale conventionnelle ajouter_sclic
     284      si le mode bavard est validé,
     286      alors : ajouter_sclic en mode bavard
     289      sinon : ajouter_sclic et copier les observations dans ajouter-sclic-cmd.txt
     292      fin si
     295    fin si
     300    si le code de retour est supérieur '0'
     302    alors afficher le nom du module de commande en erreur et quitter 'annexer'
     303      avec retour à 1
     307    fin si
     313    se placer dans le répertoire des commandes
     315    si l'option annexe' peronalisée est validée ($Personal=true)
     317    alors:
     319      exécuter ajouter_sclip 
     320        (ajouter les sources, licence, contributeurs des images avec la commande
     321        globale conventionnelle ajouter_sclic
     327      fin si
     330    fin si
     334    si le code de retour est différent de '0'
     336    alors afficher le nom du module de commande en erreur et quitter 'annexer'
     337      avec retour à 1
     341    fin si
     350    se placer dans le répertoire des commandes.
     352    si l'option de la commande annexe '-pc' (personalco) est activée à 'vrai'
     354      alors exécuter sclipco.inc
     358    fin si
     360    si le code de retour est différent de '0',
     362    alors afficher le nom du module de commande en erreur et quitter 'annexer'
     363      avec retour à 1
     367    fin si
     374    se placer dans le répertoire des commandes.
     376    si l'option de la commande annexe '-pb' (personalwb) est activée à 'vrai'
     378      alors exécuter sclipwb.inc
     382    fin si
     384    si le code de retour est différent de '0',
     386    alors afficher le nom du module de commande en erreur et quitter 'annexer'
     387      avec retour à 1
     391    fin si
     397    assembler la page 'Annexe' du livre.
     400      copier sclt dans la page 'Annexe' du livre.
     403    si la variable Personal est activée à 'true'
     405    alors : ajouter le contenu du fichier $1.sclip au fichier $1.annexe
     407    sinon :
     409      ajouter $1.sclic à l'annexe
     411    fin si
     414      ajouter la licence (fr) à la page 'Annexe'
    
    

    Tests unitaires du fichier de commandes annexer[modifier | modifier le wikicode]

    Faire un brouillon avec le micro-ordinateur sous linux (ou autre système acceptant les shells bash).

    1. Avec un micro-ordinateur doté d'un système d'exploitation unix ou linux.
    2. Copier le code du fichier annexer dans un éditeur de texte comme Notepadqq, Gedit, ou Bluefish.
    3. Créer le répertoire Annexer avec l'éditeur, ou, sous console : mkdir ~/Annexer
    4. Enregistrer le texte avec pour nom annexer dans le répertoire Annexer.
    5. Sous console, entrer dans le répertoire Annexer : cd ~/Annexer
    6. Copier le code de la commande header.sh dans ~/Annexer/.
    7. Rendre les commandes annexer et header.sh exécutables : chmod 777 annexer header.sh
    8. Pour tester, lancer la commande ./annexer LivreTest.
    9. Observer le répertoire LivreTest : ls -l ~/Annexer/LivreTest qui doit être vide.
    10. Copier et coller tous les codes des modules : header.sh, lister, télécharger, ajouter-sclt, ajouter_sclic, ajouter_sclip, dans le répertoire des commandes Annexer.
      exemple : code header.sh dans le fichier ~/Annexer/hearder.sh, etc.
    11. tous les fichiers shell doivent être éxécutables
      chmod 777 lister télécharger ajouter_sclt ajouter_sclic ajouter_sclip
    12. Éditer et copier le contenu de la page Contenus de la version imprimable, dans le répertoire de travail du projet, ~/Annexer/<nom du livre>/. avec pour nom <nom du livre>.contenu ou le contenu d'une page de compilation, avec pour nom <nom du livre>.compilé.
      ls -l ~/Annexer/<nom du livre> doit maintenant afficher un de ces deux fichiers.

    Note : Si, par exemple, vous lancez la commande ./annexer LivreTest ou ./header.sh LivreTest de n'importe répertoire, les répertoires ~/Annexer et ~/annexer/LivreTest seront automatiquement créés au bon endroit par l'entête header.sh. 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 shell bash sous windows, "mv ./annexer.sh ~/Annexer/annexer.sh"

    Annexe obtenue[modifier | modifier le wikicode]

    = Annexe =
    
    == Références ==
    <references />
     
    {{Nouvelle page imprimée}}
    == Contenus ==
    <small>
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest
    
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ArticleUn
    
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ArticleDeux
    
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ArticleTrois
    
    </small>
    === Source de cette édition ===
    <small>
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest
    </small>
     
    {{Nouvelle page imprimée}}
    == Sources licences et contributeurs des articles ==
    <small>Les ''sources'' listées pour chaque article fournissent des informations de licence plus détaillées, y compris le statut des droits d'auteurs, les détenteurs de ces droits et les conditions de licence.</small>
     
    <small><small>
    
    '''ArticleUn'''
    , ''source : ''https://fr.wikibooks.org/w/index.php?oldid=632571
    , ''licence : ''https://creativecommons.org/licenses/by-sa/3.0/
    , ''auteur(s) : ''Goelette Cardabela
    
    '''ArticleDeux'''
    , ''source : ''https://fr.wikibooks.org/w/index.php?oldid=632572
    , ''licence : ''https://creativecommons.org/licenses/by-sa/3.0/
    , ''auteur(s) : ''Goelette Cardabela
    
    '''ArticleTrois'''
    , ''source : ''https://fr.wikibooks.org/w/index.php?oldid=632573
    , ''licence : ''https://creativecommons.org/licenses/by-sa/3.0/
    , ''auteur(s) : ''Goelette Cardabela
    
    </small></small>
    {{Nouvelle page imprimée}}
    == Sources des images licences et contributeurs ==
    <small>Les ''sources'' listées pour chaque illustration fournissent des informations de licence plus détaillées, y compris le statut des droits d'auteurs, les détenteurs de ces droits et les conditions de licence.</small>
     
    <small><small>
    '''Illustration : '''Gabriel Garcia Marquez - Fresque.jpg
    , ''source : ''https://fr.wikibooks.org/w/index.php?title=File:Gabriel_Garcia_Marquez_-_Fresque.jpg
    , ''licence : ''CC BY-SA 4.0 
    , ''auteur(s) : ''User:Pohline_Blast_Clm
    
    '''Illustration : '''Commerce de communautés indigènes.JPG
    , ''source : ''https://fr.wikibooks.org/w/index.php?title=File:Commerce_de_communautés_indigènes.JPG
    , ''licence : ''CC BY-SA 3.0 
    , ''auteur(s) : ''User:Goelette.Cardabela
    
    '''Illustration : '''Fernando Botero (2018).jpg
    , ''source : ''https://fr.wikibooks.org/w/index.php?title=File:Fernando_Botero_(2018).jpg
    , ''licence : ''CC BY 3.0 
    , ''auteur(s) : ''-
    
    '''Illustration : '''Pano Plazo Botero.jpg
    , ''source : ''https://fr.wikibooks.org/w/index.php?title=File:Pano_Plazo_Botero.jpg
    , ''licence : ''Public domain
    , ''auteur(s) : ''User:Scabredon~commonswiki
    
    </small></small>
    {{Nouvelle page imprimée}}
    == Licence ==
    https://creativecommons.org/licenses/by-sa/3.0/
    
    {{Nouvelle page imprimée}}
    
    Impression visuelle de cette annexe[modifier | modifier le wikicode]

    Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/Annexe_bis

    Comparer avec la versions manuelle ou semi-automatique

    Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/Annexe

    Lister (module)[modifier | modifier le wikicode]

    (List)

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

    Documentation
      L'objet de cette commande est de créer le fichier de liste $Projet/$1.list
        avec le fichier "contenu" prioritaire, sinon avec le fichier "compilé"
        si il existe.
      Le 23 avril; créer la liste de projet $Projet/$1.prj a été jugée nécessaire
        pour que l'utilisation des boucles de commandes s'exécutent dans l'ordre
        de présentation des textes et des images afin de créer la page "Annexe"
        du livre (ou de la page).
     
      Si le fichier "<livre>.contenu" (copie de la page "Contenus" de la version
        imprimable) n'exite pas le programme teste la présence du fichier de
        compilation "<livre>.compilé", et si celui-ci n'est pas présent le
        programme se termine  avec un code de retour à 1.
      Lorsque le programme se termine normalement le code de retour est 0, le
        fichier examiné aura été protégé contre l'effacement, donc en lecture
        seule, et le fichier projet.list aura été créé.
      Le contenu des listes sont affichés pour être validés.
     
    
    Organigramme
     ## lister #################
      effacer tous les fichiers *.list,
      initialiser la variable de retour à 0
      créer le fichier de liste $Projet/$1.list avec le fichier "contenu" prioritaire, sinon avec le fichier "compilé" s'il existe.
      si le fichier LivreTest.contenu existe,
      alors :
         s'assurer que le fichier sera en lecture seule,
         créer la liste des articles de la page avec la page de Contenus du livre.
         créer le fichier de projet avec la page de Contenus du livre.
      sinon, si le fichier LivreTest.compilé existe,
      alors :
         s'assurer que le fichier sera en lecture seule,
         créer la liste avec la page compilée.
         créer le fichier de projet avec la page compilée
      sinon afficher les raisons de l'échec et recommander la marche à suivre.
      fin si
      afficher le code de retour de la commande.
      afficher les listes pour contrôle et retourner la valeur 0 si tout est correct.
    

    Exemple de page Contenus du livre en test LivreTest[modifier | modifier le wikicode]

    LivreTest.contenu
    ; Article maître du livre
    [[Utilisateur:Goelette Cardabela/Sandbox/LivreTest|LivreTest]]
    ; Contenus
    [[Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleUn|ArticleUn]]<br />
    [[Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleDeux|ArticleDeux]]<br />
    [[Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleTrois|ArticleTrois]]
    {{Autocat}}
    

    La page Contenus d'une version imprimable contient l'Article maître du livre OU la liste des articles qui composent le livre. Dans ces tests nous incluons les deux versions qui nous permettrons de distinguer des présentations différentes de la page Annexe du livre.

    Exemple de page du livre en test, LivreTest compilé[modifier | modifier le wikicode]

    LivreTest.compilé
    == LivreTest ==
    === Tests de référencement ===
    ; Article maître du livre
    :[[Utilisateur:Goelette Cardabela/Sandbox/LivreTest|LivreTest]]
    ; Contenus
    :[[Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleUn]]
    :[[Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleDeux]]
    :[[Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleTrois]]
    
    [[Catégorie:Compilations|LivreTest]]
    

    Nous faisons ici les mêmes remarques que pour la page Contenus de la version imprimable. La première ligne, qui est un lien vers la page principale n'existe pas, normalement, dans une version compilée. Si elle est présente dans de fichier, c'est pour la même raison de démonstration que précédemment: voir les différences de présentation de la page Annexe du livre.

    Exemple de listes obtenues pour le livre LivreTest[modifier | modifier le wikicode]

    LivreTest.list
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleUn
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleDeux
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleTrois
    
    LivreTest.prj
    LivreTest
    LivreTest/ArticleUn
    LivreTest/ArticleDeux
    LivreTest/ArticleTrois
    

    Tests du module lister[modifier | modifier le wikicode]

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

    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 notre attention[modifier | modifier le wikicode]

    La ligne 65 dans l'édition du 26 avril 2020 :
    Remarque : $Projet est un répertoire et $1.contenu est un fichier.

    cat $Projet/$1.contenu | sed "s/\[\[/$SitePrefix/g" | tr '|' '\n' | sed "s/\]\]//g" | grep "wiki" > $Projet/$1.list
    

    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 :

      ouvrir le flux du fichier '''''$Projet/$1.contenu'''''
    | filtrer et remplacer la chaîne "[[" par le préfixe du site $SitePréxixe (chaîne "https://fr.wikibooks.org/wiki/"),
    | filtrer et remplacer le caractère '|' par le caractère '\n' (retour-chariot),( si ce caractère '|' existe !),
    | filtrer et supprimer la chaîne "]]", (si cette chaîne exite !),
    | fitrer et ne retenir que la ligne qui contient la chaîne "wiki",
      > rediriger le flux vers la création du fichier '''''$Projet/$1.list'''''.

    La ligne 79 de la même édition :

    cat $Projet/$1.compilé | sed "s/:\[\[/$SitePrefix/g" | tr '|' '\n' | sed "s/\]\]//g" | grep "wiki" > $Projet/$1.list
    

    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.

    Tests de la commande[modifier | modifier le wikicode]
    1. Copier le code du chapitre Lister dans un éditeur et enregistrer ce code dans le répertoire Annexe sous le nom « lister » ou « lister.sh »
    2. Autoriser l'exécution du code par la commande chmod 777 ~/Annexe/lister
    3. Copier le « Contenus » de la Version imprimable vu précédemment dans ce sous chapitre,
    4. Enregistrer ce « Contenus » dans le fichier Annexe/LivreTest/LivreTest.contenus
    5. Lancer la commande ./lister LivreTest

    Vérifier que l'on obtient les fichier

    ~/Annexe/LivreTest/LivreTest.list :
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleUn
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleDeux
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleTrois

    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.

    ~/Annexe/LivreTest/LivreTest.prj :
    LivreTest
    LivreTest/ArticleUn
    LivreTest/ArticleDeux
    LivreTest/ArticleTrois
    

    Vérifier avec la commande : ~/Annexer$ ls -l ~/Annexer/LivreTest/LivreTest.contenu, que le fichier LivreTest.contenu est en lecture seule pour tous les utilisateurs : -r--r--r--.

    -r--r--r-- 1 gc gc 353 avril  3 16:57 /home/gc/Annexer/LivreTest/LivreTest.contenu
    

    Télécharger (module)[modifier | modifier le wikicode]

    (Download)
    Télécharger le code source de la page ou la sous page grâce à la liste obtenue dans la section lister.
    Documentation
     La commande ./télécharger <wikilivre> télécharge la page complète d'une
        "page" ou d'un "livre" de wikilivre. Elle crée les répertoires de travail
        avec la même hiérarchie que dans la page originale du livre, ou de sa
        version imprimable, ou de sa page de compilation.
     
      On procède par le téléchargement complet de la page et des sous-pages du
        livre. Viennent ensuite la création des répertoires de travail des pages
        qui composent le livre, puis on copie des pages html dans ces répertoires.
        Pendant tout ce processus des lichiers temporaires de liste sont créés en
        local:
        $Projet/$1.locale.list qui est une image locale de la structure du livre.
        $Projet/$1.mainPage. lien local vers l' "Article maître du livre"
        $Projet/$1.dirs : liste des sous-pages de l'article principal du livre.
        
    
    Organigramme
     ## télécharger ############
      télécharger dans le répertoire de travail, la structure complète du livre.
      Déplacer les pages html dans des sous-répertoires de travail pour documenter les pages et sous pages
        créer une liste locale vers les répertoires téléchargés $Projet/$1.locale.list
      Copier les fichiers html dans les répertoires respectifs.
        créer un fichier avec le nom de la page $Projet/$1.mainPage.
        initialiser la variable $mainPage
        créer un fichier des répertoires de travail à créer. 
        copier les pages et sous pages html dans les répertoires respectifs.
      quitter le programme d'essai et passer à la création de la page "Annexe" des articles.
    

    Test du module « télécharger »[modifier | modifier le wikicode]

    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 notre attention[modifier | modifier le wikicode]

    ligne48 de la version du 26 avril 2020

    wget -r -linf -k -p -E  -i $1.list -o wget-log.txt
    echo "----------"
    

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

     il est à noter que les lignes du fichier de liste $1.list sont des liens internet vers des pages html bien que l'extension .html ne termine pas la ligne. Cette remarque est très importante car le dernier champ de chaque ligne n'est pas un répertoire, contrairement aux champs précèdents qui peuvent y faire penser. On peut utiliser cette ligne comme une ligne de texte ordinaire. Il faudra s'en souvenir, car nous utilisons le caractère '/' comme séparateur de champ qui fait penser à des répertoires. Des commandes comme cd, cp, et toute commandes qui a un rapport avec les répertoires peuvent ne pas vouloir s'exécuter.
    Exemple
    lignes 80 à 96 de la version du 26avril 2020
    #O   copier les pages et sous pages html dans les répertoires respectifs.
          while read line
          do
            echo "$line".html | sed "s/https:\/\///g" | tr '\n' ' ' > source
            read Source < source
            echo "Source = $Source"
    
            echo "$line" | awk -F"/" '{ print $NF }'| tr '\n' '/' > destination 
            read dir < destination
            mkdir $dir
            echo "$line".html | awk -F"/" '{ print $NF }' >> destination
            read Destination < destination
            echo "Destination = $Destination"
            echo "Copier : cp ./$Source $Destination"
            cp -f "./$Source" "$Destination"
          done < $Projet/$1.list
          rm source ; rm destination
    
    ligne 4 : On ajoute .html à la variable $ligne puis on copie dans le fichier source local, toute la ligne en supprimant https://.
    ligne 5 : On affecte la variable Source le texte enregistré dans le fichier source
    ligne 6 : On affiche à la console le nom de la variable $Source :
    Exemple pour la première ligne : fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest.html
    ligne 8 : On copie le dernier champ de la ligne dans le fichier destination. C'est du texte !
    Exemple pour la première ligne : LivreTest
    ligne 10 : On en profite pour créer le répertoire correspondant à ce champ dans le répertoire courant.
    ~/Annexer/LivreTest est le répertoire racine du projet, ~/Annexer/LivreTest/LivreTest sera le répertoire de travail de la page principale.
    ligne 11 : On ajoute à ce dernier champ l'extension .html que l'on concatène au fichier destination. C'est une url !.
    ligne 15 : On copie les fichiers html du répertoire source (local) vers le répertoire de destination (local).
    On obtient finalement le lien ~/Annexer/LivreTest/LivreTest/LivreTest.html où la variable du projet $Projet est ~/Annexer/LivreTest.
    Il faudrait ajouter $Projet/ devant source et destination pour être certain de copier dans le répertoire de travail racine.
    Tests de la commande télécharger[modifier | modifier le wikicode]
       Copier le code du chapitre Télécharger dans un éditeur et enregistrer ce code dans le répertoire Annexe sous le nom « télécharger » ou « télécharger.sh »
       Autoriser l'exécution du code par la commande chmod 777 ~/Annexe/télécharger
       Lancer la commande ./télécharger LivreTest
    

    On devrait obtenir :

    Structure complète du téléchargement avec la commande wget -r -linf -k -p -E -i $1.list -o wget-log-télécharger.txt
    ~/Annexer$ ls -R LivreTest/fr.wikibooks.org
    
    LivreTest/fr.wikibooks.org:
    robots.txt  wiki
    
    LivreTest/fr.wikibooks.org/wiki:
    'Utilisateur:Goelette Cardabela'
    
    'LivreTest/fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela':
    Sandbox
    
    'LivreTest/fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox':
    LivreTest  LivreTest.html
    
    'LivreTest/fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest':
    ArticleDeux.html  ArticleTrois.html  ArticleUn.html
    
    Liste des répertoires créés avec la commande télécharger LivreTest.
    $ ls -a -1 ~/Annexer$/LivreTest
    

    .
    ..
    ArticleDeux
    ArticleTrois
    ArticleUn
    fr.wikibooks.org
    LivreTest

    LivreTest.compilé
    LivreTest.compilé.test
    LivreTest.contenu
    LivreTest.contenu.test
    LivreTest.dirs
    LivreTest.list
    LivreTest.locale.list
    LivreTest.mainPage
    LivreTest.prj
    wget-log-télécharger.txt

    Ajouter sclt (module)[modifier | modifier le wikicode]

    (Adding sclt) or (Append sclt)

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

    Documentation
       La commande ./ajouter-sclt <wikilivre> commence par créer la page
         $Projet/$1.sclt comme elle apparaîtra dans la première partie de la page
         "Annexe" du livre avec les titre en wikitexte et les sections :
         Références: toutes celles qui n'ont pas été affichées dans les pages.
         Contenus: liens établis vers la page du livre et les articles (sous-pages)
         Source de l'édition: lien vers la page qui a permis de créer l' "Annexe".
         Sources licences et contributeurs des articles: ne concerne que les
         articles, les sous-pages.
    Organigramme
      ## ajouter_sclt ###########
       but final: créer la page "Annexe" avec les pages Projet.sclt et Projet.scli.
       ---
       créer la page PageSclt=$Projet/$1.sclt et afficher son contenu.
       ajouter la balise <references />
       ajouter le lien vers : la page du livre imprimable, et vers les articles.
       créer la section 'Article', 'Source', 'licence', 'Contributeur(?)'
         ajouter le texte :
         Les ''sources'' listées pour chaque article fournissent des informations
         de licence plus détaillées, y compris le statut des droits d'auteurs, les
         détenteurs de ces droits et les conditions de licence.
       ou, valider l'un ou l'autre de ces textes : 
         Les textes sont disponibles avec leurs licences respectives, cependant
         d’autres termes peuvent s’appliquer.<br />
         Voyez les termes d’utilisation pour plus de détails :<br /> 
         https://wikimediafoundation.org/wiki/Conditions_d'utilisation
       Créer ou recréer le fichier de liste $Projet/$1.pj
       tant qu'il y a des lignes dans le fichier de liste,
          afficher la ligne lue,
          extraire et copier toutes les chaînes de caractères du fichier html
            $ligne.html dans le fichier $ligne.str et les dupliquer à l'écran
          créer les fichiers de documentation des pages :
          article,
          source,
          auteur(s).

    Tests du module ajouter_sclt[modifier | modifier le wikicode]

    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 notre attention[modifier | modifier le wikicode]

    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 117-119 de la version du 29 avril 2020

    #O    extraire et copier toutes les chaînes de caractères du fichier html
    #O      $ligne.html dans le fichier $ligne.str et les dupliquer à l'écran
          mkd -pws '**' $Projet/$ligne/$ligne.html $Projet/$ligne/$ligne.tmp | tr ',' '\n' > $Projet/$ligne/$ligne.str
    

    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 124-130

    #O    article,
          if [ $ligne != $1 ]
          then  
            echo ""$ligne"" >> $PageSclt
          fi
          echo ""$ligne"" > $Projet/$ligne/$ligne.article
          cat $Projet/$ligne/$ligne.article
    

    $ligne est la variable lue ligne par ligne du fichier de liste projet.pj 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é. Si $ligne n'est pas le nom du livre (de l'article principal) le nom de l'article est ajouté à la page $PageSclt.

    Lignes 132-139

    #O    source,
          echo -n ", source : https://"$Site"/w/index.php?oldid=" > $Projet/$ligne/$ligne.RevisionId
          cat $Projet/$ligne/$ligne.str | grep -n -m 1 -i -e wgRevisionId | tr -d ':' | sed "s/\"/%/g" | cut -d'%' -f3 >> $Projet/$ligne/$ligne.RevisionId
          if [ $ligne != $1 ]
          then          
            cat $Projet/$ligne/$ligne.RevisionId  >> $PageSclt
          fi
          cat $Projet/$ligne/$ligne.RevisionId
          
    

    La deuxième ligne crée le fichier de .RevisionId dans lequel on écrit une chaîne de caractères sans retour à la ligne.
    La troisième ligne :

      cat ouvre le flux du fichier projet.str
    | retient la ligne qui contient wgRevisionId,
    | supprime le caractère ':' qu'il contient
    | remplace les caractères '"' par le caractère '%'
    | coupe la chaîne à l'endroit où se trouvent les caractères '%' et sélectionne le champ 3.
    >> la chaîne résultante est ajoutée au fichier projet.RevisionId
    

    Lignes 152-164

    1 #O    license :
    2      echo -n ", licence : " > $Projet/$ligne/$ligne.license
    3   #T cat $Projet/$ligne/$ligne.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f4 >> $Projet/$ligne/$ligne.license
    4      cat $Projet/$ligne/$ligne.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | tr '"' '%' | cut -d'%' -f4 >> $Projet/$ligne/$ligne.license
    5   #T cat $Projet/$ligne/$ligne.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f2 | sed "s/\/\//https:\/\//g" >> $Projet/$ligne/$ligne.license
    6      if [ $ligne != $1 ]
    7      then  
    8        cat $Projet/$ligne/$ligne.license >> $PageSclt
    9      fi
    10      cat $Projet/$ligne/$ligne.license
    11      #
    12      #P spécial pour bas de page fr ## 
    13      cat $Projet/$ligne/$ligne.str | grep -n -m 1 -i -e footer-info-copyright | sed "s/\"\//%\//g" | tr '"' '%' | cut -d'%' -f4  > $Projet/$ligne/$ligne.licence
    
    • La ligne 2 initialise dans le répertoire $Projet/$ligne/, le fichier $ligne.license de l'article $ligne.
    exemple : le répertoire de l'ArticleUn est ~/Annexer/LivreTest/ArticleUn/ dans lequel on va écrire ArticleUn.license
    
    • Les lignes 3 et 5 sont des commentaires de tests à l'usage des programmeurs.
    • La ligne 4 produit les fichier .license dans le répertoire de l'article correspondant.
    • La ligne 5 :
      cat ouvre le flux du fichier projet.str,
    | retient la ligne qui contient license,
    | sélectionne la chaîne "/ et la remplace par la chaîne %/,
    | supprime '%' et coupe la chaîne au caractère '%' puis sélectionne le deuxième tronçon (-f2), il existe aussi (-f2-3, -f2-4) etc.
    | remplacer les caractères // par https://
    >> copier la chaîne dans le fichier projet.license
    
    • Les lignes 6 à 9 ajoutent la license à $PageSclt si la license concerne un article et non la page principale du livre.
    • La ligne 10 affiche à l'écran le contenu du fichier qui vient d'être créé.
    • La ligne 13 : mêmes remarques que précédemment par sélection du bas de page en français avec licence.

    Lignes 155-159

    #O    auteur(s).  
          echo -n ", auteur(s) : " > $Projet/$ligne/$ligne.auteur
          cat $Projet/$ligne/$ligne.str | grep -n -m 1 -i -e wgRelevantUserName | sed "s/\"/%/g" | cut -d'%' -f4 >> $Projet/$ligne/$ligne.auteur
          if [ $ligne != $1 ]
          then  
            cat $Projet/$ligne/$ligne.auteur >> $PageSclt
          fi
          cat $Projet/$ligne/$ligne.auteur     
    
    • mêmes remarques que pour les actions précédentes.
    Tests de la commande[modifier | modifier le wikicode]
    fichier obtenu avec la commande ~/Annexer/ajouter_sclt LivreTest
    cat LivreTest.sclt dans le répertoire du projet LivreTest
    
    
    = Annexe =
    
    == Références ==
    <references />
     
    {{Nouvelle page imprimée}}
    == Contenus ==
    <small>
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest
    
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ArticleUn
    
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ArticleDeux
    
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ArticleTrois
    
    </small>
    === Source de cette édition ===
    <small>
    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest
    </small>
     
    {{Nouvelle page imprimée}}
    == Sources licences et contributeurs des articles ==
    
    Les ''sources'' listées pour chaque article fournissent des informations de licence plus détaillées, y compris le statut des droits d'auteurs, les détenteurs de ces droits et les conditions de licence.
     
    <small><small>
    
    '''ArticleUn'''
    , ''source : ''https://fr.wikibooks.org/w/index.php?oldid=632571
    , ''licence : ''https://creativecommons.org/licenses/by-sa/3.0/
    , ''auteur(s) : ''Goelette Cardabela
    
    '''ArticleDeux'''
    , ''source : ''https://fr.wikibooks.org/w/index.php?oldid=632572
    , ''licence : ''https://creativecommons.org/licenses/by-sa/3.0/
    , ''auteur(s) : ''Goelette Cardabela
    
    '''ArticleTrois'''
    , ''source : ''https://fr.wikibooks.org/w/index.php?oldid=632573
    , ''licence : ''https://creativecommons.org/licenses/by-sa/3.0/
    , ''auteur(s) : ''Goelette Cardabela
    
    </small></small>
    {{Nouvelle page imprimée}}
    
    Apparence provisoire un peu arrangée pour ne pas intervenir sur l'index des sections de cet article ...

    Annexe

    Références


    Contenus

    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest

    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ArticleUn

    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ArticleDeux

    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ArticleTrois

    Source de cette édition

    https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest

    Sources licences et contributeurs des articles

    Les sources listées pour chaque article fournissent des informations de licence plus détaillées, y compris le statut des droits d'auteurs, les détenteurs de ces droits et les conditions de licence.

    ArticleUn , source : https://fr.wikibooks.org/w/index.php?oldid=632571 , licence : https://creativecommons.org/licenses/by-sa/3.0/ , auteur(s) : Goelette Cardabela

    ArticleDeux , source : https://fr.wikibooks.org/w/index.php?oldid=632572 , licence : https://creativecommons.org/licenses/by-sa/3.0/ , auteur(s) : Goelette Cardabela

    ArticleTrois , source : https://fr.wikibooks.org/w/index.php?oldid=632573 , licence : https://creativecommons.org/licenses/by-sa/3.0/ , auteur(s) : Goelette Cardabela


    Fait à environ 50 % Ajouter scli (trois modules indépendants)[modifier | modifier le wikicode]

    (Adding scli) or (Append scli)

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

    Les fichier de commandes scli[modifier | modifier le wikicode]

    On peut concevoir deux façon ce référencer les images
    • La version globale : on extrait les images de la page principale.
    Illustration 1 Source : ..., Licence : ..., Contributeur : ...
    Illustration 2 Source : ..., Licence : ..., Contributeur : ...
    Illustration 3 Source : ..., Licence : ..., Contributeur : ...
    Illustration 4 Source : ..., Licence : ..., Contributeur : ...
    
    
    • La version par article : les images sont extraites de chaque article, ce qui donne :
    Article 1 :
    Illustration 1.0 Source : ..., Licence : ..., Contributeur : ...
    Illustration 1.n Source : ..., Licence : ..., Contributeur : ...
    
    Article 2 :
    Illustration 2.0 Source : ..., Licence : ..., Contributeur : ...
    Illustration 2.n Source : ..., Licence : ..., Contributeur : ...
    
    
    Une version complète existe Version classique sclic (module)[modifier | modifier le wikicode]
    Documentation programmeur
      ## ajouter_sclic ##########
       Remarques :
       à ce stade, Les fichiers $1.list, $1.prj, $1.pj, $1.sclt, $.mainPage sont
         cencés préexister dans le répertoire racine du projet $1.
       De même, les fichiers <Article>.str sont sensés préexister dans les
         répertoires <Article> correspondants.
       seront créés :
       dans le rétoire de travail racine ~/Annexe/$1/. : le fichier $1.sclic qui
         vient compléter le fichier $1.sclt afin de créerle fichier "Annexe",
       dans le sous-répertoire de travail ~/Annexe/$1/$1/. :
         $1.files, $1.pict, $1.illustrations, $1.links, html.list et
         les fichiers d'images .title, .source, .license, .auteur.
    
    Organigramme programmeur
       inclure le fichier d'entête header.sh
      ## ajouter_scli_classique ###########
         ligne de commande "ajouter_sclic <livre>" où "livre" = variable $1
       PageScliC sera la variable d'identifiation du fichier "livre.sclic" placé
          dans le répertoire" de travail du projet : $Projet = ~/Annexe/$1/.
       se placer dans le sous-répertoire de travail "$Projet/$1/"
         rappel : $Projet = ~/Annexer/$1 d'où ss-rep = ~/Annexer/$1/$1/.
       créer la section 'Image', 'Source', 'licence', 'Contributeur(?)'
         ajouter le texte : style PediaPress ou personnalisé.; Organigramme 
       inclure le fichier d'entête header.sh
      ## ajouter_scli_classique ###########
         ligne de commande "ajouter_sclic <livre>" où "livre" = variable $1
       PageScliC sera la variable d'identifiation du fichier "livre.sclic" placé
          dans le répertoire" de travail du projet : $Projet = ~/Annexe/$1/.
       se placer dans le sous-répertoire de travail "$Projet/$1/"
         rappel : $Projet = ~/Annexer/$1 d'où ss-rep = ~/Annexer/$1/$1/.
       créer la section 'Image', 'Source', 'licence', 'Contributeur(?)'
         ajouter le texte : style PediaPress ou personnalisé.
         style PediaPress :
         Les ''sources'' listées pour chaque article fournissent des informations
         de licence plus détaillées, y compris le statut des droits d'auteurs, les
         détenteurs de ces droits et les conditions de licence.
         ou: (imprimer l'un ou l'autre de ces textes)
         style personnalisé :
         Les textes sont disponibles avec leurs licences respectives, cependant
         d’autres termes peuvent s’appliquer.<br />
         Voyez les termes d’utilisation pour plus de détails :<br /> 
         https://wikimediafoundation.org/wiki/Conditions_d'utilisation
       créer les fichiers de documentation des images de la page principale.
         ouvrir le flux $Projet/$1/$1.str de la page principale et sélectionner les
         chaînes de caractères contenant fichier:, file:, image:, dans le nouveau
         fichier $Projet/$1/$1.files
       télécharger les fichiers d'images depuis le serveur wikimedia.
       initialiser le fichier de liste html.list avec un texte vide.
       lister les fichiers d'images dans l'ordre d'impression ou de l'affichage,
         à laide de la liste $1.links.
       créer les fichiers de documentation des pages :
       tant qu'il y a des liens (locaux) dans le fichier d'images html.list
         afficher la ligne lue,
         sélectionner les chaînes du fichier d'image et les transférer dans 
           images,
           sources,
           licence,
           auteur(s).
         terminer la page $PageScliC
       fin du tant qu'il y a des lignes
       terminer la page $PageScliC
    
    Programme des tests du module ajouter_sclic[modifier | modifier le wikicode]
    Les lignes qui méritent notre attention[modifier | modifier le wikicode]
    Tests de la commande ajouter_sclic[modifier | modifier le wikicode]
    Fichiers obtenus avec la commande ~/Annexer/ajouter_sclic LivreTest[modifier | modifier le wikicode]
    contenu du fichier /home/jpl/Annexer/LivreTest/LivreTest.pj
    https://commons.wikimedia.org/wiki/File:Commerce_de_communautés_indigènes.JPG
    https://commons.wikimedia.org/wiki/File:Fernando_Botero_(2018).jpg
    https://commons.wikimedia.org/wiki/File:Gabriel_Garcia_Marquez_-_Fresque.jpg
    https://commons.wikimedia.org/wiki/File:Pano_Plazo_Botero.jpg
    
    
    fichier LivreTest.sclic
     == Sources des images licences et contributeurs ==
    <small>Les ''sources'' listées pour chaque illustration fournissent des informations de licence plus détaillées, y compris le statut des droits d'auteurs, les détenteurs de ces droits et les conditions de licence.</small>
     
    <small><small>
    '''Illustration : '''Gabriel Garcia Marquez - Fresque.jpg
    , ''source : ''https://fr.wikibooks.org/w/index.php?title=File:Gabriel_Garcia_Marquez_-_Fresque.jpg
    , ''licence : ''CC BY-SA 4.0 
    , ''auteur(s) : ''User:Pohline_Blast_Clm
    
    '''Illustration : '''Commerce de communautés indigènes.JPG
    , ''source : ''https://fr.wikibooks.org/w/index.php?title=File:Commerce_de_communautés_indigènes.JPG
    , ''licence : ''CC BY-SA 3.0 
    , ''auteur(s) : ''User:Goelette.Cardabela
    
    '''Illustration : '''Fernando Botero (2018).jpg
    , ''source : ''https://fr.wikibooks.org/w/index.php?title=File:Fernando_Botero_(2018).jpg
    , ''licence : ''CC BY 3.0 
    , ''auteur(s) : ''-
    
    '''Illustration : '''Pano Plazo Botero.jpg
    , ''source : ''https://fr.wikibooks.org/w/index.php?title=File:Pano_Plazo_Botero.jpg
    , ''licence : ''Public domain
    , ''auteur(s) : ''User:Scabredon~commonswiki
    
    </small></small>
    {{Nouvelle page imprimée}}
    
    Ébauche Version personnalisée par article sclip (module)[modifier | modifier le wikicode]

    Cette commande est composée de trois parties :

    1. Le module principal. Il prépare l'entête de la section Images, source, licence, auteur puis exécute l'un ou l'autre des modules de récupération des images.
    2. Le module de récupération des images de Commons dans le sous-répertoire de la page du livre.
    3. Le module de récupération des images sur le site Wikilivres.

    Chacun de ces modules peut être éprouvé séparément.

    Il n'est pas envisagé de détailler l'explication des lignes de codes, on peut considérer que la compréhension des codes de commandes bash est suffisamment assimilée à ce niveau de la programmation.
    Les explications éventuelles se trouvent au sein du code de programmation.

    Une version complète existe Entête ajouter_sclip[modifier | modifier le wikicode]
    Ce module est devenu l'entête des modules sclipco.inc et sclipwb.inc pour faciliter l'écriture de la page principale Annexer, il peut être éprouvé séparément comme tous les modules de ce programme.
    Documentation
      1. ajouter_sclic ##########
      Le répertoire de travail est le sous répertoire du projet $Projet/$1/$1
        plus précisément : ~/Annexer/<nom du livre>/<nom du livre>
        <nom du livre> pourrait être la sous-page 'Version imprimable' du livre
        et peut être considéré comme un 'Article'.
    
    Remarques :
      à ce stade, Les fichiers $1.list, $1.prj, $1.pj, $1.sclt, $.mainPage sont  
      censés préexister dans le répertoire racine du projet $1 (nom du livre).
      De même, les fichiers <Article>.str sont sensés préexister dans les
      répertoires <Article> correspondants.
    Seront créés :
      * Dans le répertoire de travail racine ~/Annexe/$1/. :
        le fichier $1.sclic qui vient compléter le fichier $1.sclt afin de créer
        le fichier "Annexe",
      * dans le sous-répertoire de travail ~/Annexe/$1/$1/. :
        $1.files, $1.pict, $1.illustrations, $1.links, html.list et
        les fichiers d'images .str .title, .source, .license, .auteur.
    
      1. ajouter_sclip ##########
    Ce module est l'entête des programmes sclipco.inc et sclipwb.inc du
      programme Annexer :
      Si une des options -pc ou -pb de la ligne de commande 'annexer <livre>'
      est validée, le module ajouter_sclip est exécuté puis un des modules
      sclipco ou sclipwb est exécutés selon l'option choisie -pc ou -pb.
      (-pc pour images sur 'Commons', -pb pour images sur 'Wikilivres'.)
    Structure, organisation des fichiers :
    Les répertoires de travail sont les répertoires des 'Articles'.
    Le fichier $Projet/$ligne/$ligne.str a été créé avec la commande
      ajouter_sclt
    Remarques :
    1.les images extraites avec le fichier de commandes ajouter_sclic peuvent
      être copiées dans les répertoires des articles correspondants lorsqu'ils
      sont identifiés dans leurs répertoires respectifs pour créer une option
      d'images téléchargées de 'Commons'.
    2.le fichier de conversions url/html vers utf8 a été inclus dans l'entête
      header.sh depuis le 13 mai 2020
    
    Documentation programmeur
    2:#P Nom du fichier de commandes : ajouter_sclip
    3:#P Syntaxe : "ajouter_scltp <nom du livre>"
    4:#P Exemple : "./ajouter_sclp LivreTest" à la console.
    5:#P Date de création :  9 mai 2020
    6:#P Modifié le : 15 mai 2020 par GC pour ajouter une version d'images depuis
    7:#P   wilimedia commons
    8:#P Modifié le : 16 mai 2020 par GC pour séparer les fichier en trois parties
    9:#P   Partie 1 : entête des deux versions de téléchargement, 'ajouter_sclip'.
    10:#P   Partie 2 : fichier de téléchargement des images sur wikibooks, sclipwb.inc
    11:#P   Partie 3 : fichier de téléchargement des images sur coomons, sclipco.inc
    12:#P Version sur WikiLivres le : 17 mai 2020
    13:#P
    14:#P LES FICHIERS DE COMMANDES 
    15:#P
    16:#P## header.sh ##############
    17:#P header.sh, a créé le répertoire des commandes si celui-ci ne préexistait pas
    18:#P   il a vérifié la validité ou invalidé de ligne de commande, initialisé
    19:#P   les variables $Projet, $Site, $SitePrefix, vérifié l'existence des
    20:#P   fichiers de liste "$Projet/$1".list et "$Projet/$1".prj, puis affiché le
    21:#P   contenu du répertoire de travail.
    22:#P
    23:#P## lister #################
    24:#P lister a créé le fichier de liste $Projet/$1.list par l'extraction du 
    25:#P   fichier $Projet/$1.contenu, copie de la page "Contenus" de la version
    26:#P   imprimable du livre, ou du fichier $Projet/$1.compilé issu d'une
    27:#P   compilation destinée à la publication par PediaPress.
    28:#P   il crée aussi le fichier $Projet/$1.prj qui conserve l'ordre d'affichage
    29:#P   de la publication.
    30:#P
    31:#P## télécharger ############
    32:#P la commande aura téléchargé toutes les pages du livre et aura copié les
    33:#P   pages html dans des répertoires qui leurs sont dédiés pour y extraire
    34:#P   toute la documentation nécessaire à la création de la page "Annexe", et
    35:#w      à ce stade, pour les tests avec LivreTest; on dispose des répertoires
    36:#w      de travail : LivreTest, ArticleUn, ArticleDeux, ArticleTrois.
    37:#P   qui contiennent chacun le fichier html de la page ou de l'article qui le
    38:#P   concerne.
    39:#P   L'ensemble des commandes aura créé les fichiers de listes :
    40:#P   $Projet/$1.dirs, $Projet/$1.list, $Projet/$1.mainPage, $Projet/$1.prj
    41:#P
    42:#P## ajouter_sclt ###########
    43:#P La commande ./ajouter-sclt <wikilivre> commence par créer la page
    44:#P   $Projet/$1.sclt comme elle apparaîtra dans la première partie de la page
    45:#P   "Annexe" du livre, avec les titres et les sections en wikitexte :
    46:#P   * Références: toutes celles qui n'ont pas été affichées dans les pages.
    47:#P   * Contenus: liens établis vers la page du livre et les articles.
    48:#P     (les sous-pages).
    49:#P   * Source de l'édition: lien vers la page qui a permis de créer l'Annexe.
    50:#P   * Sources licences et contributeurs des articles: ne concerne que les
    51:#P     articles, les sous-pages.
    52:#P
    53:#D## ajouter_sclic ##########
    54:#D Le répertoire de travail est le sous répertoire du projet $Projet/$1/$1
    55:#D   plus précisément : ~/Annexer/<nom du livre>/<nom du livre>
    56:#D   <nom du livre> pourrait être la sous-page 'Version imprimable' du livre
    57:#D   et peut être considéré comme un 'Article'.
    58:#D Remarques :
    59:#D   à ce stade, Les fichiers $1.list, $1.prj, $1.pj, $1.sclt, $.mainPage sont  
    60:#D   censés préexister dans le répertoire racine du projet $1 (nom du livre).
    61:#D De même, les fichiers <Article>.str sont sensés préexister dans les
    62:#D   répertoires <Article> correspondants.
    63:#D Seront créés :
    64:#D   * Dans le répertoire de travail racine ~/Annexe/$1/. :
    65:#D     le fichier $1.sclic qui vient compléter le fichier $1.sclt afin de créer
    66:#D     le fichier "Annexe",
    67:#D   * dans le sous-répertoire de travail ~/Annexe/$1/$1/. :
    68:#D     $1.files, $1.pict, $1.illustrations, $1.links, html.list et
    69:#D     les fichiers d'images .str .title, .source, .license, .auteur.
    70:#D
    71:#D## ajouter_sclip ##########
    72:#D Ce module est l'entête des programmes sclipco.inc et sclipwb.inc du
    73:#D   programme Annexer :
    74:#D   Si une des options -pc ou -pb de la ligne de commande 'annexer <livre>'
    75:#D   est validée, le module ajouter_sclip est exécuté puis un des modules
    76:#D   sclipco ou sclipwb est exécutés selon l'option choisie -pc ou -pb.
    77:#D   (-pc pour images sur 'Commons', -pb pour images sur 'Wikilivres'.)
    78:#D Structure, organisation des fichiers :
    79:#D Les répertoires de travail sont les répertoires des 'Articles'.
    80:#D Le fichier $Projet/$ligne/$ligne.str a été créé avec la commande
    81:#D   ajouter_sclt
    82:#D Remarques :
    83:#D 1.les images extraites avec le fichier de commandes ajouter_sclic peuvent
    84:#D   être copiées dans les répertoires des articles correspondants lorsqu'ils
    85:#D   sont identifiés dans leurs répertoires respectifs pour créer une option
    86:#D   d'images téléchargées de 'Commons'.
    87:#D 2.le fichier de conversions url/html vers utf8 a été inclus dans l'entête
    88:#D   header.sh depuis le 13 mai 2020
    89:#D
    90:#P Générer la documentation de cette page :
    93:#P Générer la documentation programmeur :
    96:#P Générer l'organigramme de cette commande :
    99:#P
    
    Organigramme
    101:#O inclure le fichier d'entête header.sh
    104:#O## ajouter_scli_p (personnalisé) ############
    106:#O   ligne de commande "ajouter_sclip <livre>" où "livre" = variable $1
    108:#O PageScliP sera la variable d'identifiation du fichier "livre.sclip" placé
    109:#O    dans le répertoire" de travail du projet : $Projet = ~/Annexe/$1/.
    114:#O créer la section 'Image', 'Source', 'licence', 'Contributeur(?)'
    116:#O   ajouter le texte : style PediaPress ou personnalisé.
    117:#O   style PediaPress :
    118:#O   Les ''sources'' listées pour chaque article fournissent des informations
    119:#O   de licence plus détaillées, y compris le statut des droits d'auteurs, les
    120:#O   détenteurs de ces droits et les conditions de licence.
    122:#O   ou: (imprimer l'un ou l'autre de ces textes)
    123:#O   style personnalisé :
    124:#O   Les textes sont disponibles avec leurs licences respectives, cependant
    125:#O   d’autres termes peuvent s’appliquer.<br />
    126:#O   Voyez les termes d’utilisation pour plus de détails :<br /> 
    127:#O   https://wikimediafoundation.org/wiki/Conditions_d'utilisation
    
    Fait à environ 50 % Module sclipco.inc[modifier | modifier le wikicode]
    Une version complète existe Modude sclipwb.inc[modifier | modifier le wikicode]

    Comparaison des annexes obtenues pour la page LivreTest[modifier | modifier le wikicode]

    Annexe classique avec sclic[modifier | modifier le wikicode]
    Annexe classique de LivreTest avec sclic
    Cette présentation peut être utile pour une extension d' Index, Table des matières et numérotation des pages avec OpenOffice.

    Éditer cette annexe.

    Annexe personnalisée avec le téléchargement sur le serveur Commons[modifier | modifier le wikicode]
    Annexe pesonnalisée de LivreTest avec sclipco.inc
    Cette présentation simple permet de repérer les illustrations en fonction des chapitres, sans numérotation des pages.

    Éditer cette annexe.

    Annexe personnalisée avec le téléchargement sur le serveur Wikilivres[modifier | modifier le wikicode]
    Annexe pesonnalisée de LivreTest avec sclipwb.inc
    Cette présentation simple permet de repérer les illustrations en fonction des chapitres, sans numérotation des pages. On notera la différence avec la version Commons pour la résolution du nom d'auteur de l'image.

    Éditer cette annexe.

    Comparaison avec l'annexe manuelle ou semi-manuelle[modifier | modifier le wikicode]

    Visualiser l' Annexe manuelle ou semi-manuelle de LivreTest, produite avec des cannevas.

    Éditer cette version manuelle.

    Tests unitaires et d'intégration[modifier | modifier le wikicode]

    Les fichiers de commandes shell peuvent être éprouvés successivement, sous linux ou sous d'autres systèmes d'exploitation acceptant les commandes shell bash : Windows 10[1][2], MinGw, Cygwin, ....

    Pour effectuer ces tests il faut se placer dans le répertoire utilisateur et créer un répertoire qui regroupe les fichiers de commandes. Dans les exemples présentés : mkdir ~/Annexer

    Les fichiers de commandes :
    header.sh, annexer, lister, télécharger, ajouter-sclt, ajouter-sclic, ajouter-sclip, sont prévus pour être placés dans ce répertoire des commandes ~/Annexer. Le fichier header.sh est non seulement un fichier de commandes, il est aussi un fichier d'entête pour tous les modules en tests unitaires.

    Les commandes peuvent être éprouvées avec tous les livres disponibles. Pour les essais de ces versions en tests, nous avons utilisé le livre « LivreTest ».

    La commande « annexer » permet le test d'intégration de tous les modules avec des points d'arrêt possibles après chaque module testé.

    Rendez-vous dans le chapitre Annexer pour effectuer ces test et/ou avoir plus d'informations.

    Copier et installer les fichiers de l'application et des tests[modifier | modifier le wikicode]

    Ces versions, mises à jour, peuvent être différentes des premières versions exposées dans les chapitres de cet article.

    Éditer la page originale[3]

    codes de l'application en français avec les manuels[modifier | modifier le wikicode]

    Ce projet est bien avancé, il est à utiliser avec indulgence.
    Dans cette version, les images téléversées sur wiki-Commons sans passer par wikibooks ne sont pas reconnues.
    Votre contribution est souhaitée. Vous pouvez rédiger vos remarques et vos recommandations dans la page Discussion.
    Il est possible de télécharger cette application expérimentale à but éducatif à l'adresse ci-dessous
    Annexer-fr_200701.zip Copies des articles avec le lien ci-dessous.
    md5sum : c4825faa84eef1514d72edb0bd7b394e Annexer-fr_200701.zip.
    Les droits de copies et de partages sont ceux des articles de wikilivres téléchargés.
    Le serveur est situé dans la vallée de la Vésubie et peut être en dérangement suite à la tempête Alex et aux orages.

    Les codes suivants sont utilisables pour les tests de la façon suivante :
    1 . Copier le contenu de la page du premier module header.inc.sh dans un éditeur de texte comme Notepadqq,
    ---> l'enregistrer sous le nom header.inc dans le répertoire des tests ~/Annexer que vous aurez créé.
    2 . Ouvrir un terminal. Dans le répertoire 'Annexer', modifier le mode de lecture-écriture-exécution
         du fichier header.inc de la façon suivante : chmod 755 header.inc
    3 . Exécuter le module sans paramètre : ./header.inc puis avec le paramètre LivreTest: ./header.inc LivreTest
    4 . Éditer la page LivreTest.contenu, copier la partie éditée et l'enregistrer sous le nom LivreTest.contenu
         dans le répertoire Annexer/LivreTest qui vient d'être créé par l'exécution de ./header.inc LivreTest.
    5 . Copier, le module lister.sh et l'enregitrer sous le nom lister dont il faudra changer le mode en exécutable et l'éprouver.
          Observer à chaque fois les modifications du répertoire Annexer/LivreTest.
    6 . ... et ainsi-de-suite. Le dernier fichier à créer est le fichier d'exécution globale annexer.
    7 . Annexes que l'on doit obtenir : Annexe globale - Annexe personnalisée wb - Annexe personnalisée co.

    Annexe obtenue avec la version 200623 de l'application Faire_fleurir_le_sel/Annexe
    Les fichiers suivants doivent être installés dans le répertoire ~Annexer/src puis installés avec l'installateur.

    Auto-éditer_un_wikilivre/Auto-référencer/header.inc.sh Fichier d'entête inclus dans tous les modules. Version 200623

    Auto-éditer_un_wikilivre/Auto-référencer/lister.sh Crée les fichiers de listes pour les modules suivants. Version 200701

    Auto-éditer_un_wikilivre/Auto-référencer/télécharger.sh Télécharge les pages de Wikilivres selon les listes générées. Version 200623

    Auto-éditer_un_wikilivre/Auto-référencer/ajouter_sclt.sh Ajoute l'entête pour les textes et les articles de l'Annexe. Version 200623

    Auto-éditer_un_wikilivre/Auto-référencer/ajouter_sclic.sh Ajoute l'entête globale pour les images et illustration, etc. Version 200623''

    Auto-éditer_un_wikilivre/Auto-référencer/ajouter_sclip.inc.sh Ajoute les textes des conditions de copie des images. Version 200623

    Auto-éditer_un_wikilivre/Auto-référencer/sclipwb.sh Ajoute, par article, les liens vers les images selon Wikilivres. Version 200623

    Auto-éditer_un_wikilivre/Auto-référencer/sclipco.sh Ajoute, par article, les liens vers les images selon Commons. Version 200623

    ↑ Ce module sclipco.sh utilise des données produites par le module sclipwb sclipco.sh est à réviser. Avis du 30 juillet 2020.

    Auto-éditer_un_wikilivre/Auto-référencer/annexer.sh Commande globale. Version 200626

    Auto-éditer_un_wikilivre/Auto-référencer/md5sum_src-orig Somme de contrôle des fichiers depuis la Version 200623


    Auto-éditer_un_wikilivre/Auto-référencer/cp-localsrc-2-localbin . Version 200623

    ↑ L'Installateur ci-dessus installe les fichiers de commandes dans le répertoire d'exécution ~/Annexer,
    il doit d'être installé en mode exécutable dans le répertoire des sources ~/Annexer/src.
    Les fichiers suivants doivent être installés dans le répertoire ~Annexer/man puis installés avec makeman_annexer.sh

    Auto-éditer_un_wikilivre/Auto-référencer/annexer_fr.1 Fichier nroff avec un aperçu, pour l'installation du manuel français version 200626

    Auto-éditer_un_wikilivre/Auto-référencer/annexer_fr.html Fichier html avec un aperçu, pour l'installation du manuel français version 200626

    Auto-éditer_un_wikilivre/Auto-référencer/makeman_annexer.sh Cet exécutable installe le manuel unix/linux en français.


    INSTALLER.sh

    Cette commande télécharge tous les fichiers de commandes et installe l'application dans les répertoires du PC.

    Syntaxe
    INSTALLER.sh [ liste | pour moi | pour tous | pour admin ]
    Exemples dans le répertoire d installation : ~/tmp
    -> exemple ./INSTALLER.sh annexer.list, pour télécharger les articles depuis wikilivres.
    -> exemple ./INSTALLER.sh pour moi, pour copier les codes dans ~/Annexer.
    -> exemple ./INSTALLER.sh pour tous, pour copier les codes exécutables dans /usr/local/bin.
    -> exemple ./INSTALLER.sh pour admin, pour copier les codes exécutables dans /usr/local/sbin.

    Attention : la commande suivante fonctionne, cependant, elle doit être perfectionnée.
    Les corrections et tests ne pourront pas se faire dans l'immédiat (juin 2020).
    Sauf si des wikipédiens se dévouent.
    Essayer et comparer les codes des sources obtenues avec les codes des pages wiki.
    Dans l'attente, préférer l'installation des codes de tous les fichiers par copier-coller.

    Fichier original à copier-coller pour télécharger l'application Annexer, avec le fichier annexer.list qui contient la liste des fichiers à télécharger :
    Auto-éditer_un_wikilivre/Auto-référencer/INSTALLER.sh

    Auto-éditer_un_wikilivre/Auto-référencer/annexer.list

    Auto-éditer_un_wikilivre/Auto-référencer/html_data_conversions Copie pour contrôle du fichier INSTALLER.sh
    md5sum : c7a7e6eb3347e2f0d614df29029d5578

    Auto-éditer_un_wikilivre/Auto-référencer/html_url_conversions Copie pour contrôle du fichier INSTALLER.sh
    md5sum : a01327f2138adeffea16e446be79e917

    Post-référencer post-indexer un wikilivre[modifier | modifier le wikicode]

    Post-référencer
    Créer l'Annexe après avoir créé la version imprimable d'un livre. Ceci inclut les liens vers les pages Version_imprimable/Annexe et Version_imprimable/Index créées bien que sans contenu réel au moment de la création de l'Annexe.
    Post indexer
    Cela veut dire "Créer les liens entre les articles et les numéros des pages du livre. Cela se fait de façon naturelle avec OpenOffice et LibreOffice.

    Post indexer avec Open Office (OO) ou LibreOffice[modifier | modifier le wikicode]

    Avec OpenOffice ou LibreOffice on n'obtient pas l’équivalent d'une Version imprimable d'un wiki-livre.
    Comparer les deux versions PDF de La goélette Cardabela - (De 1979 à 1999), tout pour la re-construire.
    * La version pour liseuse est construite avec LibreOffice, le fichier PDF est produit avec une réduction de la définition de 300px pour être téléversable sur Wikimedia Commons. Il y a été nécessaire de revoir la configuration des images et de créer une copie d'écran pour insérer les formules mathématiques.
    * La version PDF (avec couverture) est plus ancienne, elle a été produite avec l'application PDF24 et la version imprimable. Le PDF est généré avec une résolution de 700px. Il n'y a eu aucun problème avec les formules mathématiques lors de la création du PDF.

    Il faut donc noter que les éditeurs OO et LO n'aiment pas les formules mathématiques copiées de Wilikivres..

    Survol rapide de post indexation avec le LivreTest[modifier | modifier le wikicode]

    Préparation du document avec OO[modifier | modifier le wikicode]

    1. Démarrer "OpenOffice Writer".
      Au démarrage la page est en style "Standard". Modifier le style de la page en style "Première page". (Pour le sommaire dont la page ne doit pas être numérotée). Appuyer sur la touche "F11", Choisir "Style et formatage" puis "Première page" et validez par un retour chariot.
    2. Insérer une "Nouvelle page" de style "Première page". (Pour le verso du sommaire qui ne doit pas être numéroté.)
      "Insérer" un "Saut manuel", avec le choix du "Style" : "Première page", sans cocher "Modifier le numéro de page".
    3. Insérer une troisième 'Nouvelle page" style "Première page" pour y insérer le premier article.
    4. Insérer une quatrième page, style "Standard", et valider la numérotation qui doit commencer à 1, page du sommaire, bien qu'elle ne soit pas affichée. Le premier numéro de page visible sera ici la page 4.

    Copier le document dans OO[modifier | modifier le wikicode]

    1. Se déconnecter du compte utilisateur wikilivres. (Cela évite de recopier les renvois tels que ↑ [URL] [[lien]].), numéro de section et sous-section qui ne doivent pas apparaître dans le pages du vivre. Ceci facilite aussi la création table des matières et de l'index alphabétique.
    2. Dérouler les textes masqués.
    3. Surligner et copier (avec touches Crtl+C) le document. (Chaque article ou tout le document.)
    4. Coller (avec touches Ctrl+V) le document dans la page de "Style standard".
    5. Le cas échéant, chercher et supprimer les liens associés aux chapitres « ↑ », « [URL][[lien]] », numéros de chapitres.
    6. Corriger la mise en page, réinsérer les sauts de pages qui n'auront pas été pris en compte.
    7. Corriger la mise en page des tableaux. Il est parfois préférable de créer de nouveaux tableaux et d'y coller le contenu des tableaux mal agencés.
    Créer l'« Index lexical »[modifier | modifier le wikicode]

    Il faut commencer par créer tous les index afin qu'ils soient pris en compte dans la table des matières. Documentation : Index lexical[4], Fichier de concordance[5].

    1. Ajouter une page de style standard à la suite du document pour y insérer les index. Dans le menu « Insérer, saut manuel, saut de page », Choisir style Index et placer le curseur en haut de la page.
    2. Créer l'indexation : « Insertion/Index et tables », choisir « Entrée » et « Index lexical »
    3. Dans le champ « Entrée » surligner le mot ou la phrase à indexer. Carthagène des Indes dans l'exemple ci-dessous.
    4. Dans le champ « Clé 1 » LivreTest dans l'exemple ci-dessous.
    5. Dans le champ « Clé 2 » Annexe dans l'exemple ci-dessous.
    6. Cliquer sur « Insérer »

    Exemple d'Index lexical créé pour l'exercice "LivreTest" (Utilisateur:Goelette_Cardabela/Sandbox/LivreTest).

    Index lexical
    LivreTest	
       Annexe	
          Carthagène des Indes. (Colombie), 5
          Commerce de communautés indigènes, 5
          Fernando Botero (2018), 5
          Fernando_Botero, 5
          Gabriel Garcia Marquez, 5
          Leticia et Tabatinga, 5
          Licence, 6
          Pano Plazo Botero, 5
          Pohline Blast, 5
          Références, 5
          Source des images, licences et contributeurs, 5
          Sources et contributeurs des articles, 5
          Utilisateur:Goelette Cardabela, 5
       ArticleDeux, 3
          Chapitre 1, 3
          Chapitre 2, 3
          Chapitre 3, 3
          Sommaire, 3
       ArticleTrois, 4
          Chapitre 1, 4
          Chapitre 2, 4
          Chapitre 3, 4
       ArticleUn, 2
          Chapitre 1, 2
          Chapitre 2, 2
          Chapitre 3, 2
          Sommaire, 2
       Contenu, 1
    
    Créer l'« Index des illustrations »[modifier | modifier le wikicode]

    L'index des illustrations aura peut-être été créé par le programme Annexer qui renvoie à l'adresse internet d'origine. Cependant, pour les liseuses il est intéressant de créer cet index des illustrations avec OpenOffice ou LibreOffice; cet index renvoie à l'image dans le livre.

    Pour créer cet index automatique il est nécessaire de cliquer sur l'image puis de faire un clic droit pour faire apparaître un menu.

    1. Sélectionner Légende
    2. Dans la fenêtre Légende placer le nom de l'image.
    3. Dans la fenêtre Catégorie sélectionner illustration.
    4. Dans le bas du menu apparaît Illustration 1 : nom de l'illustration.
    5. Choisir la position de ce texte dans le bas de l’image infra, sinon supra au dessus.
    6. Créer l'index des illustrations dans le menu des insertions Table des matières et index.
    7. Choisir, dans Afficher : Texte de légende.

    Exemple :

    url de la page : https://commons.wikimedia.org/wiki/File:LivreTest.pdf
    url du fichier : https://upload.wikimedia.org/wikipedia/commons/7/70/LivreTest.pdf

    Important: Dans toutes ces opérations, penser à Actualiser les changements, Tout, ou aux choix proposés.

    Créer la « Table des matières »[modifier | modifier le wikicode]

    La table des matière se place dans, ou après, la page Index, après la table des illustrations dans un ouvrage traditionnel. Toutefois, dans les ouvrages de Wikilivres la table des illustrations, avec les liens Internet, se place dans la page Annexe si elle est créée avec le programme Annexer, après la table des articles. Il est aussi possible de placer la table des matières en début de livre en remplacement du Sommaire, il suffit de remplacer le nom Table des matières par Sommaire.

    Créer une page de style "première page" pour y insérer la table des matières. Placer le curseur au début de la page.

    La table des matières donne le titre des articles et des sections. Il n'y a pratiquement aucun travail supplémentaire pour établir cet index. Dans le menu « Insertion/Index et tables », choisir « Table des matières » puis décocher la case « Protéger contre toute modification manuelle », puis cliquer sur « OK ». C'est terminé, l'index se place où votre souris a positionné le curseur.
    Les liens internes vers les chapitres peuvent être effacés si l'index n'est pas protégé contre les modifications manuelles.

    Exemple de table des matières créé pour l'exercice "LivreTest".

    Table des matières
    Contenu du livre,					1
       ArticleUn,						2
          Sommaire,						2
          Chapitre 1,					2
          Chapitre 2,					2
          Chapitre 3,					2
       ArticleDeux,						3
          Sommaire,						3
          Chapitre 1,					3
          Chapitre 2,					3
          Chapitre 3,					3
       ArticleTrois,					4
          Chapitre 1,					4
          Chapitre 2,					4
          Chapitre 3,					4
       Annexe,						5
          Références,					5
          Sources et contributeurs des articles,		5
          Source des images, licences et contributeurs,	5
          Licence,						6
       Index,						7      
    

    Dans cet exemple on utilise la mise en page <pre>...</pre> avec des espaces et des tabulations.
    Dans une syntaxe wiki ou html on peut utiliser :
        <span style="float:right">..... 1</span> pour numéroter les pages à droite. ....................... 1

    Indexer un wikilivre[modifier | modifier le wikicode]

    Rappel : (OO est l'abréviation de OpenOffice)

    Préparer le « Modèle de livre » pour OO[modifier | modifier le wikicode]

    1. Procéder comme dans le sous-chapitre précédent , créer autant de pages de style "Première page" qu'il y aura de pages non numérotées, ou numérotées différemment des pages du contenu (i, ii,iii, etc.) : L'énumération suivante est non-exhaustive :
      Deux éventuelles pages de gardes blanches (pour les gros livres), faux titre (modèle:faux-titre, verso de faux titre (modèle:verso de faux-titre), page de titre avec sous-titre et le nom de l'éditeur (modèle:Page de titre), un verso de titre (modèle:Colophon), sommaire, voire un dos de sommaire (vierge ou non),
      six ou huit pages en général, sachant que les Contenus, Sommaires, et les Chapitres doivent toujours commencer sur une page impaire.
    2. Ajouter une page standard pour le foliotage, à la suite du document. La numérotation doit commencer à 1, page à droite, suivie d'une page verso à gauche, cette page 1 peut être la première page de garde ou la page de faux-titre. Le style de page est indiqué sous la fenêtre d'édition.
      Pour faciliter la numérotation gauche et droite, choisissez (F11) Style standard avec Mise en page en Vis-à-vis, puis activer l'En-tête ou/et Pied de page, décocher Contenu identique gauche/droite.
    3. Ajouter les pages de la fin du document en style "Première page", (Postface, pages de garde, etc.) 2 au minimum. À défaut, d'autres pages pourront facilement être ajoutées.
    4. Enregistrer ce document avec le nom « Modèle de livre ». Ce document évitera de tout recommencer avec la conversion d'un autre wiki-livre vers OpenOffice.

    Recopier le contenu WikiMedia (textes et images) dans OO[modifier | modifier le wikicode]

    1. Méthode 1 : Surligner et Copier (clic Ctrl-c) le contenu WikiMedia à recopier sans être connecté, ceci permet d'éviter d'être obligé de supprimer les ↑ [URL] [[lien]]. La méthode convient lorsqu'il y a des textes masqués que l'on doit dérouler avant de copier.
      Méthode 2 : Éditer, surligner, copier, avec le menu Modifier s’il n'y a pas de texte masqué.
      Méthode 3 : Éditer, surligner, copier, chaque chapitre et coller le début de chaque chapitre dans une page de style première page de droite, puis les pages suivantes dans les pages de style standard. Le titre du chapitre doit être style Titre 1 en première ligne.
    2. Coller ce contenu dans "OO writer" (clic Ctrl-v), le contenu collé ne tient pas compte des directives {{Nouvelle page imprimée}}
    3. Rétablir les nouvelles pages à imprimer dans "OO Writer" : "Insertion" + "Saut manuel" + "Saut de page"
    4. Faites une sauvegarde initiale du contenu dans le style date-titre-initial.

    Corriger et compléter les pages[modifier | modifier le wikicode]

    1. Si vous disposez d'un correcteur analyseur de syntaxe ("Antidote" ?), c'est le moment de vous en servir.
    2. Faites une sauvegarde du contenu corrigé dans le style date-titre-corrrigé.
      Toutes les sauvegardes doivent ensuite être incrémentées de façon à retrouver les originaux si ça tourne mal après ou au cours d'une intervention. Il existe une macro qui fait cela :
      https://forum.openoffice.org/fr/forum/viewtopic.php?f=18&t=18566.
    3. Vous pouvez maintenant insérer l'index lexical "Insertion" + "Index et tables" + "Entrée" (Voir la section précédente Indexation de l'index lexical).
    4. Faites une sauvegarde incrémentée.
    5. Insérer une « En-tête » dans les pages de contenu (ou un pied de page) dans laquelle vous pourrez placer le numéro de page qui doit commencer à '1' sur une page impaire. Cliquez sur la touche F11 pour obtenir les listes de styles et formatages. Finissez par ajouter "Insérer" une "Règle horizontale" (sur la même ligne). Cette règle crée une sorte de séparateur entre le texte et l'entête.
    6. Pour finir Recopiez les éventuelles pages de présentation et faites une sauvegarde du fichier.
    7. Supprimez l'« En-tête » de la première page de chaque chapitre recopié.

    Documentation générale[modifier | modifier le wikicode]

    1. Une liste des styles de pages est disponible sur https://fr.wikipedia.org/wiki/Page_(livre)#Lexique.
    2. Exemple de modèle pour les couvertures : {{Couverture d'un wikilivre}}
    3. Visualiser le fichier PDF cette page, daté du 23 septembre 2019
      https://upload.wikimedia.org/wikipedia/commons/e/eb/Référencement_manuel_des_pages_et_livres_de_MediaWiki-fr.pdf
    4. Créez une compilation des fichiers du livre (menu latéral, "imprimer/exporter") et voyez ce que propose PediaPress.
      Vous pourrez noter à part les résultats qui vous conviennent (le copier-coller ne marche pas), si tout est bon commandez le livre.


    Conseils pour les cadres et les formules mathématiques dans OO[modifier | modifier le wikicode]

    Les images sont souvent mal recadrées. Le plus simple est de recopier l'image ailleurs dans le texte ou dans de nouveaux cadres créés. Replacer aussi le texte sous l'image.

    Les blocs de formules mathématiques ne sont pas reproduits correctement. Il est préférable de faire une copie d'écran du bloc et de recopier l'image, éventuellement recadrée, à sa place dans le texte.

    Imprimer[modifier | modifier le wikicode]

    Créer un PDF pour l'imprimante et pour les « liseuses ».[6]

    1. La version peut être convertie et enregistrée au format PDF/A (non modifiable) par le menu d'OpenOffice.
      PDF avec les liens internets : Dans l'option Liens (Link): cochez l'export des liens (Export bookmark as named destination).
    2. Il est aussi possible d'imprimer au format PDF avec une imprimante PDF telle que PDF24 qui a de nombreux avantages dont celui d'imprimer en haute qualité et de permettre de déplacer, ajouter, supprimer, et remplacer des pages.

    Alternative à l'indexation avec OpenOffice ou LibreOffice[modifier | modifier le wikicode]

    Cette alternative permet de conserver la présentation de l'auteur du livre.

    La page Annexe créée avec le programme annexer résout le plus grand des problèmes[7].

    Pour créer l'index des chapitres on peut utiliser le mot magique __TOC__ dans la page Index ou la copie de l'encadré des Sections.
    Pour créer un index alphabétique on peut
    1. recopier l'index des chapitres dans un tableur,
    2. ajouter les numéros des pages dans la colonne B, trouvées dans la pré-édition PDF,
    3. supprimer les numéros de chapitres pour ne conserver que le texte dans la colonne A, puis
    4. trier dans l'ordre alphabétique et
    5. placer cet "index aphabétique" dans la page Index.
    6. Créer un nouveau PDF avec une numérotation des pages, incluant les pages Annexe et Index.

    Références[modifier | modifier le wikicode]

    1. https://korben.info/installer-shell-bash-linux-windows-10.html
    2. http://montefiore.ulg.ac.be/~nvecoven/ci/files/tuto_bash/tuto_bash.html
    3. Installer les fichiers de l'application originale en français
    4. https://forum.openoffice.org/fr/forum/viewtopic.php?p=185643#p185643 Writer - Index Lexical
    5. https://help.libreoffice.org/6.3/fr/text/swriter/01/04120250.html?DbPAR=WRITER#bm_id3148768 Fichier de concordance
    6. https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Lecture_et_impression_des_livres_de_Wikilivres#créer_un_PDF_pour_l'imprimante
    7. https://fr.wikibook.org/Auto-éditer_un_wikilivre/Auto-référencer

    Index des sections[modifier | modifier le wikicode]

    Sections ↑

       1 Codes shell pour créer la page « Annexe » d'un wikilivre
           1.1 Entête des modules
           1.2 Annexer (main)
               1.2.1 Tests unitaires du fichier de commandes annexer
               1.2.2 Annexe obtenue
                   1.2.2.1 Impression visuelle de cette annexe
           1.3 Lister (module)
               1.3.1 Exemple de page Contenus du livre en test LivreTest
               1.3.2 Exemple de page du livre en test, LivreTest compilé
               1.3.3 Exemple de listes obtenues pour le livre LivreTest
               1.3.4 Tests du module lister
                   1.3.4.1 Les lignes qui méritent notre attention
                   1.3.4.2 Tests de la commande
           1.4 Télécharger (module)
               1.4.1 Test du module « télécharger »
                   1.4.1.1 Les lignes qui méritent notre attention
                   1.4.1.2 Tests de la commande télécharger
           1.5 Ajouter sclt (module)
               1.5.1 Tests du module ajouter_sclt
                   1.5.1.1 Les lignes qui méritent notre attention
                   1.5.1.2 Tests de la commande
           1.6 Ajouter scli (trois modules indépendants)
               1.6.1 Les fichier de commandes scli
                   1.6.1.1 Version classique sclic (module)
                   1.6.1.2 Programme des tests du module ajouter_sclic
                   1.6.1.3 Les lignes qui méritent notre attention
                   1.6.1.4 Tests de la commande ajouter_sclic
                       1.6.1.4.1 Fichiers obtenus avec la commande ~/Annexer/ajouter_sclic LivreTest
                   1.6.1.5 Version personnalisée par article sclip (module)
                   1.6.1.6 Entête ajouter_sclip
                   1.6.1.7 Module sclipco.inc
                   1.6.1.8 Modude sclipwb.inc
               1.6.2 Comparaison des annexes obtenues pour la page LivreTest
                   1.6.2.1 Annexe classique avec sclic
                   1.6.2.2 Annexe personnalisée avec le téléchargement sur le serveur Commons
                   1.6.2.3 Annexe personnalisée avec le téléchargement sur le serveur Wikilivres
                   1.6.2.4 Comparaison avec l'annexe manuelle ou semi-manuelle
       2 Tests unitaires et d'intégration
       3 Copier et installer les fichiers de l'application et des tests
       4 Post-référencer post-indexer un wikilivre
       5 Post indexer avec Open Office (OO) ou LibreOffice
           5.1 Survol rapide de post indexation avec le LivreTest
               5.1.1 Préparation du document avec OO
               5.1.2 Copier le document dans OO
                   5.1.2.1 Créer l'« Index lexical »
                   5.1.2.2 Créer la « Table des matières »
       6 Indexer un wikilivre
           6.1 Préparer le « Modèle de livre » pour OO
           6.2 Recopier le contenu WikiMedia (textes et images) dans OO
           6.3 Corriger et compléter les pages
           6.4 Documentation générale
           6.5 Conseils pour les cadres et les formules mathématiques dans OO
           6.6 Imprimer
       7 Alternative à l'indexation avec OpenOffice ou LibreOffice
       8 Références
       9 Index des sections