ConTeXt 是使用 TeX 还是重写它?

ConTeXt 是使用 TeX 还是重写它?

只是出于好奇,语境使用TeX 算法是全部还是重写了某些组件?

如果是后者:

  1. 是否可以用 Lua 重写所有 TeX,或者是否有充分的理由反对这样做?
  2. pascal 是如何转换成 Lua 的 - 自动的,还是有人完全理解它并重写它?

请随意关闭此帖,因为与主题无关

答案1

ConTeXt 主要是一个用 TeX 语言编写的宏包。当前版本 MkIV 是为 TeX 后端 LuaTeX 编写的,后者用 C 语言编写,并将部分 TeX 内部功能开放给 Lua 解释器,而 ConTeXt 宏大量使用了 Lua 解释器。

是否可以用 Lua 重写所有 TeX,或者是否有充分的理由反对这样做?

当然,没有什么可以阻止你用 Lua 重写 TeX,但这没什么意义。它已经有了一个出色的 C 实现和 Lua 接口。这有什么好处呢?

pascal 是如何转换成 Lua 的 - 自动的,还是有人完全理解它并重写它?

pascal 代码从未翻译成 Lua。pascal 代码已被手动转换为 C。

以下幻灯片描述了 LuaTeX 的组成: Taco-LuaTeX-talk-2007

答案2

正如 Taco 在 Marco 给出的链接中所述,Luatex 项目并不是关于重新实现 Tex,而是关于:

  1. 将 Pdftex 的内部数据结构暴露给 Lua;
  2. 在 Pdftex 引擎中添加钩子,例如回调;以及
  3. 通过 mplib,使用 Lua 作为与其他代码(最重要的是 Metapost)的桥梁。

这使得 Lua 可以参与布局,但这是通过配置、调度和控制执行实际工作的 Pdftex 引擎来实现的。

Context 使用 Lua 来简化脚本编写,因为它可以在布局中大量使用 Metapost。但其核心基本上是 Knuth 的算法。还要注意的是,Context Mk II 没有使用 Lua,因此 Mk IV 的许多功能并不依赖于 Luatex 的新功能。

相关内容