如何用他们的定义替换乳胶宏(使用乳胶)

Yoo*_*Yoo 9 latex substitution

如何用他们的定义替换所有出现的用户定义的乳胶宏?

例如,给定此文件

old.tex

\newcommand{\blah}[2]{#1 \to #2}
...
foo \blah{egg}{spam} bar
...
Run Code Online (Sandbox Code Playgroud)

如何以自动方式生成下面的文件

new.tex

...
foo egg \to spam bar
...
Run Code Online (Sandbox Code Playgroud)

而不是用perl重新实现乳胶宏逻辑,我可以使用latex或tex引擎来做到这一点吗?

小智 9

VOILÀhttp : //www.ctan.org/tex-archive/support/de-macro

这是一个Python:

[...]将扩展(重新)新命令或(重新)新环境命令中定义的宏,文档内或文档的"私有"包文件中.

  • 2020 年仍在工作:)虽然它需要 python2 (2认同)

Dav*_*llo 1

从来没有见过这样做,但有两个不成熟的想法:

  1. 如果您想要内联展开所有这些宏的原因是为了调试,那么\tracingmacros=1在文档中进行设置将展开所有宏,但输出将保存到日志文件中。

  2. CTAN存档提供了一个包,您可以使用它在定义中进行内联扩展(不是 newcommand),但我不知道您是否可以看一下,看看修改以执行 \newcommand 的内联扩展可能是多么痛苦的\def。