当前位置: 首页 > news >正文

lshort笔记:LaTeX 的基本概念(一)

本文内容来自一份 (不太) 简短的 LATEX2ε 介绍。

本章对 TeX 与 LaTeX 的基本概念和整体结构作了简要介绍。首先说明了 TeX 与 LaTeX 的来源和优缺点。随后通过一个简单的 Hello, World 示例,展示了 LaTeX 文档的基本组成形式。

在此基础上,进一步介绍了 LaTeX 中的命令与环境,以及源代码在逻辑和结构上的组织方式。同时,对文档类与宏包的作用进行了说明,并列举了 LaTeX 编译过程中涉及的常见文件类型与文件组织方式。最后,对 TeX / LaTeX 中常见的术语和相关概念进行了集中说明。


概述

$\TeX{}$

$\TeX{}$ 是高德纳 (Donald E.~Knuth)为排版文字和数学公式而开发的软件。

$\LaTeX{}$

$\LaTeX{}$ 是一种使用 $\TeX{}$ 程序作为排版引擎的格式,可以粗略地将它理解成是对 $\TeX{}$ 的一层封装。 $\LaTeX{}$ 最初的设计目标是分离内容与格式,以便作者能够专注于内容创作而非版式设计,并能以此得到高质量排版的作品。$\LaTeX{}$ 起初由 Leslie Lamport 博士开发,目前由 $\LaTeX{}$ 工作组1进行维护。


Hello, World

\documentclass{article}
\begin{document}
``Hello world!'' from \LaTeX.
\end{document}
pdflatex helloworld # or
# xelatex helloworld

下面是排版中文的一个最简示例。编译的方式与上一份源代码相同,但需使用 XeLaTeX 编译方式。

\documentclass{ctexart}
\begin{document}
“你好,世界!”来自\LaTeX{} 的问候。
\end{document}

$\LaTeX{}$ 命令和代码结构

一些 $\LaTeX{}$ 命令可以接收一些参数,参数的内容会影响命令的效果。$\LaTeX{}$ 的参数分为可选参数和必选参数。可选参数以方括号 [ ] 包裹;必选参数一般以花括号 { } 包裹2

$\LaTeX{}$ 中还包括环境,用以令一些效果在局部生效,或是生成特殊的文档元素。$\LaTeX{}$ 环境的用法为一对命令 \begin\end

\begin{<environment name>}[<optional arguments>]{<mandatory arguments>}
...
\end{<environment name>}

$\LaTeX{}$ 源代码以一个 \{documentclass} 命令作为开头,它指定了文档使用的文档类document 环境当中的内容是文档正文。 在 \documentclass\begin{document} 之间的位置称为导言区。 在导言区中常会使用 \usepackage{} 命令调用宏包,还会进行文档的全局设置。

\documentclass{...}  % ... 为某文档类
% 导言区
\usepackage{comment}
\begin{document}
% 正文内容
\end{document}
% 此后内容会被忽略

$\LaTeX{}$ 宏包和文档类

文档类

文档类规定了 $\LaTeX{}$ 源代码所要生成的文档的性质——普通文章、书籍、演示文稿、个人简历等。$\LaTeX{}$ 源代码的开头须用\documentclass指定文档类: \documentclass[<options>]{<class-name>} 其中<class-name>为文档类的名称,如 $\LaTeX{}$ 提供的 articlereportbook,在其基础上派生的一些文档类,如支持中文排版的 ctexartctexrepctexbook,或者有其它功能的文档类,如 moderncvbeamer 等。$\LaTeX{}$ 提供的基础文档类见下表,其中前三个习惯上称为“标准文档类”。

文档类 说明
article 文章格式的文档类,广泛用于科技论文、报告、说明文档等。
report 长篇报告格式的文档类,具有章节结构,用于综述、长篇论文、简单的书籍等。
book 书籍文档类,包含章节结构和前言、正文、后记等结构。
proc 基于article 文档类的一个简单的学术文档模板。
slides 幻灯格式的文档类,使用无衬线字体。
minimal 一个极其精简的文档类,只设定了纸张大小和基本字号,用作代码测试的最小工作示例。

可选参数 <options> 为文档类指定选项,以全局地规定一些排版的参数,如字号、纸张大小、单双面等等。比如调用 article 文档类排版文章,指定纸张为 A4 大小,基本字号为 11pt,双面排版: \documentclass[11pt,twoside,a4paper]{article}

宏包

