LuaTeX、ConTeXt 和 XeTeX 之间的区别

LuaTeX、ConTeXt 和 XeTeX 之间的区别

我对“新”(La)TeX 处理器之间的差异和共同点很感兴趣:

就我个人而言,到目前为止我只使用过 XeTeX,而且由于没有时间尝试所有三个系统,因此我很难将它们区分开来。

据我了解,这些系统实际上非常在某些方面有所不同。所以我明确要求的是日常使用中的优点和缺点(无论是什么),而不是非常特殊的场景。

(我已经问过类似问题前段时间在超级用户上。)

答案1

LuaTeX 和 XeTeX 都是用于处理 TeX 文档的 UTF-8 引擎。这意味着输入(.tex 文件)可以包含 pdfTeX 难以直接使用的字符。两者都可以使用系统字体,这一点与 pdfTeX 不同。然而,两者的方法非常不同。

XeTeX 使用系统特定的库来工作。这意味着它可以非常轻松地“开箱即用”地加载系统字体和其他 UTF-8 任务。事实上,它就是为此目的而编写的:支持语言、ETC.,而传统的 TeX 却难以应对。这为最终用户提供了一个易于使用的引擎,特别是如果您在 LaTeX 上使用 fontspec 包。但是,由于一切都“外包”给操作系统,因此灵活性方面存在权衡。

相比之下,LuaTeX 的目标更大。其想法是为 TeX 添加一种脚本语言 (Lua),并将 TeX 的内部功能开放给这种语言。结果是,很多功能都是可能的,但必须编程才能实现。LaTeX 对 LuaTeX 的支持越来越多:fontspec v2 支持它,并且正在编写新软件包以使用更多新功能。

目前,我会使用 XeTeX 来实现 UTF-8 和字体支持,除非我追求只有 LuaTeX 才能实现的特殊效果(阿拉伯语排版是一个特殊的挑战)。XeTeX 和 LuaTeX 之间的选择很“紧张”:两者都有优势,具体取决于您的具体要求。(我是 LaTeX 内核团队的成员,因此作为一名程序员,我非常热衷于利用 LuaTeX。)

ConTeXt 不是引擎,因此在这里的位置略有不同。ConTeXt 是一种 TeX 格式,就像 LaTeX 一样,但更新且更大。ConTeXt Mark IV 是 LuaTeX 专用实现。ConTeXt 背后的人们非常积极地开发 LuaTeX,并使用新功能来扩展 TeX 和 ConTeXt 的功能。我已经指出我正在研究 LaTeX,所以我当然希望看到 LaTeX 中的新功能也能做到这一点。这是我和 LaTeX 项目的其他成员正在研究的事情。

答案2

特克斯基本上比默认的 LaTeX 提供了两项改进,但有一个缺点。

改进内容如下:

  • XeTeX 默认支持 UTF-8 编码输入。事实上,这是唯一支持的编码。
  • XeTeX 直接支持 TrueType/OpenType 字体。这可以通过强大的字体规格该包使得加载和使用已安装的字体变得非常容易。
  • 字体支持比大多数(甚至专业)编辑器支持的字体要多得多。例如,它可以轻松访问特殊字体功能,如罕见连字、字形变体和旧样式(文本样式)数字。

缺点是:

  • XeTeX 尚未支持 microtype 包的全部功能,而 pdfTeX 则支持。不过,主要功能(突起)运行良好。

此外,XeTeX 仅提供 PDF 输出;没有 DVI 或 PS。我不确定这是否可以算作缺点,但年龄变化率

答案3

Joseph Wright 的回答很好地总结了这些差异,我只想补充一点,luatex 本身也是一种脚本语言:当你以luatex可执行文件形式运行texlua (或者,运行luatex --luaonly)时,它将表现为一个带有一些库添加的 lua 脚本解释器。

在此模式下,无法进行排版,但这并不意味着它没有用处。例如,据我所知,这是唯一一个内置 kpathsea 接口的脚本解释器。没有暴露任何与排版相关的功能,但 luatex 中的其他 lua 功能可供脚本使用:

  • 韩国电力学会,用于文件搜索
  • 字体加载器,调查字体文件
  • ,用于创建 metapost 图形
  • pdf格式,调查 pdf 文件(仍处于试验阶段)

此外,还添加了一些来自互联网的有用的 lua 库:

  • luamd5,用于校验和计算
  • 套接字,用于网络 I/O
  • lua文件系统,用于磁盘 i/o
  • 统一码,用于unicode字符串处理
  • 卢阿扎普,用于 zipfile 输入
  • 液相色谱,用于编写解析器

luatex 的这种脚本功能被用于 TeXLive 2010 中的部分脚本,希望将来可以替换更多的脚本。

答案4

它们都是 TeX 的变体/实现。LuaTeX 实际上就像 Knuth 的原始 TeX 系统(带有 LaTeX),但使用 Lua 作为其嵌入式脚本引擎,有些人认为它更易于处理和扩展。我相信 TeXLive 从现在开始正式转而使用 LuaTeX。

XeTeX 具有特别有用的字体功能。它本质上是标准 TeX,但能够使用 OpenType 和 TrueType(而不是 Type 1)字体,而不是标准 TeX 中令人困惑的设置。如果您曾经使用标准 TeX 安装字体,甚至制作自己的字体,您就会知道这很麻烦,即使使用fontinst.

ConTeXt 是一种不同于 TeX 的方法。ConTeXt 类似于 LaTeX,但对工作原理有不同的看法。ConTeXt 试图让事情变得更容易,尤其是排版问题。在这个系统中,颜色、图形和更改文档结构更加直接。

免责声明:我不是这些系统的专家。我个人只使用标准 LaTeX。

相关内容