In technical writing, it is a well-understood practice to expand the meaning of an abbreviation/acronym on its first usage. It is also sometimes recommended to additionally expand it after some stretch of text (I've seen suggestions as frequently as each paragraph, to infrequently as each section/chapter; I am a fan of re-expansion after a page break), to remind the reader in case they forgot since they first saw it.
I was wondering if anyone had ever written a macro to automate this? I haven't actually made any attempts myself, which I know is a little rude, but I don't really have need of one right now, and am moreso curious about the techniques that could be used to accomplish this. What I was particularly pondering was the process to employ to decide when to expand the name additional times -- the "reader reminder" I mentioned at the start. Perhaps traps could be used for this? I don't have much expertise with them; only time I've tried to use one I horribly failed... You could also couple the abbreviation mechanism with your paragraph/sectioning macros to have them trigger a "reset", if you wished to trigger re-expansion every paragraph or section, as mentioned before. This doesn't help us if we have a metric to re-expand abbrevations after X words/characters, or after a page break, though. One aspect of this I had *not* considered, was a ergonomic way of handling how/where the abbreviation(s) are defined. I have written a script before for this task (working with abbreviations) for my webpage authoring, but I was content to write the expansion everytime I referenced the abbreviation, even if it didn't show in the text. There was also a list of abbreviations with well-known definitions hard-coded in the script, such as HTML and CSS... I never said it was a super elegant program; it's just a script I use! This is probably easily handled in roff with strings and/or macros; a user could define strings or macros with the abbreviation and its definition, and our abbreviation macros could probably work over these in a generic way? -- S.
