我从 texlive svn repo 中获取了文件 tex.web 和 pdftex.web。我运行了
weave tex.web
pdftex tex.tex
它生成了一个文件tex.pdf
,其中有排版良好、相互引用的 TeX WEB 源列表。
但是,如果我对 pdftex.web 执行相同的处理,则生成的文件pdftex.pdf
仅包含与索引相对应的页面。
我是否需要运行其他命令组合,或者是否需要编辑 pdftex.web 的一部分?我尝试编织所提供的.ch
文件,但似乎没有什么不同。
答案1
只需改变线路
\let\maybe=\iffalse % print only changed modules
到
\let\maybe=\iftrue
在pdftex.web
。
答案2
tex.web
与Knuth 一开始的意图不同,他既打算制作一本记录源代码清单的书(计算机与排版B卷,TeX:程序) 和 TeX 的实际程序,该文件pdftex.web
只是一个修改版本tex.web
,其主要目的是制作一个可工作且可用的 pdfTeX 程序,无意(据我所知)将其作为一本独立的书阅读(除了程序可维护所需的一切)。因此,生成pdftex
源的排版列表意义不大:结果不会像 那样连贯tex
(你可以用texdoc tex
,尽管它缺少了印刷书籍中有用的迷你索引和“如何阅读 WEB”)。
尽管如此,如果你想排版 pdftex 的源代码,只是为了亲自看一次,这就是我刚才要做的(截至 2017 年 10 月):
获取最新信息
pdftex.web
(例如来自这里)。weave
以 身份运行weave pdftex.web
。它会生成一个pdftex.tex
文件。将其更改
\ifffalse
为:\iftrue
pdftex.tex
\let\maybe=\iffalse % print only changed modules
可选:将
\input webmac
文件顶部的更改为\input pdfwebmac
,以获取部分(模块)引用的超链接。pdftex
在文件上运行:pdftex pdftex.tex
。它将生成一个排版pdftex.pdf
。
请注意,直到 2017 年 10 月,还需要进行两项额外更改(在此答案的第一次修订中)。这表明没有其他人以这种方式使用它(至少在 pdfTeX 开发人员中),否则他们会修复它。
相关内容:Taco Hoekwater 的文章LuaTeX 与 Pascal 告别来自 EuroTeX 2009,描述了他们作为一个团队共同开发 WEB 文档时遇到的一些尴尬,以及他们将其转换为 C 文件的情况。一些问题可能也适用于 pdfTeX(尽管他们仍然使用网络):Knuth 作为一个程序员时,把整个程序记在脑子里,把它全部写在纸上,完成后再输入,一直打算把它写成一本书,一旦完成就停止开发,但对于一个当今的程序员团队来说,这可能不那么有意义了,因为他们试图根据不断变化的需求进行开发,并在开发过程中融入新的想法——而且他们肯定没有用铅笔和纸编写程序的习惯。