我使用 LaTeX 大约有 20 年了。只是在过去 3 年左右的时间里,我才开始尝试了解 TeX 的内部工作原理。这里有很多帖子的原作者都在使用 LuaTeX 或 ConTeXt。我认为尝试了解那里发生了什么可能是一个很好的项目。但我找到的材料让我有点不知所措。
我能找到的大多数材料(例如从命令行调用texdoc luatex
)似乎针对的是已经熟悉这些概念的受众。(事实上,texdoc context
在帮助性方面甚至更差。)
那么我该从哪里开始呢?
我希望某种介绍能够解决以下几点:
- LuaTeX/ConTeXt 能为您做什么?
- 为什么我要使用 LuaTeX/ConTeXt?
- 如何将我已经熟悉的功能(例如 pstricks 和 TikZ)合并到 LuaTeX/ConTeXT 文档中?
如果有人能给我指出一些展示品来展示这些……(我不知道该怎么称呼它们)引擎的威力那就太好了?
答案1
我不是这方面的专家,但这是我能弄清楚的。
ConTeXt 是一个宏包,与 LaTeX 类似。它恰好只能在 LuaTeX 引擎上运行。LaTeX 支持多种引擎,因此你可以使用 LuaLaTeX 和 XeLaTeX,而且我认为(但可能错了)“vanilla”LaTeX 可以在 PDFTeX 或“原始”TeX 上运行。
从我作为用户的角度来看,这些引擎之间的差异基本上如下:
- “经典” TeX 制作那些丑陋的 DVI 文件,并且依赖于丑陋的 METAFONT 字体(主要的罪魁祸首是 Computer Modern)。
- PDFTeX 与“经典”类似,只不过它可以生成 PDF,而无需您通过 dvipdf 或 dvips | ps2pdf。
- XeTeX 使用您的系统字体(TTF 或 OTF),因此本质上优于前两者。
- LuaTeX 是内置了编程语言 Lua 的 TeX。它似乎支持 OTF 和 TTF 字体以及 XeTeX。
因此,回答你的问题:
- LuaTeX 能为您做什么?它为您提供了更好的字体处理和合理的扩展语言。如果您想在排版过程中执行诸如连接到数据库之类的深奥操作,您还可以直接从 TeX 访问 Lua 库。
- ConTeXt 能为您做什么?它的功能与 LaTeX 相同。我发现它更容易理解和阅读,而且似乎花费更少的精力,并能生成更漂亮的文档。主要问题(在我看来)是它变化太快,文档似乎经常过时,这让我想到了邮件列表和 SE 上的热心人士。
- 我为什么要使用 LuaTeX?除了改进的字体处理和易扩展性之外,主要论点是它是目前所有操作的所在。如果你对这些方面不感兴趣,我不确定这里是否真的适合你。
- 我为什么要使用 ConTeXt?因为您想更轻松地完成在 LaTeX 中很复杂的事情,并且希望排版工作流程更加模块化和可重复。您对文档美观性的要求提高了。您厌倦了旧的软件包搜索,并且当某些东西不起作用时,随后试图找到不兼容性。您已经注意到,当您尝试使用普通的 TeX 工具时,LaTeX 会强烈反击,并且您想尝试一个运行更好的宏包。
- 我该如何融入我已经熟悉的设施?ConTeXt 实际上内置了 TikZ,因此您可以继续使用它。PStricks 不支持不通过 PostScript 路径获得成品的东西,因此您将无法使用它。不过,ConTeXt 与 METAPOST 的集成相当紧密,可以制作低级图形。您可能会发现这很容易理解。随机 LaTeX 包在大多数情况下对 ConTeXt 用户来说是完全无法访问的。
我希望这能有所帮助。我是 ConTeXt 的忠实用户(虽然不太了解),并且越来越喜欢纯 TeX。我发现 ConTeXt 中的问题解决方案几乎从不依赖第三方模块,但我无法在 wiki 中找到答案的情况并不少见。这里的社区和邮件列表的响应度非常高。但我开始怀疑我是否会更乐意使用纯 TeX,因为我是一个相当有能力的程序员,最近我觉得我会更乐意使用我自己完全理解的错误抽象,而不是别人的抽象,尤其是如果那个人是如此的奇才,以至于我无法真正阅读代码。
如果你真的想突破传统思维,还有其他排版系统;传家宝 Troff如果你想尝试比 TeX 更快、更弱的东西,这尤其有趣,并且它还能够访问系统字体。
我知道我们都有血缘关系来推荐TeXBook但实际上我得到的更多TeX 按主题分类(可在 Lulu 购买,价格为 15 美元)TeX 初学者指南。我真的很讨厌Knuth的写作风格。
答案2
ConTeXt 和 LaTeX 都基于 TeX,但具有不同的理念和语法。两者都可以使用以下三种不同的引擎之一:pdftex
、xetex
和luatex
。当前的ConTeXt 的一个版本,称为 MkIV,只适用于luatex
,前一个版本 MkII 也可以与 和pdftex
一起运行xetex
。ConTeXt 有一个内置的 MetaPost 支持,但也适用于 TikZ 和 PSTricks。两者都作为模块加载。PSTricks 图像在后台使用 MkII 进行转换xetex
。
如果您更改输入和字体编码,则lualatex
可以使用任何现有的 LaTeX 文档。对于 LuaTeX,输入编码始终为 utf8,字体可以是 OTF、TTF 或 Type1。