来自 wiki乳胶
基本要求是有一个 TeX 编译器(用于从源生成输出文件)、字体和 LaTeX 宏集。
假设我有一个 TeX 引擎,我想为它添加 LaTeX 支持。我希望它与任何语言相似,我应该#include
或import
任何等效的东西,所有 LaTeX 宏,都已经用 TeX 语言编写。然后,当我必须构建一个 LaTeX 编写的文件时,我首先必须预编译宏文件(以便能够使用 LaTeX 标签),然后用户编写文件。
我确实找到了SVN 版本最新 LaTeX 版本的存储库。但我很困惑为什么会有一个build.lua
文件?它到底在构建什么?
有人能告诉我添加 LaTeX 支持的逻辑是否正确吗?如果不对,我该怎么做?我很难理解全局图景,尤其是 LaTeX 宏如何与 TeX 引擎交互。
答案1
初始状态的 TeX 引擎('IniTeX')仅知道基本元素和极少量的预定义设置。对于几乎所有实际用途,您都需要在此基础上设置一组宏。这可以通过执行以下操作来实现
tex -ini
然后以交互方式排版,但更实际的做法是将它们保存到文件中。你可以在每次运行开始时读取该文件,因此输入内容以
\input mymaros\relax
或类似的东西。
在大多数实际情况下,此标准文件将以原语\dump
: 结尾,该原语结束 TeX 运行并保存 TeX 内存的当前状态,以便以后重新读取。然后,您的“真实”文档就无需担心这些预定义的宏:它们在启动时从转储文件中加载。从历史上看,您会告诉 TeX 使用以下方式读取转储
tex &<dump-file-name>
例如
tex &latex
对于 LaTeX 格式 ( latex.fmt
)。但是,您不需要这样做,因为该命令latex
或多或少等同于同一件事。(存在技术差异,重要的是现代命令latex
更类似于pdftex -output-format=dvi &latex
。)
请注意,格式文件是内存转储。因此,它只能由完全相同的二进制文件使用:相同的操作系统、相同的版本,ETC。因此,格式文件不是分布式,但是是在使用它们的系统上创建的。
如果你看看LaTeX 团队 SVN您会发现各种与构建和测试 LaTeX 以供发布相关的文件。我们的构建系统l3build
确实会生成用于本地测试的格式文件。但是,这是不一样就像为用户制作格式文件一样。事实上,LaTeX 的官方版本与大多数其他 TeX 软件一样,通过 加拿大运输安全局,并且我们不会将构建系统材料发送到那里(用户不需要它)。
无论如何,大多数最终用户都不会直接从 CTAN 获取材料:他们可能会将 LaTeX 作为 TeX 系统的一部分来获取。TeX 直播或者微特克斯. 这些系统会自动建立和保存格式,因此用户很少需要关心细节。