[XeTeX] ifcat changed?

Julian Bradfield jcb+xetex at jcbradfield.org
Sun Apr 16 12:50:53 CEST 2017

On 2017-04-16, Zdenek Wagner <zdenek.wagner at gmail.com> wrote:
> 2017-04-16 10:08 GMT+02:00 Julian Bradfield <jcb+xetex at 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.

More information about the XeTeX mailing list