考虑以下:
\let\1=X
\edef\2{\1}
\show\1 \show\2
结果是
> \1=the letter X.
> \2=macro:
->\1.
是否可以“扩展” \1
so 的含义,使其\2
仅包含X
?我能想到的唯一解决方案是使用\meaning
on\1
并删除前缀,但这似乎不太优雅。
(上下文:我正在编写一个扫描函数,它会提前查看下一个标记,然后将其添加到临时变量或终止扫描。但是,如果不先扩展它,就无法将其添加到临时变量中!但这不是我关心的上下文,因为我可以用另一种方式进行循环;我对这个特定问题很感兴趣。)
答案1
您无法扩展已使用定义的标记\let
(除非我们正在讨论\let
另一个宏)。正如您所说,\meaning
这是唯一可行的方法。如果这不是答案,请原谅!