LaTeX 架构——它是如何工作的?

LaTeX 架构——它是如何工作的?

我对通用应用程序架构很感兴趣,想知道它是如何组合在一起的。我知道它最初是由 Knuth 编写的,很明显其他人可以编写插件包来实现某些功能,但整体应用程序结构是什么?它是如何工作的?包是用什么编写的?它们遵循什么?

谢谢

答案1

简单来说,LaTeX 由几层组成。(那些真正参与过 LaTeX 开发的人,请随时纠正我。)

最低层是三百个左右的 TeX 基元,例如\hbox\vskip

在此之上,还有 LaTeX 内核。这是一组宏,例如\documentclass\usepackage\begin。内核的源代码记录在来源2e文档。

用 LaTeX 编写的每个文档或多或少都以\documentclass{foo}加载文件开始foo.cls,例如article.clsbook.cls。此文件是另一组宏,这次使用 TeX 基元和 LaTeX 内核中的宏的组合编写。这些类文件还可以加载另一个类来扩展它或修改该类中的宏。它还可以加载接下来的包。

LaTeX 包(即以 .sty 结尾的文件(及其相关文件))是使用来自较低级别的任意宏组合编写的附加宏集。有些宏特定于特定文档类,其他宏则更为通用。这些包可以\usepackage从用户文档或\RequirePackage类和其他包中加载。

在最高级别,用户的文档使用类文件和可选的包。我相信您已经知道,这些文档包含使用 TeX 基元和类定义和包定义的宏的任意组合编写的宏以及要排版的散文、诗歌和数学。

关于字体、类别和包选项等方面,还有更多的细节可以讲,但毕竟这不是那么“简短”。

最后一点,Knuth 不仅编写了 TeX,还编写了简单的 TeX 宏包——一组约 600 个宏,使排版比仅使用 TeX 的原语容易得多。LaTeX 最初由 Leslie Lamport 编写。LaTeX 2e(最新版本)也是由 Johannes Braams、David Carlisle、Alan Jeffrey、Frank Mittelbach、Chris Rowley 和 Rainer Schöpf 编写的。

答案2

正如 Dan 所说,这个问题可能过于宽泛,无法满足此类论坛的回复量。您询问的是“通用应用程序架构”,在这种情况下,您的问题涵盖了主要文档类(书籍、文章等),以及可能构成 LaTeX 专家在工作中经常使用的标准库的许多扩展类和包。

但是,如果您可以将问题限制在核心 LaTeX 引擎架构上,即位于 TeX 上并为附加类和包提供抽象和服务的层,那么您可以考虑仔细阅读文档化的源代码,该源代码通常可在source2e.pdf(在命令提示符下输入texdoc source2e)中找到。这当然不适合胆小的人,但即使您的 TeX 编程技能还不够强,文档和文档结构也会为任何相当称职的系统架构师提供良好的理解。

答案3

这个问题不够清楚,无法激发很多答案。你可能希望从以下地方开始阅读:http://en.wikipedia.org/wiki/LaTeX

答案4

您有 TeX,它是一个排版引擎,是排版 *TeX 文档时调用的真正的二进制程序。TeX 有一种宏编程语言,用于编写“包”,即宏集合,以简化某些任务。LaTeX 是一个用 TeX 宏编写的宏包,旨在实现某些目标(其他常见的宏包是 Knuth 自己编写的纯 TeX、官方 GNU 文档系统 Texinfo 和通用排版系统 ConTeXt)。

相关内容