I'm currently getting impression that everything is global in groff, except maybe when talking about environment, then it's bound to that environment. But is anything assuming the environment doesn't change is local?
I ask because reading the heirloom-doctools manual, which is a very conservative implementation (Minus a couple of groff extensions implemented) of troff, states that the requests '.lds' and '.lnr' create a register such as a number or string bound to only the macro it was created in and erased when the macro has finished releasing the memory. But searching through the groff manual, I do not right now see anything like .lds or .lnr, so is there no intention behind such a thing? That environments is the only thing bounding a register even if introduced in a macro? Maybe I'm thinking too much like a programming language such as C or Python where yes, there are very much such thing as a local variable. Is this why common groff naming convention has to name it a certain way to pretend its local? I wasn't sure and wanted to know more about this. It would either through naming or actual local requests make things a bit easier.