可能重复:
带有特殊字符的宏名称
当我使用\yyy
下面定义的时,它不会打印yyy
,但如果我使用\xxx
它,它会打印xxx
。我该如何让它\yyy
工作?
\def\P1{yyy}
\def\PA{xxx}
\def\yyy{\csname P1\endcsname}
\def\xxx{\csname PA\endcsname}
答案1
有办法解决这个问题:
使用罗马数字,而不是阿拉伯数字。例如:
\def\Pi{yyy} \def\Pii{xxx} \def\yyy{\Pi} \def\xxx{\Pii}
对于所有非字母的内容,请使用
\csname
...\endcsname
指令。例如(请注意所需的扩展):\expandafter\def\csname P1\endcsname{yyy} \def\PA{xxx} \def\yyy{\csname P1\endcsname} \def\xxx{\PA}
使用
\@namedef
和\@nameuse
。例如:\makeatletter \@namedef{P1}{yyy} \def\PA{xxx} \def\yyy{\@nameuse{P1}} \def\xxx{\PA} \makeatother
无论如何,我认为人们总是可以不用控制序列中的数字。