从 TeX 中提取宏扩展语言的最佳方法是什么?

从 TeX 中提取宏扩展语言的最佳方法是什么?

我很喜欢 TeX 宏语言。我只想从 TeX 中获取宏功能,即扩展过程、\catcode、\def、\let、\expandafter 等,但我对排版输出不感兴趣。换句话说,我不需要 \hbox、输出例程、glues、pdf 输出等。我只需要在过程结束时获得文本字符,这些字符将输出到文本文件中。

为了具体说明,我来举个例子:

   \def\foo{hello world\ }

   \let\foob=\foo

   \expandafter\def\csname foo3\endcsname {hello everybody}

   \foo \foob \csname foo3\endcsname

   \end

上述程序将在文本文件中输出“hello world hello world hello everyone”。

获得所需结果的最简单方法是什么?我猜人们必须在 Knuth 的程序完全扩展标记之后、在将其转换为排版输出之前对其进行截断。

答案1

根据您的使用情况,您可能会发现使用 luatex 而不使用其排版比真正提取扩展更容易。

您的测试的修改版本不生成 pdf,而生成一个文本文件 ( \jobname .txt),其中包含

hello world hello world hello everybody

如果与luatex



\immediate\openout1\jobname.txt
\immediate\write1{
\immediateassigned{
   \def\ { }
   \def\foo{hello world\ }
   \let\foob=\foo
   \expandafter\def\csname foo3\endcsname {hello everybody}
}
   \foo \foob \csname foo3\endcsname
}

   \end

相关内容