Programmes pour la gestion d'EXEMAALT

Les programmes et les entetes latex sont ici

Chaque exercice est stocké dans un fichier indépendant. Le principe est que chaque exo contient des commandes latex (\titre, \niveau...) qui servent à la fois à trier les exos, et qui sont utilisées par LATEXpour mettre en forme l'exo. Toute la partie mise en forme est faite par latex, la partie tri et indexation est faite par les scripts.

Les scripts

Qui fait quoi

La tâche principale des scripts est d'extraire et trier les champs (niveau, angles pedagogiques, auteurs, dates...) des exercices pour créer les fichiers (tex) de recueils et d'index (tex et html). C'est ce que fait le programme exos-make-tex.perl. Il est normalement appelé par le script exos-make-tex. Voir quelques details plus loin.

La plupart des autres operations sont effectuées par des petits scripts ecrit en shell bash (sous unix).

Initialement, chaque exo et les figures correspondantes sont supposés être dans un répertoire ayant le même nom que l'exo (moins le suffixe .tex.) situes dans le repertoire fred ou vincent du repertoire sources. Le site web est créé dans un repertoire EXEMAALT.

La compilation des recueils est faite par exos-compile, la compilation des exos individuels par exos-indiv.

exos-compile peut recevoir l'argument ``-1'' pour ne compiler qu'un recueil exercice en guise de test. exos-indiv peut recevoir un argument (ou plusieurs) pour compiler un exo individuel particulier (pour le tester par exemple).

exos-tout part de zero et construit toute la base de donnee EXEMAALT dans un repertoire EXEMAALT. exos-cree-reperts crée la structure de sous-repertoires de EXEMAALT. exos-variables charge quelques variables (chemins d'acces...)

exos-installe-reste compile et copie les pages html (mode d'emploi etc...), cree le plug-and-play.

exos-nombre compte le nombre d'exos et l'écrit dans la page d'entrée du serveur.

exos-make-tex.perl

Ce programme fait beaucoup de choses à la fois... Il lit les titres, auteurs, themes etc des exos (1ere partie du programme) en verifiant que chaque exo est complet et n'a pas deux fois la meme commande... Il trie les exos par categorie (par theme par exemple) et il cree le recueil correspondant et l'index correspondant. Un exo peut etre reference a plusieurs endroit de l'index, mais a un seul endroit du recueil (d'ou les commande \Theme et \ThemeSecondaires). La creation des recueils est faite dans la 2eme partie du programme, la creation des index dans la troisieme. Le programme fait la différence entre les categories officielles, c'est à dire standard, des catégories non-officielles (qui apparaissent plus brièvement dans les index).

Il regarde si l'exo est nouveau ou pas (pour mettre la petite étoile rouge avec la commande LATEX\nouveau) et pour l'inclure ou non dans le recueil des exos nouveaux. Il met a jour l'annee de copyright en fonction de la date, il ajoute le nom de fichier dans l'exo (pour faire un lien vers le fichier source), et il crée une liste des exos arrivés depuis le dernier mail envoye aux abonnés...

Pour plus de détails, voir les commentaires des scripts eux-mêmes.

Partie LATEX

structure des fichiers

La mise en forme des exos est légèrement différente selon que De plus, les index insérés sont différents selon le type de recueil.

On obtient alors le recueil par concatenation de fichiers comme entete1_a4 (ou entete1_a4), entete2_niveau (ou entete1_theme), entete3_commune, entete4_exos_individuels (ou entete4_exos_tries), les exos eux-memes, et un fichier final fin_niveau (ou fin_theme). Par exemple, le fichier plug_and_play est construit comme concatenation de 4 entetes et une d'une fin.

Fonctionnement des commandes

les commandes \titre, \niveau etc. n'écrivent rien elles-mêmes. Elles mettent à jour des variables \ecrittitre, \ecritniveau etc. qui sont utilisées par l'environnement exo pour mettre l'exo en forme. Ceci a l'avantage qu'elles peuvent se trouver dans n'importe quel ordre, quel que soit le type de recueil compilé.

Il y a un peu plus de détails dans les entêtes (l'entête 3 commune en particulier).

Les programmes et les entetes latex sont ici



Vincent Guirardel 2007-03-09