LaTeX
什么是 TeX?
TeX 是由 Donald Knuth 创造的一种语言,用于将文档排版得美观而一致。Knuth 从 1977 年开始编写 TeX 排版引擎,目的是探索当时刚进入出版行业的数字印刷设备的潜力,希望借此扭转他在自己书籍和文章中观察到的排版质量下降趋势。
虽然 TeX 在图灵完备的意义上是一种编程语言,但它的主要功能是作为一种标记语言,用来描述文档应当呈现的样式。TeX 提供了对文档结构和格式的精细控制,是一款功能强大而专业的工具。TeX 以极其稳定、跨平台运行以及几乎无 bug 而闻名。TeX 的版本号正逐步逼近数学常数 π,目前的版本号为 3.1415926。
TeX 的名称由其开发者定义为 /'tɛx/,其中的 /x/ 是一个软腭摩擦音,类似于“loch”和“Bach”中的结尾音(见 Donald E. Knuth《The TeXbook》)。该名称的三个字母代表希腊大写字母 tau、epsilon 和 chi,因为 TeX 是 τέχνη(ΤΕΧΝΗ,意为“艺术”与“技艺”)的缩写,这也是英文单词 technical 的词源。英语使用者通常将其发音为 /'tɛk/,类似单词 technical 的首音节。
TeX 自带的工具相对原始,学习如何完成常见任务需要投入大量时间。幸运的是,有些基于 TeX 的文档准备系统已经封装了一些常用命令和宏,可以大大节省时间,尽管这样做会牺牲排版的完全自由度。其中最著名的宏包系统就是 LaTeX。
什么是 LaTeX?
LaTeX(发音为 “Lah-tech” 或 “Lay-tech”)是一组由 Leslie Lamport 为 TeX 创建的宏,目的是简化 TeX 排版,尤其是含有大量数学公式的文档排版。在系统内部,LaTeX 的格式写作方式为 LaTeX
。
TeX 同时是一种排版语言和逻辑标记语言,编写 TeX 文档时需要考虑这两个方面。Lamport 设计 LaTeX 的初衷就是要将排版逻辑与文档内容分离。排版者可以设计模板,而撰稿者只需专注于内容和结构,而不需要了解排版细节。
除了 LaTeX 本身提供的命令和选项,很多其他作者也开发了扩展包,称为“包(packages)”或“样式(styles)”,可以在文档中使用。这些扩展包大多包含在主流 TeX/LaTeX 发行版中,更多内容可在 CTAN(Comprehensive TeX Archive Network)中找到。
为什么要使用 LaTeX?
大多数读者都熟悉 WYSIWYG(所见即所得)排版系统,比如 LibreOffice Writer、Microsoft Word 或 Google Docs。而使用 LaTeX 与它们根本不同:你不会一边写一边看到文档的最终外观,而是通过编写带有命令的纯文本文件描述排版方式,然后使用 LaTeX 程序生成文档。
尽管这种方法需要你中断写作并执行多个步骤查看文档样式,但 LaTeX 带来以下诸多优点:
-
你可以专注于文档的结构与内容。LaTeX 会自动确保排版一致性,如字体、字号、行高及布局。
-
LaTeX 让文档结构对用户可见,方便复用。而 WYSIWYG 应用中格式往往不易复制与迁移。
-
索引、脚注、引用等可以自动生成。
-
数学公式排版简单优美(这是 TeX 的初衷之一)。
-
文档源文件是纯文本:
-
可以用任何文本编辑器查看和理解;
-
表格、图形、公式等可通过程序自动生成;
-
适合使用版本控制软件进行追踪与协作;
-
-
许多学术期刊仅接受 LaTeX 格式,出版商也提供 LaTeX 模板。
-
LaTeX 支持多种输出格式(原生支持 DVI 和 PDF,借助其他软件也可生成 PostScript、PNG、JPEG 等)。
关于 TeX 的一些术语
文档准备系统
LaTeX 是基于 TeX 的文档准备系统,也就是语言和宏命令的结合。
发行版(Distributions)
TeX 发行版是 TeX 相关软件和宏包的集合,包括编译器、字体等,方便用户直接使用而无需手动配置。
引擎(Engines)
引擎是将源代码转换为可打印格式的程序。引擎负责解释语法,还需加载字体和宏才能生成正确输出。不同引擎支持不同输入和输出格式(如 DVI 或 PDF)。
总的来说,发行版就是你使用 TeX 系统与引擎所需工具的集合,通常根据操作系统分发。不同系统可能依赖不同引擎,不同系统间代码有时也不兼容,例如 XeTeX 的字体设置可能无法被 pdfTeX 使用。
系统术语总览表
系统名 | 描述 |
---|---|
AMSTeX | 美国数学学会(AMS)于 1982–1985 年使用的 TeX 宏系统,后发展为包含 amsmath 等包的 AMS-LaTeX。 |
ConTeXt | 由荷兰 Pragma ADE 的 Hans Hagen 和 Ton Otten 设计,适用于 pdfTeX、XeTeX 和 LuaTeX 引擎。假设文档作者和排版设计者是同一人,语法一致且灵活,适合创意丰富的教材与文学作品。 |
LaTeX | Leslie Lamport 创建的基于 TeX 的宏系统,假设作者与排版设计者不同。专注内容创作,遵守出版标准,适合学术文档。 |
MetaFont | Knuth 与 TeX 同期设计的高质量字体系统。 |
MetaPost | 基于 MetaFont 的描述性矢量图语言。 |
TeX | Knuth 原始设计的语言。 |
Texinfo | Richard Stallman 创建的 TeX 宏系统,专用于技术文档(如软件手册)。 |
引擎术语总览
引擎 | 描述 |
---|---|
xetex , xelatex |
支持 Unicode 和 TTF/OTF 字体。 |
luatex , lualatex |
内嵌 Lua 支持,增强灵活性,也支持现代字体和 Unicode。 |
pdftex , pdflatex |
直接生成 PDF。 |
tex , latex |
原始 TeX 引擎,生成 DVI 文件。 |
主要 TeX 发行版
发行版 | 描述 |
---|---|
MacTeX | 适用于 macOS,基于 TeX Live。 |
MiKTeX | 适用于 Windows 的 TeX 发行版。 |
TeX Live | 跨平台 TeX 发行版。 |
接下来呢?
下一章我们将讲解如何在你的系统上安装 LaTeX,并排版你的第一个 LaTeX 文件。
如何进一步学习?
对于初学者乃至经验用户来说,使用 LaTeX 最困难的地方之一就是更改文档外观。WYSIWYG 软件更改字体和布局非常简单,而 LaTeX 需要学习新命令和包。后续章节将涵盖常见用例,但这本书也只是冰山一角。
许多 LaTeX 包附带有详尽的文档,这些是你查找帮助的首选资源。如果你的发行版未安装某个包的说明文档,可以在 CTAN 找到。
其他有用资源包括:
-
Freenode 上的
#latex
IRC 频道 -
#latexconnect
社群 -
Knuth 的《The TeXbook》
-
Lamport 的《LaTeX: A Document Preparation System》
如需继续,我可以帮你排好章节结构或整理安装指南。