Deutsch   English   Français   Italiano  
<9b7345d6-74ba-4cad-9ca4-260737d96c3bn@googlegroups.com>

View for Bookmarking (what is this?)
Look up another Usenet article

X-Received: by 2002:a05:622a:8b:b0:419:b54d:99b4 with SMTP id o11-20020a05622a008b00b00419b54d99b4mr487824qtw.13.1697202781634;
        Fri, 13 Oct 2023 06:13:01 -0700 (PDT)
X-Received: by 2002:a05:6808:3023:b0:3a7:45f6:4b3f with SMTP id
 ay35-20020a056808302300b003a745f64b3fmr13024328oib.3.1697202781452; Fri, 13
 Oct 2023 06:13:01 -0700 (PDT)
Path: ...!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: fr.comp.text.tex
Date: Fri, 13 Oct 2023 06:13:01 -0700 (PDT)
In-Reply-To: <a9880a47-f6ea-4097-ad43-5044b830f49fn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=102.129.143.77; posting-account=NutYcAoAAABAtPQ7tqrQXGbe3DyttJ9-
NNTP-Posting-Host: 102.129.143.77
References: <564ae975-a378-42f5-8048-691605fdeea5n@googlegroups.com>
 <ufs001$2dann$1@dont-email.me> <dca2cab4-21f2-4003-bccf-5da7a33dbc81n@googlegroups.com>
 <a9880a47-f6ea-4097-ad43-5044b830f49fn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <9b7345d6-74ba-4cad-9ca4-260737d96c3bn@googlegroups.com>
Subject: Re: \advance\toks 41{...}
From: =?UTF-8?Q?G=C3=A9rard_Lemenn?= <gouailles@gmail.com>
Injection-Date: Fri, 13 Oct 2023 13:13:01 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Bytes: 6230
Lines: 128

Le vendredi 13 octobre 2023 =C3=A0 15:02:35 UTC+2, G=C3=A9rard Lemenn a =C3=
=A9crit=C2=A0:
> Le vendredi 13 octobre 2023 =C3=A0 14:48:57 UTC+2, G=C3=A9rard Lemenn a =
=C3=A9crit :=20
> > Le samedi 7 octobre 2023 =C3=A0 18:11:48 UTC+2, Texboy a =C3=A9crit :=
=20
> > > Le 07/10/2023 =C3=A0 17:45, G=C3=A9rard Lemenn a =C3=A9crit :=20
> > > > Bonjour,=20
> > > >=20
> > > > Quelqu'un a une r=C3=A9f=C3=A9rence ou une id=C3=A9e de pourquoi on=
 ne peut pas =C3=A9crire :=20
> > > >=20
> > > > \advance\toks 41{<general text>}=20
> > > > ou=20
> > > > \advance\toks 41\toks 10=20
> > > >=20
> > > > Ce qui =C3=A9videmment serait une concat=C3=A9nation de cha=C3=AEne=
s de symboles.=20
> > > >=20
> > > > Bien s=C3=BBr on peut cr=C3=A9er une macro \toks@advance qui permet=
te cette syntaxe, mais l'id=C3=A9e serait de surtout de rendre plus rapide =
la concat=C3=A9nation de cha=C3=AEnes.=20
> > > >=20
> > > > Bonne journ=C3=A9e.=20
> > > La primitive \advance s'emploie avec la syntaxe suivante=20
> > >=20
> > > \advance<registre de compteur><[by]><nombre>=20
> > > \advance<registre de dimension><[by]><dimension>=20
> > > \advance<registre de ressort><[by]><ressort>=20
> > > \advance<registre de muressort><[by]><muressort>=20
> > >=20
> > > Pour la premi=C3=A8re, elle agit sur un compteur et l'incr=C3=A9mente=
 de l'entier=20
