如果我想编写一个 TeX 引擎,我需要什么。
现在我正在读书TeXBook当我读完后,我会读来源2e因此我很好奇如何自己写一个 TeX 引擎,需要知道哪些知识。
由于自己还是一名本科生,后续还会有很多机会接触TeX,所以这个并不是急于实现的。
答案1
需要澄清的是:TeX 引擎(如 pdftex、xetex、luatex)会编译 TeX 代码。因此,阅读 source2e(或 source3)不会让您学到任何您在 TeX Book 中无法学到的东西。基本上,您只需要了解基本概念和 TeX 算法,其他一切都应该由格式(如 LaTeX)处理。
如果您想编写自己的 TeX 引擎并将其称为 TeX 引擎,则需要通过旅行测试并实现 TeX(程序)中使用的所有基本算法。这可能会通过新的 Unicode 输入原语(如 XeTeX、LuaTeX 等)和更多功能的支持进行扩展。请注意,重现这种级别的优化代码已经是一项相当艰巨的工作。
此外,您可能对 NTS 或 ExTeX 等项目感兴趣,它们曾尝试编写完全不同的 TeX 引擎(使用 Java)。它们从未达到稳定状态以接管其他引擎的用户群。
因此,只需回答您的问题:您需要了解 TeX 的原语和内部工作原理(您可以在 TeX 的 WEB 代码和 TeX 代码中找到相关记录)。
一条评论(个人观点):如果你是一名本科生并且想要更深入了解 TeX,请先尝试编写自己的格式(使用原语)。