#latex概览

##tex 和 latex

###1. TeX:底层排版引擎

示例(纯 TeX 代码)

tex
\font\myfont=cmr12 at 14pt
\myfont Hello, \TeX!
\bye

###2. LaTeX:基于 TeX 的高级封装

示例(LaTeX 代码)

tex
\documentclass{article}
\begin{document}
\section{Introduction}
Hello, \LaTeX!
\end{document}

###核心区别

特性TeXLaTeX
设计目标底层排版控制高层文档结构
语法复杂度复杂(类似编程)简单(声明式)
典型用户排版系统开发者、极客学术作者、普通用户
扩展性需手动实现一切通过宏包(如 hyperref)扩展
默认输出.dvi.dvi.pdf(现代工具链)

###类比解释

###技术关系

###总结

如果需要进一步解释某个具体细节(如宏包机制或引擎差异),可以继续讨论!

##引擎和使用

###1. 排版引擎(Engines)

引擎是实际执行排版工作的底层程序,负责解析代码、计算布局并生成输出文件(如 PDF/DVI)。
属于引擎的有

###2. 模板/格式(Formats)

格式是基于引擎的预定义命令集合(宏包),提供高层抽象,简化用户操作。
属于格式的有

###3. 前端命令(Frontends)

用户直接调用的命令,本质是 “引擎 + 格式” 的组合

命令实际调用说明
latexpdftex + LaTeX 格式传统 LaTeX(DVI 输出)。
pdflatexpdftex + LaTeX 格式直接生成 PDF(无 Unicode 支持)。
xelatexxetex + LaTeX 格式支持 Unicode 和系统字体。
lualatexluatex + LaTeX 格式支持 Lua 脚本和现代字体。

###关键区分

###常见误解澄清

  1. latex 不是引擎
    • 它是 LaTeX 格式通过 pdftex 引擎运行的接口(命令)。
  2. pdflatex vs pdftex
    • pdftex 是引擎,pdflatex = pdftex + LaTeX 格式。

##引擎(Engines)

###基础引擎

引擎名称特点输出格式主要用途
texKnuth原始引擎,底层控制.dvi历史兼容、底层排版开发
pdftexTeX的扩展,直接PDF输出.pdf传统LaTeX文档排版
xetex (XeTeX)支持Unicode和系统字体.xdv/.pdf多语言排版、系统字体支持
luatex (LuaTeX)内嵌Lua解释器,动态脚本.pdf复杂排版、自动化处理

###引擎特性对比

特性texpdftexxetexluatex
Unicode支持✔️✔️
OpenType字体✔️✔️
Lua脚本✔️
系统字体✔️✔️
输出格式DVIPDFXDV/PDFPDF

##格式(Formats)

###主要格式

格式名称基于引擎特点适用场景
plain textexKnuth提供的极简格式底层TeX编程
latex多引擎高级文档结构,宏包丰富学术论文、书籍、报告
contexluatex模块化设计,强大功能复杂排版、图形密集型文档

##前端命令(Frontend Commands)

###常用命令组合

命令实际组成输出格式特点
textex + plain tex.dvi原始TeX排版
latexpdftex + latex格式.dvi传统LaTeX处理
pdflatexpdftex + latex格式.pdf直接PDF输出
xelatexxetex + latex格式.pdfUnicode和字体支持
lualatexluatex + latex格式.pdfLua脚本+现代特性

##文件格式

###输入文件类型

扩展名类型说明
.tex源文件TeX/LaTeX源代码
.sty宏包文件LaTeX功能扩展包
.cls文档类文档类型定义
.bib参考文献BibTeX数据库文件

###输出文件类型

扩展名生成工具说明
.dvitex/latex设备无关文件
.pdfpdflatex/xelatex/lualatex便携文档格式
.xdvxetex扩展DVI格式
.aux所有引擎辅助信息文件
.log所有引擎编译日志文件

##工具链组件

###核心工具

工具名称用途示例
texluaLua解释器运行TeX相关Lua脚本
kpsewhich文件查找定位TeX文件位置
bibtex参考文献处理生成参考文献列表
makeindex索引生成创建文档索引

###编译工具链

graph TD
    A[.tex源文件] --> B{选择引擎}
    B --> C[pdflatex]
    B --> D[xelatex]
    B --> E[lualatex]

    C --> F[生成PDF]
    D --> F
    E --> F

    subgraph "可选处理"
        G[.bib文件] --> H[bibtex]
        I[.idx文件] --> J[makeindex]
        H --> K[.bbl文件]
        J --> L[.ind文件]
    end

    K --> C
    L --> C

##选择指南

###引擎选择建议

  1. 中文/多语言文档xelatexlualatex
  2. 传统英文文档pdflatex
  3. 需要动态功能lualatex(Lua脚本)
  4. 底层开发texluatex

##列举

###1. tex(原始 TeX 引擎)

###2. latex(LaTeX 格式 + pdfTeX 引擎)

###3. xetex(XeTeX 引擎,支持 Unicode 和系统字体)

###4. xelatex(LaTeX + XeTeX 引擎)

###5. luatex(LuaTeX 引擎,支持 Lua 脚本)

###6. lualatex(LaTeX + LuaTeX 引擎)

###总结对比

命令引擎输出格式Unicode 支持OpenType 支持Lua 支持典型用途
texTeXDVI原始 TeX 排版
latexpdfTeXDVI/PDF传统 LaTeX 文档
pdflatexpdfTeXPDF直接生成 PDF
xetexXeTeXXDV/PDF✔️✔️多语言排版(系统字体)
xelatexXeTeXPDF✔️✔️现代 LaTeX(中文友好)
luatexLuaTeXPDF✔️✔️✔️动态脚本控制排版
lualatexLuaTeXPDF✔️✔️✔️高级 LaTeX 自动化