# Passing name ending with number to \csname does not work [duplicate]

Possible Duplicate:
macro names with special characters

When I use \yyy defined bellow it does not print yyy, but if I use \xxx it prints xxx. How can I make \yyy work?

\def\P1{yyy}
\def\PA{xxx}
\def\yyy{\csname P1\endcsname}
\def\xxx{\csname PA\endcsname}


## marked as duplicate by Stephen, egreg, Stefan Kottwitz♦Jan 25 '13 at 20:21

There are ways around this:

• Use roman numerals rather than arabic ones. For example:

\def\Pi{yyy}
\def\Pii{xxx}
\def\yyy{\Pi}
\def\xxx{\Pii}

• Use the \csname...\endcsname directive for all things non-letter. For example (note the required expansion):

\expandafter\def\csname P1\endcsname{yyy}
\def\PA{xxx}
\def\yyy{\csname P1\endcsname}
\def\xxx{\PA}

• Use \@namedef and \@nameuse. For example:

\makeatletter
\@namedef{P1}{yyy}
\def\PA{xxx}
\def\yyy{\@nameuse{P1}}
\def\xxx{\PA}
\makeatother


Regardless, I think one can always get away with not using numerals in control sequences.

• Those are interesting workarounds, but as you say, the first option seems to be the better. Thanks – mljrg Jan 26 '13 at 9:56