Vous avez déjà développé des exercices dans votre classe
sur un même thème et vous désirez en faire votre premier
module : ce document est pour vous.
Avant toute chose...
Prenez contact avec l'administrateur du serveur WIMS sur lequel vous travaillez
et demandez-lui un compte développeur : il vous donnera un login et un mot de passe.
Pour accéder alors à votre compte, suivez le lien Création de ressources > Modtool sur le menu de la page d'accueil et identifiez-vous.
Vous pouvez aussi vous connecter à partir de votre classe. Le mot de passe sera
alors enregistré.
Vous pouvez alors créer votre premier module en cliquant sur
le lien créer un nouveau module.
Règles de publication
La particularité de WIMS est son fonctionnement collaboratif. Nous sommes tous collectivement responsables de la qualité des ressources produites. Cette base s'est étoffée au fur et à mesure des années, le nombre de contributeurs a augmenté, il est donc difficile de travailler de concert. Cela est cependant un objectif.
L'association WIMS EDU propose un ensemble de règles afin de maintenir la qualité des ressources publiées.
La finalisation des modules est importante car elle impacte fortement le recensement des exercices
et le fonctionnement du moteur de recherche. Elle porte d'une part sur le renseignement des propriétés du module
et sur les éléments d'informations qu'il convient de donner dans les fichiers de configuration.
Paramètres supplémentaires
Les paramètres avancés permettent de proposer des choix avant de lancer l'exercice. Par exemple, on peut choisir le niveau de
difficulté de l'exercice que l'on souhaite lancer. Voir par exemple, le module suivant.
Mettez-vous en version imprimable
(Version imprimable dans la barre de menu)
si vous voulez avoir une vue d'ensemble ou faire une recherche sur un mot.
Les deux modes de publication
Publier un module signifie le rendre public
et utilisable par d'autres enseignants ou élèves.
Le serveur étant dédié à l'enseignement et à destination d'élèves et d'enseignants,
le contenu et les ressources doivent tous avoir un but pédagogique
et sont soumis au code de déontologie des enseignants et aux règles usuelles de devoir de réserve.
Il y a plusieurs sortes de publication possibles :
la publication centralisée sur un serveur de publication.
la publication sur le serveur sur lequel vous travaillez (publication en local).
Publication centralisée
Lorsqu'un module est publié via la publication centralisée,
il est intégré à la base de données de ressources de WIMS. Il va se propager automatiquement à travers les miroirs
et les mises à jour automatiques à tous les serveurs WIMS du monde entier.
Le module sera à la disposition de tous les utilisateurs de WIMS.
Toutes les ressources WIMS sont publiées sous licence GNU GPL qui assure les libertés suivantes :
La liberté d'exécuter le logiciel, pour n'importe quel usage ;
La liberté d'étudier le fonctionnement d'un programme et de l'adapter à ses besoins, ce qui passe par l'accès aux codes sources ;
La liberté de redistribuer des copies ;
La liberté de faire bénéficier la communauté des versions modifiées.
La publication centralisée nécessite que vous soyez titulaire d'un compte de publication.
Vous devez demander ce compte en envoyant un mail à publishcenter@wimsedu.info.
Une publication centralisée vous engage à maintenir le module, notamment lors des évolutions des logiciels ou langages tiers
qui rendent les exercices obsolètes (exemple : java).
Publication en local
Lorsqu'un module est publié sur un serveur local X, seuls les utilisateurs du serveur X voient et peuvent utiliser ce module.
Il ne faut pas considérer la zone local comme un purgatoire pour la publication centralisée. En effet, lorsque un module est publié
sur un serveur de publication, le gestionnaire du site pourra effacer le module enregistré en local. La publication en local peut intéresser des enseignants qui développent des exercices spécifiques
à l'environnement dans lequel est intégré le serveur X.
La publication en local nécessite uniquement l'autorisation de l'administrateur du serveur X.
Règles de publication d'un nouveau module et maintenance des anciens
Parmi les difficultés à maintenir une base d'exercices de bonne qualité, la duplication des exercices en est une de taille.
Cette difficulté se fait sentir lorsque des exercices proches ou identiques apparaissent dans plusieurs modules. Si quelqu'un remonte
un bug sur un tel exercice, il sera corrigé dans un module et pas dans un autre.
De même, les méta-données permettent d'améliorer le référencement des modules.
Il existe aux moins deux serveurs de publication, le serveur historique de Nice et le serveur de l'association WIMSEDU.
Chaque serveur a ses propres règles, mais toutes contribuent à améliorer la base de données et le référencement des exercices.
L'association WIMSEDU a créé un comité de publication dont le travail consiste à organiser le travail de maintenance sur la base de données du serveur
de publication WIMSEDU.
Les différentes propositions énoncées dans ce document ont pour but de simplifier le travail des personnes qui travaillent
à maintenir la qualité des exercices de la base.
Il peut arriver que les auteurs stoppent leur investissement sur WIMS pour des raisons personnelles.
Dans ce cas, le comité de publication essaye de trouver un mainteneur.
Conseils et éléments à vérifier avant une première publication
Une liste de vérification est disponible à l'adresse (à compléter). Vous pouvez l'utiliser pour vous aider à ne rien oublier.
Avant de publier :
Cohérence avec les modules déjà publiés
Assurez-vous qu'il n'existe pas encore de module existant pouvant accueillir vos exercices.
Enrichir un module existant permet d'une part de regrouper des exercices de même niveau et/ou de même thème,
et d'autre part, permet de partager le travail de maintenance des modules entre plusieurs auteurs.
Programmation
Code source
Présentez le code source le plus clairement possible (indentation ...). Cela vous aidera à reprendre ultérieurement votre programme sans perdre trop de temps.
Commentez le plus possible le code.
N'utilisez pas l'option Soft Wrap text (retour automatique à la ligne) de certains éditeurs et allez régulièrement à la ligne
sauf si cela est interdit par le code.
Vérifiez que les auteurs sont toujours déclarés de la même façon dans chacun des exercices (\author{Prénom, Nom}).
Si les orthographes sont différentes, le nom d'un auteur peut apparaitre plusieurs fois dans la liste des auteurs.
Vérifiez que l'e-mail est bien renseigné il est indispensable pour la maintenance du module.
Les bugs éventuels vous seront signalés à cette adresse.
HTML & CSS
Ecrivez du code html valide et le plus correct et simple possible : fermer les balises (même la balise <p>,
cela évite des bogues de certains navigateurs), ne pas laisser d'espaces entre la balise et le texte.
Nettoyez le code html en enlevant les balises inutiles ou redondantes. Utilisez le validateur en ligne, par exemple
https://validator.w3.org.
Donnez l'adresse de votre exercice (vous la trouverez sous l'icône "à propos"
lorsque vous avez lancé votre exercice).
Evitez les balises successives en ajoutant un style css dans la balise principale ou même définissez une classe css au sein
de votre exercice.
De manière générale, utilisez de préférence les styles css proposés par défaut sous wims.
Ils dépendent alors du thème de WIMS choisi. Nous essayons de les rendre cohérents.
Ils permettent d'avoir une meilleure unité dans les exercices.
La liste des styles css par défaut est disponible dans la documentation oef et dans un rappel dans ce document.
Exemples de styles css prédéfinis
Les styles CSS permettent de standardiser la présentation d'une page HTML. Les styles CSS sont destinés à une ou plusieurs éléments de code HTML.
WIMS propose un certain nombre de styles par défaut. Ils permettent d'homogénéiser les présentations des exercices sur un serveur wims donné.
Vous retrouverez la liste complète des styles css par défaut dans la documentation oef.
des balises HTML
<div> (pour division) : Cette balise permet de définir un ensemble de paragraphes sur lesquels seront appliqués les styles.
<span> : Cette balise permet de définir un extrait de paragraphe sur lesquels seront appliqués les styles.
Ces deux éléments sont aussi appelés "conteneurs génériques". Toute balise ouvrante (<div>) est accompagnée d'une balise fermante correspondante (</div>), sinon, l'analyse de votre code HTML remontera une erreur.
La balise <p>...</p> indique un paragraphe. C'est l'équivalent du pied-de-mouche du traitement de texte. La balise <br> indique un saut de ligne. C'est une des rares balises à ne pas nécessiter une balise fermante.
Pour une meilleure présentation, nous vous conseillons d'utiliser essentiellement les balises <div> et <span>.
Les balises de liste sont au nombre de trois :
<ul> indique un début de liste à puces
<ol> indique un début de liste à numéros
<li> indique un élément de liste
Exemple :
<ul>
<li>élément 1</li>
<li> élément 2</li>
</ul>
donne :
élément 1
élément 2
des styles affectés aux balises
Certains styles s'appliquent sur du texte, ou sur des paragraphes, comme les styles de mise en forme dans un traitement de texte.
Les styles sont affectés à la balise avec la syntaxe class="nom du style".
Si vous souhaitez appliquer un style sur un paragraphe, nous vous conseillons d'utiliser le conteneur <div>. pour une partie de phrase, utiliser le conteneur <span>.
Par exemple :
Vous souhaitez centrer une phrase. Vous allez écrire le code suivant :
<div class="center">Vous souhaitez centrer une phrase.</div>
Pour mettre en évidence <span class="wims_emph">un ensemble de mots</span> dans la phrase.
Vous obtiendrez le résultat suivant :
Vous souhaitez centrer une phrase.
Pour mettre en évidence un ensemble de mots dans la phrase.
Exemples de styles css prédéfinis sous WIMS
wimscenter,
center permettent de centrer un texte;
wimscenterajoute un padding en plus de centrer.
wimsborder,
wimsnoborder
gère le bord des cases d'un tableau;
wims_emph met un texte en évidence;
oef_indbad,
oef_indpartial,
oef_indgood,
oef_indprec et
oef_indforget écrit un texte en
utilisant le code couleur identique à celui utilisé dans l'analyse de la réponse;
wims_instruction peut être utilisé pour
donner une explication sur la façon d'entrer une réponse;
wims_credits peut être utilisé
pour une référence (par exemple, les crédits pour une photo).
wims_difficultylevel
permet de donner un niveau de difficulté à un exercice.
wims_color1,
wims_color2,
wims_color3 donnent les couleurs du thème choisi.
couleur des bandeaux
couleur des boutons
couleur des boutons d'aide
wims_question permet de mettre en valeur une partie du texte
avec un liseré de la couleur du thème (wims_color1) (à partir uniquement de wims4.17e).
Souligner les verbes
Le chat mange la souris.
Il est recommandé de garder l'esprit de ces styles (ne pas utiliser par exemple oef_indgood pour un autre emploi
que celui indiqué)
Accessibilité : Le plugin Wave de firefox (voir
https://wave.webaim.org/extension/) peut vous aider à identifier de solutions plus accessibles.
Nom des exercices
Un seul mot écrit comme un nom propre.
Évitez les caractères spéciaux et les noms trop longs et écrivez-le de préférence en minuscules.
Cela simplifie les processus de contrôle du code. Exemple : signes.oef ou coordonnees2.oef
Fonctionnement des exercices
Un intérêt majeur de WIMS est d'avoir des exercices aléatoires. Donc vérifiez bien que vous avez tiré le
meilleur parti possible de cette possibilité.
Vérifiez que toute question posée est bien analysée.
Testez et faites tester les exercices en particulier en envoyant aussi des réponses fausses et en vérifiant les feedbacks.
Les meilleurs testeurs sont nos élèves, nos étudiants.
Présentation générale
Conseils typographiques
Les quelques conseils suivants sont des conseils de type éditorial. Ils concernent les mathématiques mais aussi les
autres disciplines.
Evitez les abréviations inutiles: le titre doit être sans abréviation, le plus parlant possible
(ce n'est pas toujours facile).
L'énoncé doit être parfaitement écrit avec les règles typographiques de la langue utilisée
ainsi que des règles simples concernant l'introduction des mathématiques.
Entre autres
un espace avant les signes de ponctuation en deux morceaux comme :?;!
un espace après les signes en un morceau, pas d'espace avant
(virgule, point)
Une phrase ne doit pas commencer par un
symbole mathématique : tourner la phrase autrement (raison : si vous
écrivez P est sur la droite
D .
Q est sur le cercle
C, une lecture rapide pourrait faire croire que l'on parle du
produit scalaire de
D et de
Q).
Pour la clarté du texte, on utilise dans les livres une typographie différente pour les
mathématiques et le texte français. Faire de même ici en mettant les
formules mathématiques entre \( et \) . Il y a quelques bogues concernant
cet emploi, mais en général essayer de ne pas faire des choses trop
compliquées. Cela est valable même si la formule mathématique est
réduite à une seule lettre. Séparez les lettres par un espace s'il s'agit
d'objets mathématiques différents: par exemple,
AB plutôt que
AB.
Les formules sont plus visibles si
vous laissez un espace avant et après le signe =, + , -
. Cela n'est pas toujours possible, mais le faire si l'on peut.
Lorsque la formule est traduite en TeX, on n'a pas la maîtrise de ce
qui se passe, par contre pour le cas où le code html est utilisé, il
faut y penser.
Par exemple, si les formules mathématiques
risquent d'être un peu longues, aller à la ligne et centrer. Cela les mettra en évidence.
Evitez les retours à la ligne forcés en milieu de phrase ou de paragraphe (en utilisant les balises <br>
ou <p> par exemple).
Eléments pédagogiques et didactiques
Vérifiez la clarté des énoncés ; assurez-vous en particulier que l'exercice puisse être utilisé en dehors du
contexte particulier de votre classe.
Évitez les liens externes à WIMS : ils risquent de disparaitre avec le temps et vous obliger à reprendre votre module.
Pour tout lien interne à WIMS, donnez l'adresse relative de la ressource.
Propriétés du module (Méta-données)
Eléments pédagogiques et didactiques
Précisez dans le fichier d'introduction (intro.phtml), les points spécifiques de votre module :
méthodes pédagogiques utilisées avec ce module, les points de cours particuliers travaillés, les compétences visées, etc.)
Précisez éventuellement le lien entre votre module et des modules déjà existants sur le même sujet ou des sujets similaires.
Propriétés du module
Les propriétés générales du module sont importantes pour la classification et la recherche de ressources WIMS.
Lorsque vous créez un nouveau module, utilisez les boutons d'aide et suivez soigneusement les instructions données dans ces aides.
voir la page poru plus d'explications.
Modification après publication
Ça y est, vous avez publié votre module ! Et bien sûr, deux jours
après, vous y découvrez une erreur (ne vous inquiétez pas, c'est toujours
comme ça).
Il ne vous reste plus qu'à la corriger. Pour cela,
Retournez dans votre compte Modtool.
Si vous avez mis à la poubelle le module après publication,
allez à la page d'accueil de WIMS, cherchez le module que vous désirez modifier,
cliquez sur ce module, puis cliquez sur le lien
Copier dans Modtool en bas de page.
Modifiez le module par Modtool.
Vérifiez les différences par Check diff, testez, etc.
Remplissez le fichier NEWS : indiquez la nouvelle version, les modifications importantes faites.
Changez le numéro de version dans les propriétés
(Propriétés) : des centièmes, des dizièmes ou des unités
selon l'importance de la modification.
Effectuez une publication centralisée.
Effacez le module dans le compte Modtool quand la nouvelle version apparaît sur le serveur. Vous pouvez bien sûr le garder sur votre
compte Modtool, mais cela fait double emploi et vous risquez de corriger un mauvais module ultérieurement.
Par contre, si vous avez fait un lien d'une feuille d'exercices sur ce module,
vous devez le garder. Cependant, l'année prochaine, changez votre feuille d'exercices
pour lier à la version publique.
Les serveurs WIMS ayant activé la mise à jour automatique récupéreront le
module modifié à leur prochaine mise à jour automatique. S'ils ne l'ont pas fait,
écrivez au gestionnaire ...
Quelques conseils après expérience
Vous devez faire très attention de ne publier que des modules bien testés. C'est encore plus le cas quand vous modifiez un module d'exercices existants.
Nous avons tous un désir constant d'améliorer nos oeuvres : une présentation encore plus jolie, encore plus de capacités (ou dans le cas d'un exercice, plus de cas), une réorganisation du code, etc.
Mais attention ! Votre module est peut-être déjà inséré dans des feuilles d'exercices actives ou/et des examens importants. Vos nouveautés apportent alors des changements au milieu du travail des gens. Les nouvelles capacités ou présentations peuvent troubler les élèves ; au pire, un examen important peut être cassé par un bogue.
En règle générale, il est conseillé de s'abstenir d'introduire des modifications esthétiques ou des renforcements au milieu d'une année académique sur les modules activement utilisés. Seules les corrections de bogues doivent être publiées pendant cette période. Développez vos nouveautés dans votre compte modtool et ne les publiez que pendant les vacances scolaires, si possible.
Pour vos utilisations personnelles ou celles de vos élèves, il vous suffit de pointer vos feuilles ou examens sur le module de votre compte modtool. C'est d'ailleurs un bon moyen de faire tester les modules avant la publication.
Renseigner les propriétés du module
À la création, on vous demande de choisir les propriétés du module. Certaines
sont irréversibles, d'autres pourront être changées plus tard.
Le choix irréversible à bien faire : le type
Le Type doit être bien choisi dès le départ car il conditionne
le type de fichiers auquel vous aurez droit. Pour ce qui nous concerne ici,
vous devez cocher la case OEF.
Donnons cependant une description rapide des autres choix possibles.
exercice : un exercice où tout est géré par
le développeur sans passer par le format OEF. Ce n'est donc pas ce qu'il vous
faut si vous désirez transférer des exercices de votre classe.
outil :
dans le cas d'un outil, il n'y a pas de notes, ni de question.
Par exemple, la
calculatrice de fonctions
ou
outil statistique
.
document : ce que vous êtes en train de lire : cela peut être
un document de cours avec des liens sur des exercices de la base de données,
des exemples variables. Pour avoir de plus amples détails, regardez
le document Rédiger un document.
récréation :
OEF :
Deductio :
un modèle d'un type de modules.
Les autres choix
Ils n'ont pas tous besoin d'explication ... Seules les propriétés les plus importantes sont affichées mais les autres doivent être renseignées, bien sûr ! . Cliquez sur le nom des autres pour obtenir plus d'informations.
Adresse : Il s'agit de l'adresse où sera physiquement votre module dans le logiciel si vous le publiez. Commencez par choisir la zone test, vous changerez au moment de la publication. Plutôt que de répéter l'aide, donnons ici quelques exemples :
Tant que le module n'est pas publié et que vous ne l'utilisez pas dans une classe, vous pouvez sans difficulté changer son nom. Ensuite, cela est tout à fait déconseillé. D'autre part, il est fortement conseillé de commencer le nom par oef dans le cas d'un module OEF, par doc s'il s'agit d'un document.
Titre : Choisissez un titre court, sinon il sera coupé, et incisif !
Description : La description est obligatoire,
elle apparaît lorsqu'une recherche dans le moteur de recherche est faite. Il est conseillé d'apporter des éléments sur
l'utilisation pédagogique et/ou didactique du module comme les particularités du module, la cible concernée ou le contexte d'utilisation.
Langue fr pour nous
domaine : le domaine doit être pris parmi des domaines existants. Une liste à jour est accessible dans l'aide.
Niveau : il s'agit du niveau scolaire, K1-K3, pour la maternelle, E1-E5 pour le primaire, E6-H3 pour le collège, H4-H6 pour le lycée, U pour l'université. Les niveaux indiqués doivent correspondre au mieux aux niveaux scolaires des exercices même s'ils sont proposés pour des élèves de niveau supérieur. En cas d'évolution du niveau, pensez à mettre un commentaire dans le fichier de configuration intro.phtml. Pour les niveaux collège-lycée, le groupe EULER a fait un remarquable travail de recensement des exercices en mathématiques (Voir https://euler-ressources.ac-versailles.fr/wims/ - dernière visite le 18/12/2023)
Mécanisme de score : répondre oui s'il s'agit d'un module OEF.
Version : pour la première fois, la version est 1.00. Quand vous modifierez le module, il faudra augmenter ce numéro par unité, dixièmes ou centièmes selon l'importance de vos modifications (mais dans tous les cas, il est conseillé de mettre deux décimales).
wims_version : le numéro de version de WIMS sur lequel vous travaillez. Comme les possibilités de WIMS augmentent, il est important de mettre une version en rapport avec les possibilités que vous utilisez.
Auteur : Vous pouvez en mettre plusieurs, séparés par des points-virgules, chaque auteur étant indiqué sous la forme Prénom, Nom
Email de l'auteur : l'email est important car c'est à cette adresse que seront envoyés les rapports de
bogue, les compliments et les critiques.
Traducteur
Email du traducteur
Logiciels de soutien nécessaires : si vous utilisez un logiciel (pari/GP, maxima, octave etc), dites-le.
Mots clés : Important, car c'est sur cette base-là que vos exercices seront trouvés par le moteur de recherche et listés dans l'arborescence
de recherche par sujet (voir Site > Recherche par sujet). Par défaut, il contient (de façon automatique) tous les mots clés de chaque exercice du module, si vous y avez mis des mots clés. Il est conseillé de choisir les mots-clés dans
la liste fournie dans le bouton aide associé au champ. WIMS étant une plateforme multilangue, il a été choisi de traduire tous les mots-clés en anglais.
Si le mot-clé n'existe pas, demandez son ajout dans la liste à qualite@wimsedu. Toute la difficulté est de réussir à trouver un compromis entre
un mot-clé suffisamment précis mais pas trop afin qu'il soit affecté à plusieurs modules.
Droit d'auteur : GPL en général
Une fois ces choix faits, cliquez sur Enregistrer les changements.
Renseigner les fichiers de configuration
Modifier le menu d'introduction
Le fichier intro.phtml contient par défaut le texte suivant
(outre des commentaires, lignes commençant par !!):
!header
!read Exindex
Ce module regroupe pour l'instant $exototal exercices sur ...
!set related_modules=
!set keyw=
!set latex_exists=
!read oef/intromenu.phtml
!tail
Il ne faut pas toucher aux deux premières lignes, ni aux deux dernières
(elles donnent le format général du menu intro). Par contre vous pouvez/devez
compléter la phrase
Ce module regroupe pour l'instant $exototal exercices sur ...
Tout ce que vous mettrez là sera dans le menu d'introduction de votre module
avant la fenêtre de choix. Vous pouvez utiliser des balises html.
Par défaut, à partir de la version, disons 4.22,
apparaissent des liens sur le moteur de recherche avec les mots clés
que vous avez mis dans les propriétés et un niveau équivalent.
Si vous ne désirez pas que cela soit le cas automatiquement, mettez
!set related_modules=no
Si vous désirez dire que soit écrite une liste de mots clés
différente de celle définie dans le module, mettez-les dans la variable
keyw (séparez chaque
mot clé par une virgule et assurez-vous que le lien obtenu
fait apparaitre au moins un module d'exercices).
Si certains de vos exercices ont une version latex définie
par la commande \latex,
mettez
!set latex_exists=yes
Un message apparaitra alors (aucune vérification n'est faite).
Cette version latex des exercices apparaît par un fichier téléchargeable
dans la version imprimable si vous êtes connecté en tant qu'enseignant
ou développeur.
Le fichier
introhook.phtml permet de présenter des paramètres spécifiques à certains exercices.
A partir de la version 4.10, le fichier introhook.phtml est défini par défaut avec une seule ligne
!set introhook_exists=no
Si ce fichier n'existe pas, il faut le créer.
Ce fichier est à modifier si vous voulez rajouter du texte dans la page d'introduction du module après
le champ permettant de sélectionner le titre d'un ou plusieurs exercices.
Il commencera par la ligne
!set introhook_exists=yes
Si le module a été créé avant la version 4.21e, par défaut,
le texte que vous voulez ajouter s'incorpore dans un grand tableau html et
devra être formaté de la façon suivante :
<tr>
<td>
</td>
<td>
</td>
</tr>
Sinon, mettez au début du fichier
!set introhook_tableless=yes
Cela est le défaut à partir de la version 4.21e et fortement conseillé car beaucoup plus souple.
Bien sûr, cela n'a d'intérêt que si vous rajoutez quelque chose. L'utilisation première
est de créer des boutons de choix de paramètres.
Donnons juste un exemple, cela sera détaillé dans le paramétrage avancé.
<tr>
<td class="wimscenter">Catégorie : </td>
<td>
!formradio confparm1 from 1 to 3 prompt facile, moyen,difficile
</td>
</tr>
ou dans la version sans table
Catégorie :
!formradio confparm1 from 1 to 3 prompt facile, moyen,difficile
Modifier le bas de page des exercices
Le fichier endhook.phtml : Pour faire apparaître des lignes à la fin
de tous les exercices du module, vous pouvez rajouter du texte ici. Une utilisation courante est de mettre un lien sur les outils pouvant être utilisés.
Ce lien n'apparaîtra ici que lorsque l'exercice est en cours. Il disparaîtra lorsque l'exercice
est terminé et résolu (
status est une variable prédéfinie utilisée dans le module qui attend qu'on réponde (=waiting) et qui change de valeur lorsqu'on a répondu à l'exercice.
)
Modifier l'à propos
Lorsque vous cliquez sur A propos dans un module d'exercices
OEF, c'est le contenu du fichier about.phtml :
!changeto oef/$module_language/about.phtml
Cette ligne permet de faire de manière automatique le tableau donnant l'adresse, le nom de l'auteur ... Si vous rajoutez une ligne de texte
AVANT, elle apparaîtra. Vous pouvez donc y mettre
les références que vous avez utilisées, vos remerciements etc !
Compte rendu de mise à jour
Le fichier NEWS sert à informer des mises à jours successives
du module. Par défaut, il contient les lignes suivantes
# This file registers changes to the module.
# Please write in reverse order: the last version first.
Version 1.00:
First publication.
Vous pouvez enlever les deux premières lignes, ... mais retenir le conseil
et rajouter la date à laquelle vous publiez sous la forme year-mm-jj.
Ce que vous écrirez là apparaîtra à la fin de l'A propos. Si vous le remplissez, il permettra
rapidement à l'utilisateur de voir que vous avez rajouté un exercice, que vous avez corrigé
un bogue dans tel exercice.
Mais, nous reverrons cela plus tard.
Modifier le fichier var.proc
# Change to 0 if you don't want the choice `I don't know'
idontknow=1
# Change to 1 of you want all choices to be present
allchoices=0
# Computational precisions: you can change the defaults here.
# pari_precision=18
# maxima_precision=8
# print_precision=8
# Change to no if you don't want classes to import exercises in this module.
# A typical situation is that these exercises use common resources of the module.
class_importation=yes
# Change to yes if you want to put images in common (images/) to all exercises.
# If you do so, you must disable class_importation.
common_images=no
!changeto oef/var.proc
Les lignes commençant par # sont des commentaires.
Vous voyez que vous pouvez, en décommentant la ligne
pari_precision=18
et en changeant le nombre, augmenter la précision des calculs
(bien sûr ne le faites que si nécessaire).
Si vous utilisez des images qui doivent être communes à
plusieurs exercices, mettez
common_images=yes.
Il ne doit rien y avoir après la dernière ligne du fichier d'origine.
Ajouter des métadonnées pour chaque exercice
Pour les versions supérieures à 4.10, renseigner les instructions
\keywords{},
\description{}
et \observation{}
dans le source d'un exercice aidera à la recherche d'exercices et permettra de compléter les champs
Description et
Commentaires
lors de l'insertion de l'exercice dans une feuille (voir la documentation de Createxo).
Ajout d'un exercice OEF
Pour mettre un nouvel exercice dans le module :
Trouvez seul mot écrit comme un nom propre (court et significatif). Evitez les caractères spéciaux et les noms trop longs.
Cela simplifie les processus de contrôle du code. par exemple toto ;
dans le champ Ajouter un autre fichier, mettez
ce nom précédé du nom imposé src et suivi de l'extension oef, dans notre exemple
src/toto.oef
Dans la fenêtre qui apparaît, copiez le source de votre exercice.
Cliquez sur Enregistrer
Attention : src est en fait un nom de répertoire dans lequel doivent être
toutes les sources d'exercices OEF :
il est important que le nom du fichier se termine par .oef
et qu'il se trouve dans le répertoire src, c'est-à-dire que l'adresse soit
src/xxx.oef
Vous pouvez alors tester votre exercice en cliquant
Tester le module.
Aide commune à plusieurs exercices
Vous désirez écrire une aide commune à plusieurs exercices de votre
module.
Créez un fichier, par exemple aide dans lequel
vous écrivez cette aide (sans variable).
Dans la source d'un
exercice où vous désirez que cette aide apparaisse,
écrivez les lignes suivantes :
\text{monaide=wims(record 0 of aide)}
\help{\monaide}
Vous pouvez bien sûr écrire plusieurs aides que vous mettrez soit dans des
fichiers différents soit dans le même mais sous la forme
:bla bla bla
etc
: blo blo blo
etc
et selon les exercices, vous irez chercher la première aide (entre le premier
: et le second) ou la seconde aide
\text{monaide=wims(record 1 of aide)}
\help{\monaide}
ou
\text{monaide=wims(record 2 of aide)}
\help{\monaide}
Paramètres supplémentaires
Vous désirez avoir le même exercice avec des difficultés différentes venant
de la taille des données. Par exemple, un exercice sur des matrices d'ordre
2 et un exercice sur des matrices d'ordre 5.
Il faut alors créer un fichier introhook.phtml, par exemple
<tr><th class="wimscenter">Niveau de difficulté</th>
<td>
!formbar confparm1 from 1 to 3
Taille du graphe
</th></tr>
voir une autre méthode sans table dans la partie sur la création du fichier, il faut alors adapter les exemples
qui suivent.
L'utilisateur voit un formulaire lui demandant la "Taille du graphe'', et
peut répondre un entier compris entre 1 et 3. Il n'est pas obligé de
rentrer une valeur.
(On se trouve dans un tableau HTML, dont on vient de définir une ligne.)
Attention les seuls noms autorisés pour ces variables sont les mots
confparm1, confparm2, confparm3, confparm4.
Dans les sources de l'exercice, on peut alors définir certaines des données à
l'aide de confparm1. Ne pas oublier de les définir aussi
si confparm1 n'a pas de valeur. Par exemple dans le
fichier toto.oef
\integer{ n = \confparm1=1? randint(3..4):randint(3..4) }
\integer{ n = \confparm1=2? randint(5..7) }
\integer{ n = \confparm1=3? randint(10..12)}
On peut utiliser d'autres types de paramètres. Par exemple,
Le paramètre vaut ici
A, B ou C.
En remplaçant formradio par formcheckbox,
on autorise la sélection de plusieurs animaux.
On peut même faire entrer à l'utilisateur une variable. Voici un exemple pris
dans l'exercice Classification périodique
Dans chaque fichier oef, ne pas oublier de donner une valeur par défaut à tous les paramètres confparm1, ...
et surtout une valeur par défaut à toutes les variables aléatoires qui en dépendent.
\if{\confparm1=}{\text{confparm1=1}}
On peut de plus définir la valeur par défaut du confparm2 dans le fichier introhook.phtml en y ajoutant, en début de fichier la ligne suivante.
!default confparm2=1
Si vous désirez présenter les options en liste par exemple, il est fortement conseillé
pour l'accessibilité de procéder de la manière suivante :
La variable wims_html_mode peut aussi prendre la valeur <div>
ou <span>,
mais cela est a priori moins utile.
Utiliser des fichiers de données
On peut stocker des données dans un fichier que nous appellerons ici
tableau et les utiliser ensuite dans
un ou plusieurs exercices. Prenons l'exemple
de l'exercice de grammaire
suivant.
\title{Choix et/est/ai}
\language{fr}
\text{tableau =randomrow(
Je suis grand ??et,est,ai?? brun.
Le café ??est,et,ai?? chaud.
La fleur ??est,et,ai?? rouge.
Le soleil ??est,et,ai?? chaud
J'??ai,est,et?? chaud)}
\statement{
Faire le bon choix :
<div class="wimscenter"> \A[1;] \embed{reply 1} \A[3;] </div>
}
\answer{}{\rep[1];\good}{type=menu}
Plutôt que d'avoir les phrases dans le fichier d'exercice, créez un fichier d'adresse
tableau (attention,
cette fois-ci ne pas mettre src). Et mettez-y
le texte suivant
:Je suis grand ??et,est,ai?? brun.
Le café ??est,et,ai?? chaud.
La fleur ??est,et,ai?? rouge.
Le soleil ??est,et,ai?? chaud
J'??ai,est,et?? chaud
:L'élève ??est,et?? sérieux ??et,est?? appliqué.
Paul se ramasse ??et,est?? se relève.
Le pull ??est,et?? chaud ??et,est?? léger.
La rue ??est,et?? étroite ??et,est?? en pente.
Pierre ??est,et?? fort en mathématiques ??et,est?? en français.
La lumière sur le vieux port ??est,et?? très belle en hiver ??et,est?? en été.
Remarquez le signe de ponctuation :
que nous avons un peu grossi. Il va être possible maintenant dans un exercice de
charger ces données soit en entier, soit sélectivement pour la partie entre deux
signes : consécutifs.
Donnons les premières commandes permettant cette utilisation et qui donneront un
exercice équivalent au précédent :
\text{Tableau = wims(record 1 of tableau)}
\text{a = randomrow(\Tableau)}
record 1 chargera les cinq premières lignes
du tableau, plus exactement celles entre le premier : et
le second.
\text{Tableau = wims(record 2 of tableau)}
\text{a = randomrow(\Tableau)}
record 2 chargera les six dernières lignes
du tableau (il faudra bien sûr changer la suite de l'exercice
qui ne fonctionnera plus)
\text{Tableau = wims(record 0 of tableau)}
\text{a = randomrow(\Tableau)}
record 0 chargera toutes
les lignes du fichier tableau
\integer{m = wims(recordcnt tableau)}
\matrix{Tableau = }
\for{ i = 1 to \m}{
g\text{Tableau = \tableau
randrow(wims(record \i of tableau))}
Ici, on compte le nombre de
record (ici 2, mais il pourrait y en avoir plus).
Et on prend une ligne par type.
On pourra donc poser une question de chaque type.
Un exemple d'exercice complet
\author{Ambali}
\integer{m = randint(1..wims(recordcnt tableau))}
\matrix{Tableau = }
\text{Tableau= randrow(wims(record \m of tableau))}
\matrix{A= slib(text/cutchoices \Tableau)}
\text{cntrow=rows(\A)}
\integer{cntQ=(\cntrow-\cntrow%2)/2}
\matrix{good1=}
\text{rep= }
\for{i= 1 to \cntQ}{
\text{good=\A[2*\i;]}
\text{cnt= items(\good)}
\text{mix= shuffle(\cnt)}
\matrix{good1=\good1
\good[\mix]}
\text{rep= \rep, position(1,\mix)}
}
\text{rep=wims(nonempty items \rep)}
\text{STEP= wims(makelist r x for x = 1 to \cntQ)}
\steps{\STEP}
Donnons un autre exemple d'utilisation de tableau extérieur aux exercices.
Il s'agit de tableau de type "dictionnaire" de la forme suivante :
azote:.....
hydrogene:....
On peut alors aller chercher la ligne associée à azote avec la commande lookup
\text{ligne= wims(lookup azote in tableau)}
et récupérer ensuite les informations qui suivent et dont vous avez besoin.
Utilisation de cpp
Un exemple d'utilisation de cette "technique" est le suivant :
Vous avez un exercice avec certaines variables A et B et des relations entre A et B
et vous voulez faire un exercice où vous donnez A et demandez B et un exercice où
vous donnez B et vous demandez A. La première solution envisagée est de faire un
copier-coller et de changer juste l'énoncé.
Et puis, vous vous apercevez que vous auriez dû fixer autrement
l'aléatoire de vos variables, ou qu'il y a une erreur dans vos calculs.
Et vous devez faire attention de corriger toutes les erreurs dans tous les exercices (et si
vous êtes arrivé à en faire 6 avec les mêmes données de départ, c'est du travail ... )
Une solution (meilleure) est alors de regrouper les parties communes dans un fichier
que vous appellerez
src/cpp/toto.cpp
La première ligne de ce fichier contiendra le nom des exercices que vous voulez
créer :
target=toto1 toto2 toto3 toto4
Ensuite, chaque exercice aura un titre différent
#if defined TARGET_toto1
\title{Premier exercice}
#endif#if defined TARGET_toto2
\title{Second exercice}
#endif#if defined TARGET_toto3
\title{Troisième exercice}
#endif#if defined TARGET_toto4
\title{Quatrième exercice}
#endif
Etc ...
Vous pouvez tirer partie des commandes cpp :
Les directives #if, #ifdef, #ifndef, #else, #elif et
#endif
peuvent être utilisées pour la compilation conditionnelle
(tiré de
voir ici).
Montrons un exemple tiré de nouveau de la grammaire française
et emprunté à Jean-Baptiste Frondas.
Fichier principal
L'exercice pour fonctionner demande qu'il
ait été créé des fichiers tableau_et, tableau_ou...
target= et_est ou_ou la_la#define TITLE Choix#if defined TARGET_et_est
\title{TITLE et/est}
\text{Type=tableau_et}
#endif#if defined TARGET_ou_ou
\title{TITLE ou/où}
\text{Type=tableau_ou}
#endif#if defined TARGET_la_la
\title{TITLE la/là/l'a}
\text{Type=tableau_la}
#endif
#include "commun.inc"
\text{tableau = wims(record 0 of \Type)}
\text{a = randomrow(\tableau)}
teste si le premier champ est une question
\text{testa= wims(nospace \a)}
\text{first = wims(replace internal ? by | in wims(char 1 of \testa))}
\text{u= \first issametext | ? 1 : 0}
\text{u1 = \u = 0 ? -1:1}
\matrix{A = slib(text/cutchoices \a)}
\text{cntrow = rows(\A)}
\integer{cntQ = (\cntrow+\u1*\cntrow%2)/2}
\matrix{good1 = }
\text{rep = }
\for{i= 1 to \cntQ}{
\text{good=\A[2*\i -\u;]}
\text{cnt = items(\good)}
\text{mix = shuffle(\cnt)}
\matrix{good1=\good1
\good[\mix]}
\text{rep = \rep, position(1,\mix)}
}
\text{rep =wims(nonempty items \rep)}
\text{STEP = wims(makelist r x for x = 1 to \cntQ)}
\steps{\STEP}
Fichier inclus nommé common.inc
[non-disponible]
A suivre...
Liens sur d'autres modules
Si vous désirez faire un lien sur un autre module dans la page d'introduction, par exemple sur un document explicatif ou sur un
autre module d'exercices plus facile ou plus difficile,
rajoutez dans le fichier intro.phtml avant la ligne
!tail :
!set wims_ref_target=wims_internal
!href module=adresse_du_module nom du lien
par exemple
Vous pouvez aller voir le document
!set wims_ref_target=wims_internal
!href module=H2/algebra/docpuissance.fr Tout sur les puissances
pour réviser le cours.
(Version préliminaire valable pour la version plus grande que 4.09)
Si vous désirez faire ou faire faire une traduction dans une autre langue,
il faudra séparer un peu le code du langage. Une manière de procéder est la suivante.
Même si cela parait au départ un peu compliqué, cela est facile à mettre
en oeuvre si on y pense dès le début. Nous avons fait ce choix car il permet
de garder les exercices en format oef importables dans une classe.
Dans ce qui suit, on suppose que la langue du
module est fr et que l'on désire faire une traduction en anglais
(en), mais bien sûr toutes les configurations sont possibles !
(it, nl, es,
ca, etc.)
Copier tous les exercices *.oef qui ne sont pas créés par des fichiers cpp
dans le répertoire src/cpp
en changeant l'extension :
src/toto.oef devient src/cpp/toto.cpp
(tous les fichiers dont il sera parlé ensuite devront être créés dans le
répertoire src/cpp).
Pour un tel fichier, ajouter en haut du fichier
target=toto
(toto est le nom du fichier sans extension).
Tous les fichiers à créer dans la suite seront dans src/cpp .
Bien sûr, si vous avez déjà utilisé les fonctionnalités de cpp pour mutualiser des données
communes à plusieurs exercices, cette étape est à passer.
Créer un fichier
"common.inc"
avec la ligne
\text{lang=slib(oef/env lang)}
On peut y mettre pour commodité des instructions communes à tous les exercices
comme \author{} \precision{}.
L'inclure dans toto.cpp
#include "common.inc"
Créer un fichier lang_fr.inc et mettre dans ce fichier
ce qui dépend de la langue en créant des variables contenant
ce texte et en ce texte par la variable dans l'exercice toto.cpp.
Les variables sont par exemple du type
name_xxx de manière à bien les distinguer des variables déjà définies.
Essayez de ne mettre que du texte et le moins d'environnement de styles possibles
(ceux-ci doivent être dans le fichier principal toto.cpp).
Bien sûr, les définitions de langage vont dépendre de l'exercice,
vous devez donc certainement faire des tests sur l'exercice.
#if defined TARGET_toto
\text{name_instruction= Instruction de l'exercice toto}
#endif
#if defined TARGET_tata
\text{name_instruction= Instruction de l'exercice tata}
#endif
Créer les fichiers lang_en.inc
(ou tout autre langage) correspondants.
Créer le fichier lang.inc et indiquer quelque chose comme
Cela dépend bien sûr des langues traduites. Attention, il faut toujours qu'il y ait
un défaut: si la langue n'est pas traduite, la version originelle (ici française)
doit y être.
Dans le fichier toto.cpp, écrire quelque part
#include "lang.inc"
L'endroit dépend de ce qu'on met dedans (s'il y des variables de l'auteur, il faut
bien sûr que ces variables soient connues lorsque le fichier lang.inc
est inclus).
Faire un fichier lang_title_fr.inc
dans lequel on mettra les titres français des exercices sous la forme
#if defined TARGET_toto
# define TITLE Titre de l'exercice toto
#endif
#if defined TARGET_tata
# define TITLE Titre de l'exercice tata
#endif
et un fichier similaire par exemple
lang_title_en.inc pour le langage traduit.
#if defined TARGET_toto
# define TITLE_en Title of the exercise toto
#endif
#if defined TARGET_tata
# define TITLE_en Title of the exercise tata
#endif
Créer le fichier lang_titles.inc et indiquer quelque chose comme
On peut bien sûr faire pareil pour toutes les langues.
Dans les propriétés, dans la partie Langue (onglet Langue),
rajouter en
dans le champ Autres langues, sauver, puis y revenir :
un bouton Propriétés (Anglais) est apparu, cliquer dessus, remplir les propriétés
relatif au module (si les mots clés
ont été écrits en anglais technique, inutile de les répéter).
Regarder l'aide pour les mots clés.
A partir de la version 4.09, un choix des langues apparait dans l'introduction du module.
Vous pouvez faire des variantes, par exemple créer plusieurs fichiers du type
lang_toto_fr.inc
selon les exercices. C'est dans le fichier lang.inc
que vous indiquerez quel fichier doit être lu avec les directives cpp
#if defined TARGET_toto || defined TARGET_tata.
Si vous mettez des mots clés dans un exercice, utilisez les mots clés
en anglais technique,
ce qui évite une traduction. Les champs keywords,
credits,
description, observation
ne sont pas multilangage (ils sont de toute facon destinés uniquement
aux enseignants). Ils ne peuvent pas non plus être définis de manière multiple
conditionnée par un test.