[NTG-context] Using \overloaded

Hans Hagen j.hagen at xs4all.nl
Sun Jan 24 22:53:18 CET 2021

On 1/24/2021 10:16 PM, Rik Kabel wrote:

> I can find no information on \aliased and the push/pop for overloademode 
> and such, so will leave documenting that in the wiki to somebody with a 
> few more clues.
it will be (and often is) in documentation and manuals in the 
distribution and in articles in user group journals and so

but anyway it's kind of new and i still need to flag all visible (low 
level) macros and variables (still some 700 to go)

the same is also done for metafun (mostly done but also some to go)

it roughly works as follows:

- primitives are marked as 'primitive' (already by the engine)
- we mark all registers we allocate as 'permanent'
- most constants are marked as 'immutable'
- if we don't care (or can't) we mark something as 'mutable'
- user defined instances are 'frozen' (can be \overloaded)
- \aliased just means: take the properties (applies to \let cs)
- \enforced (in the body of a macro) does just that

the last one is special because it gets internalized in ini mode (when 
the format is made)

there are (and might be some more) flags (like \noaligned)

the other large effort is removing some indirectness (using the extended 
lightweight macro argument parsing features) (mostly done, but it can 
introduce issues due to the rather large amount of tiny adptions but 
luckily these are reported here by users)

anyway, what happens after that depends on \overloadmode (th ehigher the 
more strict, odd a warning, even an error)

it is not (and can never be) complete in terms of protection (too many 
macro definitions, also runtime) but good enough for what i have in 
mind: help users to keep their run working by not redefining essential 


                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl

More information about the ntg-context mailing list