是否有一个技巧(一些未知的原语?)可以从组成该命令的代码内部获取命令的名称,类似于\thiscommandname
或类似的东西?
答案1
与编译语言中的函数不同,宏没有附加作用域;它只是被其未求值的替换文本内联替换,并从替换的开头继续处理。因此,在替换结束时更改其扩展的命令会相当不自然,而 tex 不会以可访问的方式提供该信息,尽管它确实在错误消息的上下文行中显示了打开替换的堆栈。
\def\a{aaa\b ccc}
\def\b{xxx \q yyyy}
\def\q{ ggg \RROR}
\a
\bye
生产
! Undefined control sequence.
\q -> ggg \RROR
\b ->xxx \q
yyyy
\a ->aaa\b
ccc
l.6 \a
?