mettre de la couleur ds les cellules d’un tableau

Accueil Forums Programmation WIMS Programmation d’exercices OEF mettre de la couleur ds les cellules d’un tableau

Vous lisez 4 fils de discussion
  • Auteur
    Messages
    • #7303
      Lionel Verbecq
      Participant
      Up
      0
      Down
      ::

      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 1 année et 8 mois par Avatar photoOlivier. Raison : ajout de `...`autour du code
    • #7307
      byache
      Participant
      Up
      0
      Down
      ::

      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 🙂

    • #7308
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      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

       

       

    • #7309
      Avatar photoOlivier
      Maître des clés
      Up
      0
      Down
      ::

      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 TH

      Voici 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

    • #7327
      Lionel Verbecq
      Participant
      Up
      0
      Down
      ::

      Bonjour à tous,

      Je vous remercie de vos réponses qui m’ont permis de m’en sortir.

      J’ai adapté la réponse d’Olivier.

      Lionel.

Vous lisez 4 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.