In source2e.pdf I've seen \@let@token used in several places, for example in the definition of \@ifnextchar:


However, I couldn't find a description of \@let@token, so my question is what exactly does \@let@token do?

1 Answer 1


\@let@token is assigned by \futurelet to the next token after the \@ifnextchar, i.e. it is the next character. The \futurelet\@let@token\@ifnch code means "assign the next token to \@let@token and then process \@ifnch". Inside \@ifnch the \@let@token macro is tested if it is equal to the (first token of the) first argument of \@ifnextchar, i.e. \reserved@d (see the \let\reserved@d=#1).

So, it does nothing, but it is used as a temporary variable. In theory \@tempa could have been used as well but wouldn't be as save as a named special macro. The benefit here is that you can check \@let@token in the false clause of \@ifnextchar using \ifx against other tokens without going to the more complex \@ifnextchar macro again.

\@ifnextchar{\relax}{It was a relax!}{%
      It was a dollar!
        It was an ampersand!
        something else

This is useful for parser code as in e.g. tikz-timing and ydoc.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .