Mike Bianchi: > Anton, > > Since HX, HY and HZ are initialized as empty, and hence no-ops, using them to > do anything that works for you is just fine. > > The one thing to be careful of is using knowledge of the implementation > obtained by reading the code. Any of that can be changed. > > In this case, you use the }0 string, which is documented in the code > (file m.tmac) as being available for use within a user-provided HX macro. > I'd say you are very safe there. > > Using a as the name of a number register is more risky as it could easily > conflict with another temporary register elsewhere. groff supports long > names and that helps avoid collisions. (See register temp_indent_ below.) > (I always use the \*[name], \n[name], etc. style of reference, even for > 1- and 2-character references. They stand out better and all references > look alike.) > > In playing with your example, I found that it was nroff specific, since > .length gives a character count and your indent and outdent are in terms > of n units. The following also works in troff/groff. It obtains the > width of the }0 mark in troff/groff's "units" (aka "scaled points") > from the \w'string' escape sequence, and then uses it that way. >
Thank you very much, Mike Anton