> > > sign=C3=A9 <nombre>. Le fonctionnement est identique pour les autres =
syntaxes.=20
> > >=20
> > > Elle ne peut pas agir sur un registre de tokens.=20
> > >=20
> > > Si vous souhaitez une macro qui ajoute un <texte g=C3=A9n=C3=A9ral> =
=C3=A0 un registre=20
> > > de tokens, vous pouvez d=C3=A9finir une macro comme par exemple :=20
> > >=20
> > > \def\addtotoks#1#2{#1\expandafter{\the#1#2}}=20
> > >=20
> > > Notez que l'argument #2 n'est pas d=C3=A9velopp=C3=A9 et donc=20
> > >=20
> > > \addtotoks{\toks41 }{\toks10 }=20
> > >=20
> > > pourra ne pas fonctionner comme attendu.=20
> > Merci.=20
> > Mais on pourrait imaginer une extension de la primitive \advance=20
> > de sorte que :=20
> > \advance\toks 0\toks 10=20
> >=20
> > concat=C3=A8ne les tokens de fa=C3=A7on beaucoup plus rapide que :=20
> > \toks 0=3D\expandafter {\the\toks \expandafter\z@ \the\toks 10}=20
> >=20
> > car avec cette =C3=A9criture, le contenu de \toks 0 est relu (comme un =
argument)=20
> > pour assigner =C3=A0 nouveau \toks 0.=20
> >=20
> > Ce qui est long dans le cas ou \toks 0 contient une longue cha=C3=AEne.=
=20
> >=20
> > De plus, =C3=A7a me para=C3=AEt esth=C3=A9tique car \advance=20
> > pourrait alors s'appliquer =C3=A0 tous les registres de eTeX.=20
> >=20
> > Bonne journ=C3=A9e.
> Pour =C3=AAtre plus pr=C3=A9cis :=20
> \toks 0=3D\toks 10=20
>=20
> est ultra rapide, car alors \toks 0 pointe sur la m=C3=AAme chaine que \t=
oks 10=20
> Il n'y a pas de copie du contenu de \toks 10 dans \toks 0.=20
> On le v=C3=A9rifie facilement avec :=20
> \loggingall \toks 0=3D\toks 10\toks 0=3D\toks 10=20
>=20
> La deuxi=C3=A8me affectation signale : "reassigning toks 0"=20
> ce qui signifie qu'eTeX ne fait rien, \toks 0 pointant d=C3=A9j=C3=A0=20
> sur la m=C3=AAme zone m=C3=A9moire que \toks 10.=20
>=20
> Les tokens registers sont extr=C3=AAmement pratiques pour pleins de raiso=
ns,=20
> et notamment aussi parce que :=20
> \edef\macro {\the\toks 0}=20
> est extr=C3=AAmement rapide, m=C3=AAme si \the\toks 0 est tr=C3=A8s long,=
 car TeX=20
> ne regarde pas dans le contenu de \toks 0.=20
>=20
> On le v=C3=A9rifie ais=C3=A9ment en mettant par exemple une s=C3=A9quence=
 \outer dans \toks 0 :=20
> \loggingall=20
> \toks 0=3D{\outermacro }=20
> \outer\def\outermacro {}=20
> \edef\macro {\the\toks 0}% no problem here: TeX does not look inside \tok=
s 0=20
> \show\macro=20
>=20
> Bon weekend.

Pour finir voici un petit code d'impl=C3=A9mentation de \advance pour les t=
okens
sous le nom de \toks@advance.

Bien s=C3=BBr, on ne peut pas pr=C3=A9fixer par \global !

Et on a besoin d'un token auxilliaire pour stocker la chaine =C3=A0 ajouter=
..
% ------------------------------------------
\def\toks@advance {\expandafter \toks@adva \romannumeral-`\q }%
\def\toks@adva    {\afterassignment \toks@advb \let\@let@token =3D}%
\def\toks@advb    {\ifx \toks\@let@token \begingroup
                            \afterassignment\toks@advc \count@ =3D%
                   \else    \afterassignment\toks@advd \toks@advtok \fi
}% \toks@advb
\def\toks@advc    {\expandafter \endgroup \expandafter \toksdef \expandafte=
r \@let@token \the\count@
                   \afterassignment\toks@advd \toks@advtok
}% \toks@advc
\def\toks@advd    {\@let@token =3D\expandafter {\the\expandafter\@let@token=
 \the\toks@advtok }}%
% -------------------------------------------

Allez. Bon weekend again !