![]() |
| |||||||
| S'inscrire | FAQ | Membres | Calendrier | Recherche | Messages du jour | Marquer les forums comme lus |
![]() |
| LinkBack | Outils de la discussion | Modes d'affichage |
| |||
| Bonjour, je bricole un peu en LaTeX et j'aurais besoin d'avoir quelque chose qui ressemble Ã*** ça: \ajoutealaliste{a} \ajoutealaliste{b} \ajoutealaliste{c} \liste et qui me renvoit a b c Bien entendu c'est pour faire plus compliqué, mais vous voyez l'idée. DéjÃ*** je trouve que définir une «variable» (genre un \Titre{Bla} Ã*** utiliser dans un \FaireTitre) est plus que tordu, maislÃ*** je jette l'éponge. J'ai beaucoup de mal avec la programmationTeX/LaTeX, et malheureusement peu de temps pour m'y mettre. Merci de votre aide. -- Nico |
| | ||||
| ||||
| |
| |||
| On Tue, 07 Oct 2008 22:25:07 +0200 BriCaMatH <admin_c***bricamath.net> wrote: > nicolas.rassat***free.fr a écrit : > > Bonjour, > > > > je bricole un peu en LaTeX et j'aurais besoin d'avoir quelque chose quiressemble Ã*** ça: > > > > \ajoutealaliste{a} > > \ajoutealaliste{b} > > \ajoutealaliste{c} > > > > \liste > > > > et qui me renvoit > > > > a > > b > > c > > > > Je pense que la macro LaTeX > \g***addto***macro > est faite pour toi ! > Glop glop! Ça me semble parfaitement convenir. Je teste ça sur mon exemple réel et je te dis si ça foire. Merci. -- Nico |
| |||
| Bon, les \g***addto***macro ça marche tout bien mais je voudrais pouvoir faire quelque chose comme: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% \documentclass[a4paper]{article} \makeatletter \def\Nom#1{\ifx{#1}{}\edef\***Nom{}% \else\edef\***Nom{#1}\fi} \Nom{} \def\Liste{} \newcommand\AjouteListe[1]{\g***addto***macro\Liste{#1 \***Nom.\\}} \makeatother \begin{document} \Nom{Pierre} \AjouteListe{Bonjour} \Nom{Paul} \AjouteListe{Bonjour aussi} \Liste{} \end{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%% J'obtient: Bonjour Paul. Bonjour aussi Paul. Et je voudrais bien entendu Bonjour Pierre. Bonjour aussi Paul. Je me doute bien qu'il est question d'expand quelque chose, mais je ne sait pas quoi ni comment. Merci. -- Nico |
| |||
| On Sat, 11 Oct 2008 14:10:41 +0200 mpg <mpg***elzevir.fr> wrote: > Le (on) samedi 11 octobre 2008 13:20, nicolas.rassat***free.fr a écrit > (wrote) : > > > \def\Nom#1{\ifx{#1}{}\edef\***Nom{}% > > \else\edef\***Nom{#1}\fi} > > \Nom{} > > > Euh, d'une part \ifx ne marche pas comme ça : ses « arguments » sont deux > lexèmes, un point c'est tout, pas moyen de le forcer Ã*** faire autrement avec > des accolades. Pour savoir si un truc est vide, on peut utiliser \***ifmtarg, > du paquet éponyme. > > D'autre part, lÃ*** je vois pas trop l'intérêt du test : si #1 et vide, alors > la définition de \***Nom est vide, sinon c'est #1 : en clair la définition de > \***Nom est toujours #1, non ? > > Donc Ã*** moins que j'aie mal lu : > > \newcommand*\Nom[1]{% > \edef\***Nom{#1}} > > (Pourquoi utiliser \def, aussi ?) La façon de définir \***Nom (et de mal utiliser \ifx et autre \def)je l'ai trouvée sur je ne sais plus quelle FAQ. Ça ne sort donc pas de mon esprit tordu (il y en a déjÃ*** suffisamment). Je crois que j'ai oublié de dire que j'étais une grosse buse en (La)TeX. En tout cas merci pour le \***ifmtarg, il va me resservir. > > \def\Liste{} > > \newcommand\AjouteListe[1]{\g***addto***macro\Liste{#1 \***Nom.\\}} > > > C'est effectivement ici que réside ton problème de développement. Un conseil > très général pour déboguer : plutôt que de mettre \Liste Ã*** la fin de de > voir ce que ça donne, mets plutôt \meaning\Liste : tu vois ainsi la > définition courante de \Liste, qui sur cet exemple va ressembler Ã*** : > > Bonjour \***Nom.\\ Bonjour aussi \***Nom.\\ > > ce qui montre tout de suite où est le problème (j'espère). Je suis une buse mais quand même! ;-) > > Je me doute bien qu'il est question d'expand quelque chose, mais je ne > > sait pas quoi ni comment. > > > Donc tu avais raison ; il faut développer \***Nom avant de l'ajouter Ã*** \Liste. > Ici, je pense que le plus simple est d'utiliser un \edef, vu que l'usage > semble n'impliquer que des chaînes de caractères. Bon, quand jedis \edef, > je pense bien sûr \protected***edef : on ne devrait jamais utiliser \edef > tout nu sans une bonne raison... En convertissant en \newcommand les > quelques \def injustifiés, ça donnerait le code ci-dessous. > > (Essayer de remplacer le \protected***edef par un \edef pour voir comment ça > casse sur le \o. En même temps, si on utilise que des caractères qui sont > dans l'encodage de sortie, ça passe avec le \edef., mais ce n'est pas une > bonne habitude Ã*** prendre.) Ça marche. Mais je crois qu'il est plus que temps que je me mette _vraiment_ dans la doc plutôt que de bricoler au petit bonheur la chance. D'ailleurs, par quoi commencer? le TeXbook? Est ce que c'est pas trop limité Ã*** TeX par rapport Ã*** LaTeX? Est ce une question qui mérite un autre fil? En tout cas, merci du coup de main. -- Nico |
| |
| |
![]() |
| Tags: |
| Outils de la discussion | |
| Modes d'affichage | |
| |