Sorcellerie avec les macros \csname

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Sorcellerie avec les macros \csname

Messagepar Samuel » Jeudi 27 Septembre 2018, 18:55

Bonjour,

Prof de maths dans le secondaire, je m'escrime tant bien que mal à noter mes élèves par compétences comme me le demande l'administration. Afin de pouvoir intégrer dans mes devoirs les compétences observées dès la conception de ces derniers, je souhaitais intégrer ces derniers dans une macro lors de la conception du sujet. En quelque sorte, trouver un truc du genre :

Code: Tout sélectionner
\documentclass{...}

\usepackage{competences}

\begin{document}

\Exercice

Enoncé

\begin{enumerate}
   \item question 1
      \competence{ch}{Extraire de la figure les coordonnées des points}{1,5}
   \item question 2
      \competence{ca}{Utiliser les formules de cours pour calculer les coordonnées des milieux de segments}{1,5}
      \competence{co}{Expliquer les calculs effectués par des phrases}{0,5}
   \item question 3
      \competence{ch}{Valider les résultats obtenus.}{0,5}
      \competence{re}{Passer des coordonnées de points à des positions sur une figure.}{0,5}
\end{enumerate}

\Exercice

blabla

\tableauCompetences

\end{document}


Où le \tableauCompetences récapitule toutes les compétences évaluées.

Ainsi la macro \competence{A}{B}{C} permet de renseigner :
-- A la compétence générale à évaluer (on en a 6 : Chercher, Modéliser, Représenter, Raisonner, Calculer Communiquer) que j'écris sous la forme de codes (ch, mo, re, ra, ca, co) ;
-- B désigne la capacité précise évalué précédé du numéro de l'exercice et du numéro de la question
-- C désigne le barème de la compétence.

L'idée est de faire apparaître en fin de sujet un tableau du style :

Code: Tout sélectionner
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   Compétences   |   Capacités évaluées                                                                     |    Points     |   Total     |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   Chercher      |   Ex 1 - 1) Extraire de la figure les coordonnées des points                             |        / 1.5  |             |
|                 |   Ex 1 - 3) Valider les résultats obtenus.                                               |        / 0.5  |             |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   Modéliser     |                                                                                          |               |             |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   Représenter    |   Ex 1 - 3) Passer des coordonnées de points à des positions sur une figure.   |        /0.5   |             |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| etc.


Alors pour cela, j'ai voulu faire des nouvelles commandes bien sûr. J'ai écris une macro \competence et une macro \tableauCompetences

Voici l'extension competences.sty que j'ai tapé :

Code: Tout sélectionner
\NeedsTeXFormat{LaTeX2e} %version de latex utilisée
\ProvidesPackage{competences}[26/09/2017 Classe pour faciliter les sujets évalués par compétences,V1.0] %Nom du package sans le .sty

\RequirePackage{xspace} % gestion des espaces après une macro
\RequirePackage{ifthen} % Le conditionnel


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcounter{indexcompetence}
\setcounter{indexcompetence}0

