我如何制作 pdftex 源代码的 PDF?

我如何制作 pdftex 源代码的 PDF?

我从 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 月):

  1. 获取最新信息pdftex.web(例如来自这里)。

  2. weave以 身份运行weave pdftex.web。它会生成一个pdftex.tex文件。

  3. 将其更改\ifffalse为:\iftruepdftex.tex

    \let\maybe=\iffalse % print only changed modules
    
  4. 可选:将\input webmac文件顶部的更改为\input pdfwebmac,以获取部分(模块)引用的超链接。

  5. pdftex在文件上运行: pdftex pdftex.tex。它将生成一个排版pdftex.pdf

请注意,直到 2017 年 10 月,还需要进行两项额外更改(在此答案的第一次修订中)。这表明没有其他人以这种方式使用它(至少在 pdfTeX 开发人员中),否则他们会修复它。

相关内容:Taco Hoekwater 的文章LuaTeX 与 Pascal 告别来自 EuroTeX 2009,描述了他们作为一个团队共同开发 WEB 文档时遇到的一些尴尬,以及他们将其转换为 C 文件的情况。一些问题可能也适用于 pdfTeX(尽管他们仍然使用网络):Knuth 作为一个程序员时,把整个程序记在脑子里,把它全部写在纸上,完成后再输入,一直打算把它写成一本书,一旦完成就停止开发,但对于一个当今的程序员团队来说,这可能不那么有意义了,因为他们试图根据不断变化的需求进行开发,并在开发过程中融入新的想法——而且他们肯定没有用铅笔和纸编写程序的习惯。

相关内容