我很喜欢 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