While working on the docindex package, I encountered a problem concerning catcodes which has some principal implications, hence I thought it might be discussed on this list. As you may know, gind.ist and gglo.ist insert the following commands at the top of each .ind or .gls file they are involved in making: \makeatletter\scan@allowedfalse As far as I can see the \scan@allowedfalse is completely redundant (there are no macrocode or macrocode* environments in these files) and I thought the same was true for the \makeatletter (only used so that \scan@allowedfalse could be specified without using \csname), but it turns out that removing it breaks things. Some robust (?) LaTeX commands (such as \TeX and \@) are not auto-protected and have expansions that contain private macros, i.e., macros whose names contain the @ character. When used in the argument of e.g. the \changes or \SortIndex commands it is their expansions that are written to the .glo/.idx file and these are only tokenized correctly if @ is a letter. I can think of three principal views on this problem: 1. .ind and .gls files are "external" to LaTeX, so they should have normal catcodes; hence commands like \TeX and \@ should not be expanded when written to them. (This implies that the LaTeX kernel documentation is in error, since it has lots of unprotected \TeX's in \changes arguments. Some \changes commands also contain \@'s, but these definitely are in error and should be @'s instead since they only occur as \cs{\@ ... ) 2. The exact catcodes that should be in force when an .ind or .gls file is read can be determined by each document separately. (This would be the "noone's wrong, really" option.) 3. .ind and .gls files are "internal" to LaTeX (like the .aux file) so @ should be a letter when they are inputted. Does anyone on the team or otherwise have any views on this? Lars Hellström