On 17 January 2016 at 21:56, Karl Berry <k...@freefriends.org> wrote: > Hi Gavin - somewhere in all the brace/indexing changes to texinfo.tex, > it seems that using @{ or @} inside @xref or other ref commands started > to fail (or maybe it never worked, I guess I'm not entirely sure, come > to think of it). Now, something like > > @xref{a@}b} > > gets (with texinfo.tex 2016-01-11.19): > ./refbrace.tex:4: Missing @endcsname inserted. > <to be read again> > @indexrbrace
It did work for a while, before I changed it to output a braced sequence to work with texindex before 6.0. However, in doing so I'd overlooked the comment "\indexnofonts is used when outputting the strings to sort the index % by, and when constructing control sequence names.", and \csname doesn't accept (unexpandable) control sequences in the names of the control sequence it is creating. This should be fixed now. Testing, I found @{ in an xref was broken in 2008-04-18.10 (4.13 release), and broken in 2004-06-14.14. The latter version of texinfo.tex is the one I discovered that braces would be output in an index with the old texindex (in the manual for gawk 3.1.4) - this worked because the braces were output in the sort key as braced sequences. The use of |a as the sort value was introduced on 2010-08-17, and I expect xrefs containing @{ and @{ worked from then on (except it didn't work if two xrefs were exactly the same except @{ was replaced with @}). For example, @{ in an xref worked with 2013-09-11.11 (5.2 release). The test file I've attached tests a few more cases, including index entries.
refbrace.texi
Description: TeXInfo document