在浏览 Don Knuth 关于 TeX 的出版物时,我被引荐查看tripman.pdf
我的 MacTeX 发行版上的文件。TeXnicians 可能知道,该文件解释了TRIP
测试的目的及其使用方法,以及输入文件的源代码和正确的输出。我决定(愚蠢地?)亲自尝试一下这个测试,问题就从这里开始。
我有两个问题:
- 在附录 A 的步骤 2 中,我应该如何进行修改
INITEX
才能使参数按照那里指定的方式设置?我听说过“更改文件”可以修改weave
、、tangle
和的输出cweave
,而ctangle
不会更改原始WEB
或CWEB
文件,但据我了解,此类文件无法修改可执行文件的行为UNIX
。无需修改 TeX 源代码, 如何才能做到这一点? - 在步骤 4 中,运行的版本应该
INITEX
是未修改的版本还是步骤 2 中的修改版本?我假设,出于调试目的,应该使用修改后的版本,但我只是想确认一下。
如果您能提供任何有关进行此测试时可能遇到的挑战的进一步信息,我将不胜感激。我经常使用 LaTeX(虽然我承认自己不太熟练),最近开始阅读 Don Knuth 关于排版和排版的著作,可能需要一些帮助才能理解这些材料。
我的机器是 Mac,以 MacTeX 的形式运行 TeXLive 2019。如果缺少任何其他所需信息,请在评论中提出请求。
谢谢。
这是我第一次接触 TeX.SX,所以我的问题质量可能不太好。对于我在写这个问题的过程中可能犯下的任何错误,我深表歉意,我欢迎所有关于如何改进上述内容的建议。任何关于适当标记的建议都将不胜感激。请温柔一点。
答案1
的实现\TeX
是在 中完成的tex.web
。此文件是通用实现,必须针对操作系统或一般而言针对特定计算机和 Pascal 编译器进行定制。例如,必须更改文件名约定以及输入和输出过程以满足特定系统的规范,并且如果 Pascal 编译器不允许else
在case
语句中使用路径,则必须更改源中的几个位置。
因此,程序TANGLE
和WEAVE
不仅仅读取单个
WEB
文件,它们还可以处理此类文件的更改文件。因此,要进行编译,\TeX
您需要包含适合您的机器的更改的tex.web
和。tex.ch
要检查您的更改文件是否不会\TeX
以导致您的实现不兼容的方式更改,即相同的 .tex 文件生成与其他\TeX
实现不同的输出,一个条件是trip
必须通过测试。它需要一个特殊版本的,INITEX
其中某些编译时参数具有预定义值,以使测试的输出具有可比性。因此,要执行测试,trip
您必须构建一个特殊版本的\TeX
,这意味着您必须处理tex.web
您的更改文件并使用您的 Pascal 编译器编译生成的 Pascal 输出。
测试程序中详细描述了本地更改文件的附加更改,并解释了测试步骤。必须将结果与默认系统生成的输出进行比较\TeX
。这些结果也在测试程序中列出,并且它们可能会随着每次新的测试而变化
tex.web
。
您可以CTAN
找到相关文件和来源:
(1)https://ctan.org/tex-archive/systems/knuth/dist/tex包含测试所需的tex.web
所有tripman.tex
文件trip
;
(2)https://ctan.org/tex-archive/systems/knuth/dist/web包含源代码和TANGLE
手册;WEAVE
WEB
(3)https://ctan.org/tex-archive/systems/knuth/local/tex/initex.ch
是一个未经测试且不完整的用于trip
测试的变更文件示例。
(看https://ctan.org/tex-archive/systems/unix适用于不同 Pascal 编译器的完整系统;但请注意,我不建议使用这些系统。)
如果您下载
https://ctan.org/tex-archive/systems/knuth/dist/lib/webmac.tex您可以 (i) 运行weave tex.web
或weave tangle.web
等,无需更改文件即可获得可处理的 *.tex 文件,plain tex
以及 (ii) 了解通用程序。当然,您可以添加更改文件,然后看看会发生什么。
如果您下载
https://ctan.org/tex-archive/systems/texlive/Source/texlive-20190408-source.tar.xz
您可以找到包含此 texlive 系统的行程测试结果的目录。(当然,texk\web2c\triptrap
您必须能够处理xz
和 文件。)tar