# Formations ## Dépendances **Paquets** (sur Ubuntu 14.04) - texlive-xetex - latex-beamer - texlive-lang-french - texlive-latex-extra ** Police** - Installer la police [CaviarDream](http://www.dafont.com/caviar-dreams.font) ## Générer le PDF de la présentation ``` make /.pdf ``` ## Générer les plans des formations Lancer le script programme.sh à la racine du dépôt L'ensemble des plans est regroupé et compressé sous le nom plans_de_formation.tar.gz ## Ajouter un plan de formation - créer un répertoire **programme** (l'endroit importe peu mais devrait être sous le répertoire de la formation) - créer les fichiers au format latex (listes, texte, tableau, etc. Les titres sont dans le fichier programme.tex) - contenu.tex - duree.tex - evaluation.tex - moyens.tex - objectifs.tex - prerequis.tex - public.tex - compléter ces fichiers Penser à générer de nouveau les plans # Révision du processus de production des supports de formation ## Organisation du dépôt Le dépôt encourage autant que possible la réutilisation et la mutualisation du contenu. Les éléments de contenu à inclure sont dans les dossiers _content_ et _slides_ pour les documents de type _article_ et _beamer_ respectivement. Les figures sont placées à part dans le répertoire _figures_. Ces éléments de contenu sont inclus dans des fichiers principaux placés dans le répertoire _presentations_. Le répertoire _templates_ contient des modèles de document au format jinja utilisés par le script _setup_main_tex_file.py_. ## setup_main_tex_file.py Le script setup_main_tex_file.py permet d’organiser la procédure en proposant : - la création des fichiers maîtres pour une formation ; - la création des fichiers de contenu à inclure si nécessaire ; - la mise à jour du plan de formation en fonction des éléments inclus ; - la compilation des trois documents (diaporama, support de cours et programme) si l’application rubber est installée. Pour chacune de ses sous-étapes, le script propose une sous-commande. ### Démarrer une formation (sous-commande init) ``` ./setup_main_tex_file.py init -f beamer -a Cadoles -t "Formation personnalisée Scribe" -c "Conseil départemental" -d modules_EOLE_envole/Conseil_Départemental -i Cadoles -l cc-by-sa -n CD_Formation_Scribe ``` Les options obligatoires sont : - le format (beamer ou article) : -f - le titre qui apparaîtra sur la page de garde ou la première diapositive : -t - l’emplacement, soit le sous-répertoire du répertoire presentations : -d - le nom du fichier (sans l’extension) qui sera créé à l’emplacement indiqué. Les autres options prendront des valeurs par défaut si elles ne sont pas fournies : - l’auteur est Cadoles par défaut - l’institut, qui détermine les logos à intégrer, est Cadoles par défaut - la licence est la Creative Commons CC-BY-SA v2 par défaut - le client est XXX par défaut À noter, pour la licence, que seule la CC-BY-SA v2 est disponible dans les contenus à inclure pour l’instant. L’exécution de la commande précédente produit le fichier presentations/modules_EOLE_envole/Conseil_Départemental/diaporama.tex. ### Construire le contenu d’une formation On peut construire une formation en éditant le fichier maître créé précédemment. Ce fichier présente la configuration du module skb ``` \documentclass{beamer} \usepackage{skb} \skbconfig[ root = ../../../, rep = content, pub = presentations, fig = figures, sli = slides, acr = database/acr, bib = database/bib ]{skblocal.tex} ``` Ces variables sont utilisées pour l’inclusion des éléments de contenu répartis dans les différents sous-dossier du dépôt. Le corps du document qui est principalement intéressant est minimaliste au départ ``` \begin{document} \skbinput[from=sli]{style/title} % Corps de la formation %\skbinput[from=sli]{} \skbinput[from=sli]{licences/license-cc-by-sa-2.0} \end{document} ``` Pour ajouter du contenu, on ajoute principalement des directives skbinput avec l’option from=sli (pour les documents de type beamer) et l’emplacement du fichier à partir du répertoire slides (puisque from=sli et sli = slides dans la configuration skb) On peut également structurer la présentation en intercalant des directives section, subsection, etc. Ces directives section, subsection, ainsi que le contenu inclu permet ensuite de construire le plan. Les directives skbinput peuvent pointer vers un fichier inexistant dans un premier temps (une tentative de compilation du document dans cet état échouera bien évidemment). ### Consolider le contenu d’une formation (sous-commande update) Par exemple, avec le corps de document suivant ``` \section{Introduction} \skbinput[from=sli]{modules_EOLE_envole/commun/intro} \skbinput[from=sli]{modules_EOLE_envole/commun/nouveautes27} \skbinput[from=sli]{modules_EOLE_envole/commun/panorama-module} \skbinput[from=sli]{modules_EOLE_envole/scribe/description} \section{Outils pédagogique Scribe} \skbinput[from=sli]{modules_EOLE_envole/scribeAD/eop} \skbinput[from=sli]{modules_EOLE_envole/scribeAD/eop-pratique} \skbinput[from=sli]{modules_EOLE_envole/scribeAD/veyon} \skbinput[from=sli]{modules_EOLE_envole/scribeAD/veyon-pratique} \section{Les quatre phases} \skbinput[from=sli]{modules_EOLE_envole/commun/quatre_phases} \skbinput[from=sli]{modules_EOLE_envole/eolebase/virtualbox} \skbinput[from=sli]{modules_EOLE_envole/commun/quatre_phases-pratique} \skbinput[from=sli]{modules_EOLE_envole/commun/configuration-pratique} \skbinput[from=sli]{modules_EOLE_envole/commun/02-gen_config} \skbinput[from=sli]{modules_EOLE_envole/commun/instance-pratique} \skbinput[from=sli]{modules_EOLE_envole/commun/du-contenu-inexistant} ``` La plupart du contenu existe déjà. Seule la dernière inclusion poserait problème lors de la compilation. Pour permettre de lancer des compilations sans attendre que tout le contenu soit prêt, le script propose une sous commande qui prépare le terrain en créant les fichiers de contenu manquant. ``` ./setup_main_tex_file.py update -d modules_EOLE_envole/Conseil_Départemental ``` Le seul argument de cette sous-commande _update_ permet d’identifier le sous-répertoire de _presentations_ contenant le fichier maître _diaporama.tex_. Cette commande traite toutes les directives skbinput et créer le fichier à inclure s’il n’existe pas déjà. Elle affiche la liste des fichiers créés en retour de commande. ``` $ ./setup_main_tex_file.py update -d modules_EOLE_envole/Conseil_Départemental/ slides/modules_EOLE_envole/commun/du-contenu-inexistant.tex ``` Ce fichier contient du texte permettant de le repérer facilement dans le document généré ``` \begin{frame} \frametitle{du-contenu-inexistant.tex} fichier slides/modules\_EOLE\_envole/commun/du-contenu-inexistant.tex à éditer % contenu (pas trop long) de la diapositive \end{frame} ``` ### Affichage du plan (sous-commande outline) La sous-commande _outline_ permet de créer un sommaire du diaporama sous la forme de listes imbriquées et de l’inclure dans le programme. Il est possible de restreindre le nombre de niveaux de titre utilisé pour le plan avec l’option -l. ``` ./setup_main_tex_file.py outline -d modules_EOLE_envole/Conseil_Départemental ``` ``` Introduction EOLE En quatre points Ce qui caractérise EOLE Nouveautés 2.7 Modules disponibles en 2.7.0 Modules disponibles à partir de la 2.7.1 Eclair Zéphir/Sentinelle Zéphir Seshat Thot Seth Hapy Scribe Outils pédagogique Scribe EOP Mise en pratique Veyon Les fonctionnalités Préparation Mise en pratique Les quatre phases La phase d'installation La phase de configuration La phase d'instanciation La phase d’instanciation les étapes de l’instanciation Les comptes administrateurs locaux Les mots de passe La phase d'administration La phase d’administration VirtualBox Configuration de la VM Eolebase Configuration autonome Nature d’une configuration Types de variables Contraintes Application de configuration du module Les modes de l’application de configuration du module Les informations de debug sauvegarde et chargement de la configuration Instance ``` ### Génération du document Comme alternative à la recette Makefile pas encore adaptée pour la compilation de ce nouveau format, on peut utiliser la commande rubber (paquet supplémentaire à installer) ``` rubber --inplace --module=xelatex presentations/modules_EOLE_envole/Conseil_Départemental/CD_Formation_Scribe.tex ``` La sous-commande _compile_ appelle rubber pour compiler les trois documents : diaporama, support et programme. ``` ./setup_main_tex_file.py compile -d modules_EOLE_envole/Conseil_Départemental ``` Cette sous-commande n’est disponible que si la commande rubber est installé et accessible (test du retour rubber --version). ### Intégration avec git Le script entreprend des actions complémentaires lorsque il détecte un environnement _git_. #### Séparation et isolation des formations La proposition est la suivante : séparer le contenu générique (contenu inclu dans les formations) et les fichiers maîtres spécifiques à des formations. Une branche (master en l’occurence) est utilisée comme pivot et contient les fragments de formations. Chaque formation spécifique est isolée dans une branche propre. De fait, le contenu du dossier _presentations_ est commité dans la branche spécifique, tandis que le reste (_content_ et _slides_ notamment) est commité dans _master_. Un hook git local est proposé pour limiter les commits dans les mauvaises branches, basé sur les chemins des fichiers créés ou modifiés. Le script permet d’automatiser une partie de ce découpage, notamment la création des branches spécifiques et le commit dans les branches appropriées selon les actions entreprises. #### action d’initialisation L’initialisation doit être effectué depuis la branche _master_ et exécute les actions suivantes : - création d’une branche nommée d’après le répertoire de destination et suffixée avec _xelatex/_ - création des fichiers propres à la formation (fichiers maîtres pour le diaporama, le support, le programme, etc.) - commit de ces fichiers dans la branche spécifique. #### action de mise à jour du programme Comme tout ce qui implique la mise à jour ou la création de contenu dans le répertoire _presentations_, le produit de la mise à jour du programme est commité dans la branche spécifique.