Latex2wims est une moulinette qui transforme un fichier LateX bien préparé en document WIMS ; on obtient aussi une version pdf : Démarrer avec Latex2wims
\def{text liste = 1,2, x, 3/4} \def{text s = item(3,\liste)} ou \def{text s = \liste[3]}
\def{matrix A = la fonction est positive, oui la fonction est négative, non} \def{text s = item(1,row(2,\A))} ou \def{text s = \A[2;1]}
Pour la suite, utilisez le lien Suiv. dans le bandeau ou une flèche latérale.
La boucle \for{i=1 to 10}{\i, } permet d'afficher les entiers de 1 à 10.
Ce premier exemple utilise la commande \if.
Le code :\def{ text mot = randitem( exercice, exercices) } \if{\mot issametext exercice}{un}{des}\motdonne
Dans cet exemple, il y a peu d'aléatoire (deux cas) donc le renouvellement ne produit pas nécessairement de changement.
Ce deuxième exemple utilise une forme plus synthétique en cas d'alternative. Noter le point d'interrogation pour la condition et les deux points qui séparent les deux alternatives.
Le code :\def{ integer p = random(-1,+1)*random(1..10) } \def{ text signe = \p>0? positif:négatif } L'entier \n est strictement \signe.donne
\form{.}{expform}{ Entrez une expression numérique à calculer : <input size = "30" name = "parm1" value = "\parm1"/> <input type = "submit" value = "OK"/> } \def{real N = \parm1} L'expression vaut \N.donne
\def{integer parm2=randint(0 .. 9)} \def{integer parm3=randint(0 .. 9)} \form{.}{expform}{ Entrez deux entiers : <input size = "10" name = "parm2" value = "\parm2"/> et <input size = "10" name = parm3 value = "\parm3"/> <input type = "submit" value = "OK"/> } \def{integer N = \parm3 + \parm2 : 0} La somme des entiers \(\parm2) et \(\parm3) vaut \(\N).
WIMS propose différents outils rapides qu'on peut insérer dans une page html donc dans un DocWims. En voici un exemple avec une question à données aléatoires.
Tous les détails sont dans l'aide des documents, rubrique Utilisation de Variables dans un Document.
ExemplesSi on veut cacher la solution d'un exemple et ne l'afficher qu'à la demande, il est impossible de la mettre dans un pli car à l'ouverture du pli, les données sont renouvelées. C'est pourquoi, on utilise la commande \link pour transmettre les paramètres.
Voici trois exemples avec leur code. Le code du premier est commenté en détail pour vous permettre de comprendre la méthode.
Quand on crée un pli avec \fold, on crée automatiquement un lien vers une deuxième version de la page qui contient le texte du pli ; alors les paramètres aléatoires de la page sont rechargés et donc différents. La solution contenue dans le pli ne correspond donc pas à la question posée.
Pour éviter cela, on utilise la commande \link qui permet de recharger la même page dans une version différente et de transmettre les paramètres nécessaires au calcul de la solution. Voici comment faire :
\def{text lien=\N=1 ? Solution:Nouvelle question}
\link{.}{\lien}{exemple}{parm1=\N&parm2=\p&parm3=\q}. On définit donc p et q selon la valeur de N par les lignes suivantes :
\def{integer p=\N=1 ? random(2..10):\parm2} \def{integer q=\N=1 ? random(1..5):\parm3}
\def{integer N = \parm1 = 1 ? 2 : 1} \def{text lien=\N=1 ? Solution:Nouvelle question} \def{integer p=\N=1 ? random(2..10):\parm2} \def{integer q=\N=1 ? random(1..5):\parm3} \def{text liste=\q} \for{i=2 to \p}{ \def{integer r=\i*\q} \def{text liste=\liste, \r} } \def{text reponse=\N=2 ? La solution est \liste: }
Compte de \q en \q de \q à \r. \reponse \link{.}{\lien}{exemple}{parm1=\N&parm2=\p&parm3=\q}
Cet exemple, comme souvent, n'est pas programmé comme on résout l'exercice. On se donne des racines aléatoires et on établit l'équation. Les paramètres à transmettre seront donc les racines et bien sûr le paramètre N qui décide du choix entre l'affichage du lien solution ou l'affichage de la solution et du lien renouveler l'exemple.
\def{integer N = \parm1 = 1 ? 2 : 1} \def{text lien=\N=1 ? Solution:Nouvelle équation}Voici la mise en place des données de l'exemple.
\def{integer e = \N=1 ? random(1..4):\parm2} \def{integer f = \N=1 ? random(-2..5):\parm3}Calcul nécessaire pour établir l'équation et la solution.
\def{integer b = -(\e + (\f))} \def{integer c = \e*\f} \def{integer d = (\b)^2-4*(\c)} \def{text E = maxima(x^2+\b*x+\c)}Affichage de l'énoncé.
Résoudre l'équation \(\E = 0).Affichage de la solution quand N vaut 2. La solution dépend de la valeur du discriminant.
\if{\N=2}{Le discriminant vaut \(\d).} \if{\d = 0 and \N=2}{L'équation a une seule solution : \(\alpha = \e).} \if{\d <≶ 0 and \N=2}{L'équation a deux solutions : \(\alpha = \e) et \(\beta = \f).}Voici la commande qui transmet les paramètres et affiche le lien pour recharger la page.
\link{.}{\lien}{exemple}{parm1=\N&parm2=\e&parm3=\f}
6 | 9 |
Quel est le coefficient de proportionnalité entre les lignes ?
Réfléchis puis regarde la réponse\def{integer N = \parm1= 1 ? 2 : 1} \def{text lien=\N=1 ? Réfléchis puis regarde la réponse:Nouvelle question}Source de l'exercice
\def{rational prop=\N=1 ? random(randint(2..9), random(3/2,1/2,5/2)):\parm2} \def{integer a=\N=1 ? randint(3..6):\parm3} \def{integer b=\N=1 ? randint(4..9):\parm4} \def{integer b=\a=\b? \b+1} \def{rational aa=\a*\prop} \def{rational bb=\b*\prop} \def{text pr=\prop} \def{text choix=\N=1 ? random(1,2,3,4):\parm5}Construction de la réponse
\def{text tableauReponse=<table class="wimscenter wimsborder"> <tr><td>\a</td> <td>\b</td></tr> <tr><td>\aa</td> <td>\bb</td> </tr> </table> <br> Le coefficient de proportionnalité entre les lignes est \pr.}Définition de la variable reponse qui est vide si N vaut 1.
\def{text reponse=\N=2 ? La solution est \tableauReponse:}Affichage de l'énoncé
Complète le tableau de proportionnalité suivant : <table class="wimscenter wimsborder"> <tr><td> \if{\choix=1}{ }{\a}</td><td>\if{\choix=2}{ }{\b}</td></tr> <tr><td>\if{\choix=3}{ }{\aa}</td><td> \if{\choix=4}{ }{\bb}</td> </tr> </table><br> Quel est le coefficient de proportionnalité entre les lignes ?Affichage de la variable reponse et du lien pour renouveler l'exemple ou afficher la réponse.
\reponse <br> \link{.}{\lien}{}{parm1=\N&parm2=\prop&parm3=\a&parm4=\b&parm5=\choix}
Pour les dessins dynamiques à l'aide de commandes WIMS, consultez
Quelle est l'équation de la droite représentée ci-contre ?
\def{integer P = \parm1 = 1 ? 2 : 1} \def{text lien=\P=1 ? Réponse:Nouvelle droite}Définition de paramètres
\def{integer a=\P=1 ?randint(1..4):\parm2} \def{integer b=\P=1 ?randint(1..6):\parm3}Equations possibles avec les différentes propriétés
\def{matrix M=\a*x + \b, positive, positif, croît, positif - \a*x +\b, positive, positif, décroît, négatif \a*x - \b, négative, négatif, croît, positif - \a*x - \b, négative, négatif, décroît, négatif}Construction de la liste d'équations
\def{integer r=rows(\M)} \def{text liste=y = texmath(pari(\M[1;1]))} \for{j=2 to \r}{ \def{text liste=\liste,y = texmath(pari(\M[\j;1]))}}Choix de la droite dessinée avec transfert du choix.
\def{integer n=\P=1?randint(1..\r):\parm4} \def{function f=maxima(\M[\n;1])}Figure
\def{text dessin = xrange -7.2,7.2 yrange -7.2,7.2 hline 0,0,black arrow 0,0,1,0,8, black arrow 0,0,0,1,8, black text black,0.2,-0.2,medium,0 text black,6.8,-0.2,medium,x text black,0.2,7,medium,y vline 0,0,black } \def{text graphe=plot red, \f}Solution
\def{text solution= Soit \(y=ax+b) une équation de la droite représentée. <ul><li> Comme la droite rencontre l'axe des y en un point d'ordonnée \M[\n;2], le nombre \(b) est \M[\n;3].</li> <li> Comme sur la droite, \(y) \M[\n;4] avec \(x), le nombre \(a) est \M[\n;5].</li></ul> Une équation de la droite est donc \liste[\n].<br>}Définition des deux valeurs de la variable solution affichée à la fin de l'énoncé.
\def{text solution=\P=2? \solution:}Enoncé
<div class="flaot_right"> \draw{ 200,200 }{ \dessin \graphe} </div>Lien pour accéder à la solution (les paramètres sont transmis} ou obtenir une nouvelle droite
Quelle est l'équation de la droite représentée ci-contre ? <ul> <li>\liste[1]</li> <li>\liste[2]</li> <li>\liste[3]</li> <li>\liste[4]</li></ul> </td> <td width="50%">
\solution
\link{.}{\lien}{exemple}{parm1=\P&parm2=\a&parm3=\b&parm4=\n}
\def{integer e = random(1..4)} \def{integer f = random(-2..5)} \def{integer b = -(\e + (\f))} \def{integer c = \e*\f} \def{integer d = (\b)^2 - 4*(\c)} \def{text E=maxima(x^2 + \b*x + \c)} \def{real s1=-\b/2} \def{real s2=-\d/4}
Voici la parabole d'équation \(y = \E) :
\draw{300,300}{xrange -10.2,10.2 yrange -10.2,10.2 parallel -10,-10,10,-10,0,1,21, grey parallel -10,-10,-10,10,1,0,21, grey hline 0,0,black arrow 0,0,1,0,8, black arrow 0,0,0,1,8, black vline 0,0,black plot blue , \E fcircle \e,0,6,red fcircle \f,0,6,red fcircle \s1,\s2,6,green}
Les points rouges ont pour abscisse les solutions \(\e) et \(\f) de l'équation \(\E = 0).
Le point vert est le sommet de la parabole. Ses coordonnées sont \((-\frac{b}{2},-\frac{\Delta}{4})), soit dans notre exemple \((\s1, \s2)).
\reload{Autre dessin}
Le segment rouge a pour longueur de la longueur du segment [A B].
Le segment vert a pour longueur de la longueur du segment [A B].
Les fractions ont même dénominateur, la plus grande est celle dont le numérateur est le plus grand.
Code de cet exemple\def{integer den=random(3,4,5,6,10,12,15,24,30)} \def{integer num1=randint(1..\den-1)} \def{integer num2=randint(1..\den-2)} \def{integer num2=\num1=\num2?\num2 +1:\num2} \def{integer espace=60/\den} \def{rational f1=\num1*\espace} \def{rational f2=\num2*\espace} \def{text fraction1=texmath(\num1/\den)} \def{text fraction2=texmath(\num2/\den)} \def{text droite1=xrange -0.2,60.2 yrange -1.5,3 linewidth 3 hline 0,0,black parallel 0,-0.7,0,0.7,\espace,0,\den,blue linewidth 6 line 0,-1,0,1,black text black,0,2,medium,A line 60,-1,60,1,black text black,59,2,medium,B line 0,0.4,\f1,0.4,red line 0,-0.4,\f2,-0.4,green }
On pourrait illustrer de même le cas où les fractions ont même numérateur.
Voici le barycentre G de { (A;),(B; - )} :
Code de l'exercice de la page précédente
Choix paramètre entier ou rationnel mais on ne veut pas c=1.
\def{integer choix=random(1,2)} \def{integer b=random(1..5)} \def{rational c=\choix=1?random(-1,-2,2):random(-1,-2,-3,2,3)/\b} \def{rational c=\c=1?2} \def{rational ca=1-\c}
Définitions pour l'énoncé :
\def{text s1=\c>0?+:-} \def{rational mc=-1*(\c)} \def{text tc=\c>0?\c:\mc} \def{text tc=wims(replace internal / by , in \tc)} \def{text tc=items(\tc)>1?\frac{\tc[1]}{\tc[2]}} \def{text tca=\ca} \def{text tca=wims(replace internal / by , in \tca)} \def{text tca=items(\tca)>1?\frac{\tca[1]}{\tca[2]}}
Définitions pour le dessin :
\def{integer fx=\c*(\b)} \def{integer fy=0} \def{integer Ox=403} \def{integer ex=31} \def{integer \fxx=\Ox+\ex*\fx} \def{integer \fxxm=\fxx-0.3*\ex} \def{integer \fxxp=\fxx+0.3*\ex} \def{text repimage=xrange -13,13 yrange -1.5,3 hline 0,0,red parallel -12,-0.2,-12,0.2,1,0,2,blue parallel -10,-0.4,-10,0.4,5,0,5,blue parallel -9,-0.2,-9,0.2,1,0,4,blue parallel -4,-0.2,-4,0.2,1,0,4,blue parallel 1,-0.2,1,0.2,1,0,4,blue parallel 6,-0.2,6,0.2,1,0,4,blue parallel 11,-0.2,11,0.2,1,0,2,blue text red,-0.1,1.5,medium,A text red,\b-0.1,1.5,medium,B text green,\fx-0.1,-0.5,medium,G line 0,-0.2,\a,0.2,red line \b,-0.2,\b,0.2,red line \fx,-0.2,\fx,0.2,red }Enoncé :
Voici le barycentre \(G) de {\((A,\tca),(B, \s1 \tc))} : <center> \draw{800,64}{\repimage} </center> \reload{Nouveau barycentre}
Pour l'insertion de figures GeoGebra, deux méthodes sont possibles (chaque lien envoie vers les détails de la méthode)
Si vous avez plusieurs figures GeoGebra dans votre DocWIMS, vous devez les numéroter pour éviter des problèmes d'affichage. Ajoutez number=1; à la liste des commandes dans le slib de la figure 1. Voyez sur le code des exemples.
Exemples avec GeoGebraPour insérer une figure GeoGebra on utilise la commande slib(geo2D/geogebra ...).
WIMS utilise un GeoGebra présent sur son propre serveur,
donc sans recours à une connexion extérieure. Les figures sont affichées en html 5.
Pour centrer la figure, on utilise la balise div (voir
Code de l'exemple
).
Pour accéder à l'aide des slib, choisir, dans la page d'accueil du serveur,
Doc technique puis le paragraphe 8 List of slib et enfin geo2D/geogebra.
Méthode d'accès direct : Par ce
lien
,
vous accédez à la documentation technique puis directement à l'aide du slib geo2D/geogebra
en cliquant sur List of slib).
On peut insérer la figure sous forme de fichier : on le dépose dans les fichiers du DocWims (lien Dépôt de fichier) et on utilise la commande file=fichier.ggb;. Exemple de la médiatrice
On peut aussi construire la figure avec les commandes GeoGebra, par exemple A=(\a,\b) si a et b sont les coordonnées (aléatoires) du point A. C'est ainsi qu'on peut utiliser, dans une figure GeoGebra d'un Doc WIMS, des paramètres aléatoires définis au préalable. Le lecteur doit initialiser la figure pour que les objets apparaissent.
Quand une figure GeoGebra est construite, on peut afficher dans le protocole de construction les seules colonnes nom et commande, puis l'exporter en page web ; on obtient alors, dans la page qui s'affiche dans le navigateur et dans le source de la page html, la liste des commandes utiles pour reconstruire la figure en ligne de commande dans le slib(geo2D/geogebra ...).
Voici le code pour l'affichage de ce cube tronqué. On aurait pu ajouter des commandes comme en 2D.
\def{text appletoption=file=CubeTronque.ggb enable3d=true width=500; height=400; number=1; } \def{text Cube=slib(geo2D/geogebra \appletoption)} <div class="wimscenter">\Cube</div>
Le point vert P est mobile. Sa position rouge M au milieu de l'arête permet d'afficher le cuboctaèdre. Quand P est en Q, on affiche un cube tronqué.
Le site geogebratube est un site de partage de ressources GeoGebra. Pour l'utiliser, vous devez créer un compte. Une figure déposée peut être privée, partagée ou publique. Les figures partagées peuvent être affichées dans un document WIMS. Cet affichage dépend du serveur geogebratube.
Ces méthodes permettent l'affichage des figures 3D.
Voici le code qui a servi à afficher cette figure . Les retours à la ligne permettent de le visualiser complétement mais sont inutiles.
<iframe scrolling="no" src="https://www.geogebra.org/material/iframe/id/GzEhvN2j/width/655/height/460/ border/888888/smb/false/stb/false/stbh/false/ai/false/asb/false/sri/false/rc/false/ld/false/sdz/false/ctl/false" width="655px" height="460px" style="border:0px;"> </iframe>
Le nombre après id est utilisé pour afficher la figure avec le slib.
Le reste code les options choisies avant de copier le code, en particulier la taille de la figure qu'on peut modifier directement dans ce code.
Pour utiliser latex2wims, il faut disposer d'un compte modtool. Pour obtenir un compte Modtool, écrire au gestionnaire du site afin d'obtenir une identification du développeur (login, mot de passe). En attendant un compte Modtool, on peut télécharger la documentation (disponible à la page de Createxo) et composer le fichier LateX qui sera transformé.