Accueil › Forums › Programmation WIMS › Programmation d’exercices OEF › mettre de la couleur ds les cellules d’un tableau
- Ce sujet contient 4 réponses, 4 participants et a été mis à jour pour la dernière fois par Lionel Verbecq, le il y a 2 années et 2 mois.
-
AuteurMessages
-
-
6 septembre 2022 à 00:42 #7303Lionel VerbecqParticipant::
Bonjour,
J’ai créé un tableau grâce à la slib suivante :
\text{ligne1=Nombre total de parts} \for{j=1 to \total-1}{\text{ligne1=\ligne1,*}} \text{ligne2=Nombre de parts de \name1} \if{\nbre1>1}{\for{k=1 to \nbre1-1}{\text{ligne2=\ligne2,*}}} \text{ligne2=\ligne2,Nombre de parts de \name2} \if{\nbre2>1}{\for{l=1 to \nbre2-1}{\text{ligne2=\ligne2,*}}} \text{ligne3=} \for{l=1 to \total-2}{\text{ligne3=\ligne3,}} \text{A=slib(text/matrixhtml [\ligne1;\ligne2;\ligne3],center wimsborder, COLSPAN=[1,1,\total;2,1,\nbre1;2,\nbre1+1,\nbre2])}
Je désirerai mettre les \nbre1 cellules de la ligne3 ds une couleur et les \nbre2 cellules suivantes de la ligne 3 ds une autre couleur.
Comment faire ?
Merci.
Lionel.
- Ce sujet a été modifié il y a 2 années et 3 mois par Olivier. Raison : ajout de `...`autour du code
-
6 septembre 2022 à 13:37 #7307byacheParticipant::
Bonjour,
Je n’ai pas regardé en détails mais à mon avis tu ne peux pas utiliser la slib et ajouter des styles.
Le code généré par la slib ressemble à :<table class="wimsborder wims_matrix"> <tr><td style="text-align:center" colspan="5">Nombre total de parts</td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td></tr> <tr><td style="text-align:center" colspan="6">Nombre de parts de \name1</td> <td style="text-align:center" colspan="7">Nombre de parts de \name2</td></tr> <tr><td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td> <td style="text-align:center"></td></tr> </table>
Une solution bricolée :
faire générer ce code par des boucles for sans utiliser la slib et insérer les couleurs désirées dans les valeurs de « style » concernées…
Ou alors modifier la slib en ajoutant la possibilité de mettre des styles (mais c’est nettement plus long à faire 🙂 -
6 septembre 2022 à 16:28 #7308bernadetteMaître des clés::
La matrice créée avec la slib en question a une classe css (avec un slib_id qui a une valeur bien sûr)
class= »wims_matrix$slib_id »
Tu peux alors dans le style css de wims_matrix$slib_id déclarer la couleur que tu veux dans la case que tu veux, mais là c’est une documentation sur les styles css que tu dois regarder.
Bernadette
-
7 septembre 2022 à 10:09 #7309OlivierMaître des clés::
Bonjour,
Pour faire un tableau accessible, ne mettez jamais le titre du tableau à l’intérieur d’une ligne. utilisez plutot le champ « CAPTION » qui est fait pour ca (et vous évite en plus d’avoir à calculer de vilains colspans)
Pensez également à toujours indiquer la ligne des entêtes avec l’option THVoici ensuite un exemple d’exercice avec des cases colorées :
\css{<style> .wims_matrix td{padding:0} .unepart{width:100%;height:1em} .part_1{background-color:magenta} .part_2{background-color:cyan} </style> } \integer{nbre1=randint(2..5)} \integer{nbre2=randint(3..6)} \integer{total=\nbre1+ \nbre2} \text{\name1=NAME1} \text{\name2=NAME2} \text{entetes=Nombre de parts de \name1 (\nbre1)} \text{ligne=} \for{ k1=1 to \nbre1 }{ \text{ligne=\ligne<div class="unepart part_1" title="une part de \name1"> </div>} \if{ \k1 < \nbre1 }{ \text{entetes=\entetes,*} \text{ligne=\ligne,} } } \text{entetes=\entetes,Nombre de parts de \name2 (\nbre2)} \if{\nbre2>1}{ \for{ k2=1 to \nbre2}{ \if{ \k2 < \nbre2 }{ \text{entetes=\entetes,*} } \text{ligne=\ligne,<div class="unepart part_2" title="une part de \name2"> </div>} } } \text{A=slib(text/matrixhtml [\entetes;\ligne], wimscenter wimsborder, TH=1 CAPTION="Nombre total de parts (\total)" COLSPAN=[1,1,\nbre1;1,\k1,\nbre2] )} \statement{ \A }
Olivier Bado-Faustin / Université Côte d’Azur
-
15 septembre 2022 à 09:34 #7327Lionel VerbecqParticipant
-
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.