Forum Programmation.autre [LaTeX] ajouter du contenu étalé dans une macro

Posté par .
Tags : aucun
1
3
mai
2010

Bonjour,



Je me bricole un paquet (un peut cracra mais tant que ça marche...) pour gérer l'affichage d'informations sur des machines de mon parc.



Je vous met ci-dessous les parties importantes pour le problème que j'ai.




\RequirePackage[autolanguage,np]{numprint}
\RequirePackage{fp}

\newcommand{\ListePartoches}{}

\newenvironment{machine}[1]{%%
\renewcommand{\ListePartoches}{}
}{
\ListePartoches
}

\newenvironment{partitions}{%
\xdef\backup@espacetotal{0}%
\xdef\backup@espaceutilise{0}%
\xdef\machine@espacetotal{0}%
\xdef\machine@espaceutilise{0}%
\xdef\total{0}%
\xdef\utilise{0}%
\newcommand{\Partition}[3] {% label, utilise, total
\FPset\utilise{##2}%
\FPset\total{##3}%
% divers calculs qui font que j'ai ce que je veux dans \utilise et \total
% puisque si je les affiche betement tout est correct
\addto\ListePartoches{##1 & \numprint[Gio]{\total} & \condMev{\utilise} \\}% condMev c'est une macro qui met le truc en valeur si ça dépasse un certain seuil
% C'est la ligne ci-dessus qui me pose problème
}
\newcommand{\Sauvegarde}[2] {% utilise, total
% des petits calculs qui n'ont pas d'importance ici
}
\addto\ListePartoches{\begin{tabular}[c]{|l|r|r|}\hline}%
\addto\ListePartoches{\multicolumn{1}{|c|}{Partition} & \multicolumn{1}{c|}{Total} & \multicolumn{1}{c|}{Utilisé} \\ \hline}%
}{%
\addto\ListePartoches{\hline}
% d'autres calculs qui fonctionnent
\addto\ListePartoches{Total & \numprint[Gio]{\machine@espacetotal} & \condMev{\machine@espaceutilise}\\ \hline \hline}%
\addto\ListePartoches{Sauvegarde & \numprint[Gio]{\backup@espacetotal} & \condMev{\backup@espaceutilise}\\ \hline}%
\addto\ListePartoches{\end{tabular} }
}


Voila, en gros, comment je peux l'utiliser :




\begin{machine}{maMachine}
\begin{partitions}
\Sauvegarde{15}{250}%
\Partition{/}{7.6}{30}
\Partition{/var}{5}{20.7}
\Partition{/home}{78.1}{105.3}
\end{partitions}
\end{machine}


Mon problème c'est qu'à l'heure actuelle la ligne
« \addto\ListePartoches{##1 & \numprint[Gio]{\total} & \condMev{\utilise} \\} »
ajoute « ##1 & \numprint[Gio]{\total} & \condMev{\utilise} \\ » à « \ListePartoches »
alors que je voudrais que ça ajoute la version après étalement partiel.



(genre « /var & 20.7 Gio & 25% \\ ») parce que là j'ai toujours la même ligne (la dernière, répétée n fois) dans mon tableau (parce que l'étalement est fait une fois que toutes les partitions ont été ajoutées (donc il n'y a que la dernière stockée dans les variables).



Je me perd un peu dans avec \expandafter, \noexpand, et autres \edef et je n'ai pas réussi à avoir un résultat encourageant pour l'instant.



Voyez-vous le problème ?



Y a t'il des LaTeXperts dans la salle ?



Merci.

  • # Bienvenue dans le monde merveilleux de TeX!

    Posté par . Évalué à 3.

    Bonjour,

    Pour commencer, je te signale que tu as un problème de TeX, pas de LaTeX, d'où la difficulté :)

    Pour le résoudre, j'ai fait quelques essais de mon côté, voici la solution que je te propose, qui me semble la plus simple:

    Étape 1: Tu vas créer la fonction TeX suivante:
    \def\addto@partition[#1|#2|#3]{%
       \addto\ListePartoches{#1 & \numprint[Gio]{#2} & \condMev{#3} \\}%
    }


    Étape 2: Dans la définition de \Partition, quand tu veux insérer la ligne, tu fait ceci, toujours en TeX:
    \begingroup
       \edef\@gtempa{[##1|\total|\utilise]}
       \expandafter\addto@part\@gtempa
    \endgroup


    Et voila, ça fonctionne!

    Au passage, je te propose de remplacer #1 par \texttt{#1} dans l'appel \addto\ListePartoches pour un meilleur aspect.
    • [^] # Re: Bienvenue dans le monde merveilleux de TeX!

      Posté par . Évalué à 2.

      Wouhou, merveilleux. Ça marche nickel.

      Bon alors, oui je me doutais bien que c'était pas un bête problème LaTeX, maintenant je sais que je viens de faire mes premiers pas dans le monde merveilleux de TeX.

      Tu as fais une coquille : \expandafter\addto@partition\@gtempa au lieu de \expandafter\addto@part\@gtempa.

      Et oui, c'est plus sympa avec le rendu en chasse fixe, j'avoue que j'étais plus penché sur le code que le rendu pour l'instant.

      Merci beaucoup pour le coup de main.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.