Deutsch English Français Italiano |
<ugej1s$3v7g2$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!3.us.feeder.erje.net!3.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Texboy <tex.boy@teaser.fr> Newsgroups: fr.comp.text.tex Subject: Re: \advance\toks 41{...} Date: Sat, 14 Oct 2023 19:27:24 +0200 Organization: A noiseless patient Spider Lines: 40 Message-ID: <ugej1s$3v7g2$1@dont-email.me> 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> <9b7345d6-74ba-4cad-9ca4-260737d96c3bn@googlegroups.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sat, 14 Oct 2023 17:27:24 -0000 (UTC) Injection-Info: dont-email.me; posting-host="1f5dea177832168e1036da3951360e34"; logging-data="4169218"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18e52b+lUvvvlNIynUtzzprnDY6+cL4yGs=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:rhqBzL0LiN0L5a/44nopPxCcFxU= Content-Language: fr In-Reply-To: <9b7345d6-74ba-4cad-9ca4-260737d96c3bn@googlegroups.com> Bytes: 3001 Le 13/10/2023 à 15:13, Gérard Lemenn a écrit : >> Pour être plus précis : >> \toks 0=\toks 10 >> >> est ultra rapide, car alors \toks 0 pointe sur la même chaine que \toks 10 >> Il n'y a pas de copie du contenu de \toks 10 dans \toks 0. Ah ? \toks0={A} \toks10={B} \toks0=\toks10 \toks10={C} \showthe\toks0 % donne B et non pas C > Et on a besoin d'un token auxilliaire pour stocker la chaine à ajouter. > % ------------------------------------------ > \def\toks@advance {\expandafter \toks@adva \romannumeral-`\q }% > \def\toks@adva {\afterassignment \toks@advb \let\@let@token =}% > \def\toks@advb {\ifx \toks\@let@token \begingroup > \afterassignment\toks@advc \count@ =% > \else \afterassignment\toks@advd \toks@advtok \fi > }% \toks@advb > \def\toks@advc {\expandafter \endgroup \expandafter \toksdef \expandafter \@let@token \the\count@ > \afterassignment\toks@advd \toks@advtok > }% \toks@advc > \def\toks@advd {\@let@token =\expandafter {\the\expandafter\@let@token \the\toks@advtok }}% > % ------------------------------------------- Oui. Pour le sucre syntaxique et faire la distinction entre \toks<nombre> et \<toksname>, on peut aussi utiliser \meaning et alléger un peu le code. Ce qui, à mon avis, ne doit pas modifier de façon significative la vitesse d'exécution (pas testé)... \newtoks\tmptoks \newcount\tmpcount \def\toksadd{\expandafter\toksaddA\meaning} \expandafter\def\expandafter\toksaddA\string\toks{\afterassignment\toksaddB\tmpcount} \def\toksaddB{\afterassignment\toksaddC\tmptoks= } \def\toksaddC{\toks\tmpcount\expandafter{\the\toks\expandafter\tmpcount\the\tmptoks}}