Niouzes.org  

Précédent   Niouzes.org > Forum > Newsgroup fr.comp.* Forum > Newsgroup fr.comp.text.tex
S'inscrire FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus



Réponse

 

LinkBack Outils de la discussion Modes d'affichage
  #1 (permalink)  
Vieux 07/10/2008, 20h53
 
Messages: n/a
Par défaut Création d'un «accumulateur»

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



Réponse avec citation
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Niouzes.org
Standard Sponsored Links

  #2 (permalink)  
Vieux 07/10/2008, 21h51
 
Messages: n/a
Par défaut Re: Création d'un «accumulateur»

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

Réponse avec citation
  #3 (permalink)  
Vieux 11/10/2008, 12h20
 
Messages: n/a
Par défaut Re: Création d'un «accumulateur»

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

Réponse avec citation
  #4 (permalink)  
Vieux 11/10/2008, 14h10
 
Messages: n/a
Par défaut Re: Création d'un «accumulateur»

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


Réponse avec citation
 
Réponse
Tags:



Outils de la discussion
Modes d'affichage

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui



Fuseau horaire GMT. Il est actuellement 23h30.

Italiano - German - English - Español


Édité par : vBulletin® version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc. Tous droits réservés.
Version française #13 par l'association vBulletin francophone


Politique - Droit - Philosophie - Football - Medicine - Française - Bricolage - Photo - Mac Os X - Divers - Physique - Jardinage
Mecanique - Moto - Photographie - Rail - Route - Aviation - Cinema - Linux - Psychanalyse - Finance - Enigmes - Rugby
Environnement - Histoire - Programmes TV - Education - Travail - Voyages - Windows - Immobilier - Cuisine
Windows XP - Excel - Word - Outlook - Access - Internet Explorer - Office - Vista

Page generated in 0,28455 seconds with 10 queries