\newcommand{\competence}[3]{%
\stepcounter{indexcompetence}                %augmente le compteur de 1
\expandafter\def\csname numeroquestion\roman{indexcompetence}\endcsname{\textbf{Ex \theexercice} - \thepartie\theenumi\theenumii{} }%
\expandafter\def\csname competence\roman{indexcompetence}\endcsname{#1}% parmi ch mo re ra ca co
\expandafter\def\csname intitule\roman{indexcompetence}\endcsname{#2}%
\expandafter\def\csname bareme\roman{indexcompetence}\endcsname{#3}%
}



\def\gaddtotok#1{\global\tabtok\expandafter{\the\tabtok#1}}
\newtoks\tabtok
\newcounter{cptboucle}
\newcommand{\tabcomp}
{
   \global\tabtok{\begin{tabular}{|l|p{0.6\linewidth}|c|c|} \hline
   }
   \gaddtotok{\textbf{Compétences} & \textbf{Capacités évaluées} & \textbf{Note} & \textbf{Total} \\ \hline\hline
   }

   \gaddtotok{Chercher }
   \gaddtotok{& & & \\ }
   \setcounter{cptboucle}0
   \multido{\i=1+1}{\theindexcompetence}{
      \stepcounter{cptboucle}
      \ifthenelse{\equal{\csname competence\roman{cptboucle}\endcsname}{ch}}{\gaddtotok{ & \csname numeroquestion\roman{cptboucle}\endcsname & & \\}}{}
      }%
   \gaddtotok{\hline \end{tabular}}%

\the\tabtok



Dans la macro \competence je crée des macros grâce à \csname dans lesquelles je retiens les 3 paramètres A, B, C de tout à l'heure plus ou moins agréméntés, en augmentant les noms des macros de \roman{indexcompetence}indexcompetence est un compteur qui s'incrémente à chaque fois.
Dans la macro \tableauCompetences je crée un tableau en rappelant les macros créées en fonction des compétences évaluées (voir ici pour comprendre les macros \gaddtok et autres)

MAIS... ça ne fonctionne pas... Auriez-vous une idée du pourquoi ? Ou bien avez-vous une autre solution ? Parce que perso j'aurais préféré que ce tableau soit en début de document...

Merci d'avoir lu jusqu'au bout

Samuel
Dernière édition par Samuel le Jeudi 27 Septembre 2018, 20:34, édité 1 fois.
Samuel
Utilisateur
 
Messages: 8
Inscription: Jeudi 23 Janvier 2014, 10:53
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: sorcellerie avec les macros \csname

Messagepar un bon petit » Jeudi 27 Septembre 2018, 19:30

Samuel a écrit:MAIS... ça ne fonctionne pas... Auriez-vous une idée du pourquoi ?

Vous ne dites rien de l'erreur ou du dysfonctionnement constaté. Se contenter de « ça marche pas, savez vous pourquoi » est bien trop insuffisant pour aller se plonger à l'aveuglette dans vos codes, d'autant qu'il est impossible de tester chez soi.

Merci de bien vouloir poster un ECM, c'est-à-dire un code unique (mettez le code utile du sty en préambule entre \makeatletter et \makeatother) et montrant l'erreur ou du dysfonctionnement. Ça sera bien plus facile de vous aider.
un bon petit
Giga-utilisateur
 
Messages: 681
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: sorcellerie avec les macros \csname

Messagepar Samuel » Jeudi 27 Septembre 2018, 21:03

Ok, je me rends compte du truc...

Alors voilà un ECM (du moins j'espère) :

Code: Tout sélectionner
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}

\usepackage{multido}

%compteur de competence
\newcommand{\competence}[1]{%
   \refstepcounter{indexcompetence}
   \expandafter\def\csname compet\roman{indexcompetence}\endcsname{#1}%
}




\begin{document}

\newcounter{indexcompetence}
\setcounter{indexcompetence}0

\begin{enumerate}
   \item question 1
   \competence{Extraire de la figure les coordonnées des points}
   \item question 2
   \competence{Utiliser les formules de cours pour calculer les coordonnées des milieux de segments}
   \competence{Expliquer les calculs effectués par des phrases}
   \item question 3
   \competence{Valider les résultats obtenus.}
   \competence{Passer des coordonnées de points à des positions sur une figure.}
\end{enumerate}

theindexcompetence : \theindexcompetence

\newcounter{cptboucle}
\setcounter{cptboucle}0

\multido{\i=1+1}{\theindexcompetence}{%
\stepcounter{cptboucle}%
\csname compet\roman{cptboucle}\endcsname
}

\end{document}


Et donc mes instructions finales, à partir du \multido devraient me permettre d'écrire l'ensemble de mes compétences... mais rien ne s'écrit.
Samuel
Utilisateur
 
Messages: 8
Inscription: Jeudi 23 Janvier 2014, 10:53
Statut actuel: Actif et salarié | Enseignant

Re: sorcellerie avec les macros \csname

Messagepar un bon petit » Vendredi 28 Septembre 2018, 05:46

Il faut utiliser \gdef pour définir les compétences car elles sont définies à l'intérieur d 'un groupe.
un bon petit
Giga-utilisateur
 
Messages: 681
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Exabot [Bot] et 5 invités