On 2017-04-16, Zdenek Wagner <zdenek.wag...@gmail.com> wrote: > 2017-04-16 10:08 GMT+02:00 Julian Bradfield <jcb+xe...@jcbradfield.org>: .... >> Definitely a bug. The TeXbook defines the behaviour of \if and \ifcat, >> and all control sequences are considered to have character code 256 >> and category code 16, unless \let equal to a non-active character, in >> which case they have the value of that character. >> >> Not all control sequences but primitives. Unlike \ifx, \if and \ifcat > perform full expansion.
(a) Yes, they do perform expansion. That's irrelevant to the point at hand, since expansion happens before the comparison. (b) All control sequences, not just primitives: \ifcat\noexpand\foo\noexpand\baz true\else false \fi \ifcat\noexpand\foo\halign true\else false \fi As Philip pointed out, I was reporting Knuth's words, which are by definition authoritative. -------------------------------------------------- Subscriptions, Archive, and List information, etc.: http://tug.org/mailman/listinfo/xetex