在使用 $\LaTeX{}$ 时,时常需要依赖一些扩展来增强或补充 $\LaTeX{}$ 的功能,比如排版复杂的表格、插入图片、增加颜色甚至超链接等等。这些扩展称为宏包。调用宏包的方法类似调用文档类的方法: \usepackage[<options>]{<package-name>}

\usepackage可以一次性调用多个宏包,在 <package-name> 中用逗号隔开。

% 一次性调用三个排版表格常用的宏包
\usepackage{tabularx, makecell, multirow}

Help Document:

texdoc <pkg-name>

$\LaTeX{}$ 用到的文件一览

每个宏包和文档类都是带特定扩展名的文件,除此之外也有一些文件出现于 $\LaTeX{}$ 模板中:

.sty 宏包文件。宏包的名称与文件名一致
.cls 文档类文件。文档类名称与文件名一致
.bib 参考文献数据库文件
.bst 用到的参考文献格式模板

在编译过程中可能会生成相当多的辅助文件和日志。一些功能如交叉引用、参考文献、目录、索引等,需要先通过编译生成辅助文件,然后再次编译时读入辅助文件得到正确的结果,所以复杂的源代码可能要编译多次。

中间文件 作用
.log 排版引擎生成的日志文件,供排查错误使用
.aux 生成的主辅助文件,记录交叉引用、目录、参考文献的引用等
.toc 生成的目录记录文件
.lof 生成的图片目录记录文件
.lot 生成的表格目录记录文件
.bbl BibTeX生成的参考文献记录文件
.blg BibTeX生成的日志文件
.idx 生成的供 makeindex 处理的索引记录文件
.ind makeindex 处理 .idx 生成的用于排版的格式化索引文件
.ilg makeindex 生成的日志文件
.out hyperref 宏包生成的 PDF 书签记录文件

文件的组织方式

当编写长篇文档时,例如当编写书籍、毕业论文时,单个源文件会使修改、校对变得十分困难。将源文件分割成若干个文件,例如将每章内容单独写在一个文件中,会大大简化修改和校对的工作。 $\LaTeX{}$ 提供了命令 \include 用来在源代码里插入文件:

\include{<filename>}

<filename> 为文件名(不带 .tex 扩展名)3,如果和要编译的主文件不在一个目录中,则要加上相对或绝对路径,例如:

\include{chapters/file} % 相对路径
\include{/home/Bob/file} % *nix(包含 Linux、macOS)绝对路径
\include{D:/file} % Windows 绝对路径,用正斜线

值得注意的是 \include 在读入之前会另起一页。有的时候我们并不需要这样,而是用\input 命令,它纯粹是把文件里的内容插入

\input{<filename>}

当导言区内容较多时,常常将其单独放置在一个 .tex 文件中,再用 \input 命令插入。复杂的图、表、代码等也会用类似的手段处理。

$\LaTeX{}$ 还提供了一个 \includeonly 命令来组织文件,用于导言区,指定只载入某些文件。导言区使用了 \includeonly 后,正文中不在其列表范围的 \include 命令不会起效:

\includeonly{<filename1>,<filename2>,...}

需要注意的是,使用 \include\input 命令载入的文件名最好不要加空格和特殊字符,也尽量避免使用中文名,否则很可能会出错

最后介绍一个实用的工具宏包syntonly。加载这个宏包后,在导言区使用 \syntaxonly 命令,可令编译后不生成 DVI 或者 PDF 文档,只排查错误,编译速度会快不少:

\usepackage{syntonly}
\syntaxonly

如果想生成文档,则用 % 注释掉 \syntaxonly 命令即可。


$\LaTeX{}$ 和 $\TeX{}$ 相关的术语和概念

  • 引擎 全称为排版引擎,是编译源代码并生成文档的程序,如 pdfTeXXeTeX等 。有时也称为编译器
  • 格式 是定义了一组命令的代码集(类似于库函数)。$\LaTeX{}$ 就是最广泛应用的一个格式,高德纳本人还编写了一个简单的 plain TeX 格式,没有定义诸如 \documentclass\section 等命令。
  • 编译命令 是实际调用的、结合了引擎和格式的命令。如 xelatex 命令是结合 XeTeX引擎和 $\LaTeX{}$ 格式的一个编译命令(类似于编译并链接库函数的过程)。

常见的引擎、格式和编译命令的关系总结于下表。

文档格式 plain TeX 格式 LaTeX 格式
TeX 引擎 DVI tex N/A
pdfTeX 引擎 DVI etex latex
PDF pdftex pdflatex
XeTeX 引擎 PDF xetex xelatex
LuaTeX 引擎 PDF luatex lualatex

