我想将我的源纯 TeX 文件放在同一个纯 TeX 文件的输出中。
我记得曾经遇到过一个宏,它可以将文件的内容放入输出中,但我只\input
想到了它。那会是什么呢?
感到沮丧和疲惫后,我决定使用\openin
、\read
、\closein
宏,但失败了。对于同一个文件,什么都没读出。只有对于文本文件,才会读取第一行,但前提是条件在循环体之后。
但是,当我写这个问题时,这里显示了一个建议,我从中了解到我遗漏了\unless
。没问题,但现在一切都被解释。我该如何避免这种情况?
答案1
\input eplain
This is my plain \TeX{} file that contains a listing of itself.
\listing{\jobname.tex}
\bye
该\listing
命令定义为
\def\listing#1{%
\par \begingroup
\@setuplisting
\setuplistinghook
\input #1
\endgroup
}%
\let\setuplistinghook = \relax
{%
\makeactive\^^L
\let^^L = \relax
\gdef\@setuplisting{%
\uncatcodespecials
\obeywhitespace
\makeactive\`
\makeactive\^^I
\makeactive\^^L
\def^^L{\vfill\break}%
\parskip = 0pt
\listingfont
}%
}%
这取决于许多其他定义。如果你的文件不包含奇怪的内容,那么更简单的定义可能会起作用:
\def\listing#1{\par\begingroup
\parindent=0pt
\def\do##1{\catcode`##1=12 }\dospecials
\def\par{\endgraf\leavevmode}%
\obeyspaces\obeylines\tt
\input #1 \endgroup}
它不适用于西班牙语的倒置标记。