Deutsch   English   Français   Italiano  
<a9880a47-f6ea-4097-ad43-5044b830f49fn@googlegroups.com>

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

X-Received: by 2002:a05:622a:1982:b0:410:9089:6b5e with SMTP id u2-20020a05622a198200b0041090896b5emr457453qtc.3.1697202153952;
        Fri, 13 Oct 2023 06:02:33 -0700 (PDT)
X-Received: by 2002:a05:6870:bf97:b0:1e9:9b7f:a04f with SMTP id
 av23-20020a056870bf9700b001e99b7fa04fmr1975827oac.6.1697202153337; Fri, 13
 Oct 2023 06:02:33 -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:02:33 -0700 (PDT)
In-Reply-To: <dca2cab4-21f2-4003-bccf-5da7a33dbc81n@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>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a9880a47-f6ea-4097-ad43-5044b830f49fn@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:02:33 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Bytes: 4847
Lines: 97

Le vendredi 13 octobre 2023 =C3=A0 14:48:57 UTC+2, G=C3=A9rard Lemenn a =C3=
=A9crit=C2=A0:
> 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 n=
e 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=AEnes =
de symboles.=20
> > >=20
> > > Bien s=C3=BBr on peut cr=C3=A9er une macro \toks@advance qui permette=
 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 d=
e l'entier=20
> > sign=C3=A9 <nombre>. Le fonctionnement est identique pour les autres sy=
ntaxes.=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.
> 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 ar=
gument)=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 :
   \toks 0=3D\toks 10

est ultra rapide, car alors \toks 0 pointe sur la m=C3=AAme chaine que \tok=
s 10
Il n'y a pas de copie du contenu de \toks 10 dans \toks 0.
On le v=C3=A9rifie facilement avec :
  \loggingall \toks 0=3D\toks 10\toks 0=3D\toks 10

La deuxi=C3=A8me affectation signale : "reassigning toks 0"
ce qui signifie qu'eTeX ne fait rien, \toks 0 pointant d=C3=A9j=C3=A0
sur la m=C3=AAme zone m=C3=A9moire que \toks 10.

Les tokens registers sont extr=C3=AAmement pratiques pour pleins de raisons=
,
et notamment aussi parce que :
    \edef\macro {\the\toks 0}
est extr=C3=AAmement rapide, m=C3=AAme si \the\toks 0 est tr=C3=A8s long, c=
ar TeX
ne regarde pas dans le contenu de \toks 0.

On le v=C3=A9rifie ais=C3=A9ment en mettant par exemple une s=C3=A9quence \=
outer dans \toks 0 :
    \loggingall
    \toks 0=3D{\outermacro }
    \outer\def\outermacro {}
    \edef\macro {\the\toks 0}%  no problem here: TeX does not look inside \=
toks 0
\show\macro

Bon weekend.