Hi Hans,
Thank you for all these explanations.
Fabrice

Le dim. 25 janv. 2026 à 16:05, Hans Hagen via ntg-context
<[email protected]> a écrit :
>
> On 1/25/2026 3:43 PM, Fabrice Couvreur wrote:
> > Hi,
> > Thanks for your suggestions, they work !
> >
> > However, I'm not sure I fully understand : why do the letters p, P, m or
> > M generate this error when they work in the example below ?
> >
> > \starttext
> >
> > \hskip 1em n=0
> >
> > \stoptext
>
> Because only "plus", "minus" and sometimes "limit" are valid keywords
> for glue. So anything other than p P m M l L will be seen and end of the
> specification.
>
> Original tex does this:
>
> pick up dimen
>
> loop
>
>    check if we have "plus" and if so pickup dimen else push back
> whatever read so far (expansion during scanning)
>
>    check if we have "minus" and if so pickup dimen else push back
> whatever read so far (expansion during scanning)
>
>   if none of these quit loop
>
> end
>
> So, when we have many keywords, there's a lot of pickup and push back
> happening (which involves expansion, building token lists, pushing back
> collected stuff, pushing input level etc)
>
> In luametatex we have a bit more efficient approach but as a result we
> don't pickup what doesn't need to be picked up.
>
> Anyway, in all these lookahead situations, it's best to be explicit when
> you want scanning to end, so
>
> \hskip .... \relax
> \hrule .... \relax
>
> or as Wolfgang explains, use {} as delimiters. Of course scanning also
> stops when no letter is seen.
>
> Scanning is case insensitive so PlUs is valid. Not making sure that
> scanning is terminated when lookahead can happen is basically an error.
>
> Think of a macro package doing:
>
>     \def\foo{\hskip3em}
>
> and then the user:
>
>     test \foo plus a bit more
>
> you don't want such errors so
>
>     \def\foo{\hskip3em\relax}
>
> is a way out.
>
> (Scanning is discussed in some docs in the distribution.)
>
> Hans
>
> -----------------------------------------------------------------
>                                            Hans Hagen | PRAGMA ADE
>                Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
>         tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
> -----------------------------------------------------------------
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the 
> Wiki!
>
> maillist : [email protected] / 
> https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
> webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
> archive  : https://github.com/contextgarden/context
> wiki     : https://wiki.contextgarden.net
> ___________________________________________________________________________________
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : [email protected] / 
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive  : https://github.com/contextgarden/context
wiki     : https://wiki.contextgarden.net
___________________________________________________________________________________

Reply via email to