latex 编译命令和 $\LaTeX{}$ 格式往往容易混淆,在讨论关于 $\LaTeX{}$ 的时候需要明确。

在此介绍一下几个编译命令的基本特点:

编译命令 解释
latex 虽然名为 latex 命令,底层调用的引擎其实是 pdfTeX。 该命令生成 dvi 格式的文档, 用 dvipdfmx 命令可以将其转为 pdf
pdflatex 底层调用的引擎也是 pdfTeX,可以直接生成 pdf 格式的文档
xelatex 底层调用的引擎是 XeTeX,支持 UTF-8 编码和对 TrueType/OpenType 字体的调用。当前较为方便的中文排版解决方案基于 xelatex
lualatex 底层调用的引擎是 LuaTeX。这个引擎在 pdfTeX 引擎基础上发展而来,除了支持 UTF-8 编码和对 TrueType/OpenType 字体的调用外,还支持通过 Lua 语言扩展 $\TeX{}$ 的功能。 lualatex 编译命令下的中文排版支持需要借助 luatexja宏包

  1. https://www.latex-project.org ↩

  2. 以单个字符作为命令的参数时,可以不加括号。例如,在数学环境下,\frac12\frac{1}{2} 的效果是一样的。 ↩

  3. $\LaTeX{}$ 2020-10-01 版本之后允许添加扩展名。 ↩


原文链接:https://zhuang.dev/reading/lshort/lshort-01-basic-concepts/

http://www.jsqmd.com/news/1176689/

相关文章:

  • 为什么选择Pact Broker?探索消费者驱动契约测试的革命性工具
  • Unity依赖注入框架VContainer实战:解耦游戏架构与提升可测试性
  • AList:一站式文件管理解决方案,打破存储孤岛的革命性工具
  • Buzz语音转文字工具Faster Whisper模型下载失败终极指南:3步诊断与完整修复
  • 从源码解析CursorWheelLayout:理解Android自定义ViewGroup的旋转机制
  • 闲置电视盒子如何变身全能家庭服务器?amlogic-s9xxx-armbian项目深度解析
  • Django API Domains部署策略:容器化、微服务化与持续集成
  • 2026长三角瓶装水贴牌代工哪家靠谱?6家主流厂商深度测评(企业采购必看) - GrowthUME
  • KIMI AI免费API:5分钟搭建智能对话接口的完整实践指南
  • 别再被坑了!泉州黄金回收冷知识大盘点:5家正规店实测教你避开“高价”陷阱,足金18K铂金金条全搞定 - 小城生活闲谈
  • 【uniapp微信小程序代码分析】为什么 uni.showToast 后要加 setTimeout 才能页面跳转?
  • Qt 6.2 应用发布:3种单文件封装方案体积与兼容性对比
  • 如何在 NuvioMobile 中快速设置 Stremio 插件:10分钟搞定媒体流服务
  • Chopper架构设计模式:Clean Architecture和MVVM的最佳实践
  • Web Audio API 技术深度解析:浏览器音频处理架构与高性能实现
  • OrcaSlicer自适应床网技术完全指南:让3D打印平台不平整成为历史
  • Cocos2d-x v3.6 C++ API中文手册:模块化解析与实战避坑指南
  • 2026年7月最新苏州浪琴官方售后客服电话及服务网点地址查询 - 浪琴官方售后服务中心
  • 2026 安徽蚌埠市全区域彩钢瓦修缮公司 TOP4 权威推荐|彩钢瓦翻新 / 防水 / 补漏 / 除锈喷漆优选指南 + 避坑攻略 - 本地便民网
  • The Vim Way
  • Torzu:重新定义Switch模拟体验的开源革新者
  • Unity ML-Agents强化学习实战:训练自适应AI Boss的完整指南
  • 构建企业级Android应用架构:基于MVP+Dagger2+RxJava的生产就绪方案
  • 2026软件测试就业真相:月薪8k到年薪百万,差距只在这3个能力
  • P15499 [ICPC 2025 APC] Secret Lilies and Roses 题解
  • Lite³ 设计哲学:为什么选择无模式架构和 JSON 兼容性
  • MediaCrawler:5分钟搞定5大平台数据采集,无需破解加密算法
  • HarmonyOS APP实战-画图APP - 第7篇:文本绘制功能
  • 2026年7月最新金华美度官方售后客服服务电话及地址网点大全 - 亨得利钟表维修中心
  • 【UniApp小程序知识点总结】Vue3 与 Uniapp 中 defineProps 的对比