是否有一个命令、宏或工具可以以易于使用的方式获取任何宏的字符串结果(如在其他语言中一样)?

是否有一个命令、宏或工具可以以易于使用的方式获取任何宏的字符串结果(如在其他语言中一样)?

我不想深入研究可扩展和不可扩展的问题。我怀疑几周后我是否能理解我自己开发的设计。因此,我正在寻找一种通用且易于使用的解决方案。

有这样的事吗?

我认为在 TeX 的深处一定存在这样一个点,每个宏在创建字符串时都必须了解这些字符串 - 最终,字母将被排版!

问题是,你怎样才能连接到这一点?

答案1

正如评论中所解释的那样,TeX 不了解字符串,而只了解可扩展和可执行的宏和基元。当 TeX 处理其输入时,它会开始尽可能地扩展标记,以找到具有其参数或输出字符的不可扩展命令。然后,如果它们是命令,它就开始执行它们,如果它们是字符,则将它们添加到构建的页面中。

目前还不清楚您要寻找什么样的结果或要用它做什么。但从上面的评论来看,您似乎只是在寻找某个标记列表的完整扩展版本,即一系列仅产生可打印字符而中间没有任何不可扩展命令的标记。如果是这种情况,您可以使用\edef\mystring{<tokens>}完全扩展标记列表<tokens>并将结果“字符串”存储在宏中\mystring

\def\a{a}
\def\b{\a b}
\def\c{\b-\b-\b c}

\edef\mystring{\c}
\show\mystring

将打印

> \mystring=macro:
->ab-ab-abc.

在终端上。根据您要对该结果执行的操作,您必须使用进一步的扩展方法来“解包”宏。

相关内容