大家好,我是田田老师。在日常的教学和科研工作中,无论是撰写教案、整理习题集,还是准备学术论文,我都曾为文档的排版问题而烦恼。Word等所见即所得的工具在处理复杂的数学公式、交叉引用和格式一致性时,常常力不从心。直到我系统学习了LaTeX,才真正体会到“内容与格式分离”带来的高效与优雅。这份学习日记,记录了我从零开始掌握LaTeX的完整历程,涵盖了安装、基础语法、实战模板到高级技巧的全过程。无论你是正在撰写毕业论文的学生,还是需要制作精美讲义和试卷的教师,或是任何对高质量排版有需求的开发者,这份笔记都能帮你绕过我踩过的坑,快速上手并应用于实际工作。
1. LaTeX 核心概念与优势:为什么选择它?
在深入操作之前,我们首先要理解LaTeX究竟是什么,以及它为何在学术和科技文档领域经久不衰。
1.1 LaTeX 是什么?
LaTeX(发音为“Lay-tech”或“Lah-tech”)是一种基于TeX的排版系统。它不是一个像Microsoft Word那样的“文字处理器”,而是一种“文档标记语言”。你可以把它想象成一种用于排版的编程语言:你编写带有特定命令的纯文本源文件(
.tex
文件),然后通过编译,生成格式精美、排版专业的PDF文档。
它的核心哲学是 “内容与格式分离” 。作者只需专注于文档的内容和结构(如章节、公式、图表引用),而诸如字体、间距、编号、目录生成等繁琐的排版细节,则由LaTeX系统和选定的文档类(Document Class)自动、一致地处理。
1.2 LaTeX 的主要优势
- 专业的数学公式排版 :这是LaTeX的杀手锏。其数学模式可以轻松、精确地排版从简单分式到复杂矩阵、积分、方程组在内的任何数学表达式,效果远非其他工具可比。
- 强大的交叉引用与自动化 :对章节、公式、图表、参考文献的引用完全自动化。编号会自动更新,无需手动核对。生成目录、图表目录只需一条命令。
- 格式的高度一致性 :通过预定义的文档类和宏包,确保整个文档的格式(如标题字体、页眉页脚、参考文献样式)严格统一,避免人工调整带来的不一致。
-
处理大型文档游刃有余
:可以将长篇论文、书籍拆分成多个
.tex文件,用主文件统一管理、编译,非常适合学位论文、书籍的写作。 - 免费、开源且跨平台 :LaTeX发行版和编辑器在Windows、macOS、Linux上均可运行,文档源文件是纯文本,兼容性极佳。
- 丰富的模板资源 :学术界有大量针对期刊、会议、学位论文的成熟模板,可以极大节省排版时间。
1.3 常见应用场景
- 学术论文与学位论文 :国内外众多高校和期刊的官方投稿模板均为LaTeX格式。
- 技术文档与书籍 :特别是包含大量数学公式、代码清单的计算机科学、数学、物理教材。
- 演示文稿(Beamer) :可以制作学术风格浓郁的幻灯片。
- 个人简历 :有众多设计优雅的简历模板。
- 试卷与习题集 :方便排版数学题、生成答案等。
与Word等工具相比,LaTeX的学习曲线初期较陡,但一旦掌握,在处理复杂、结构化文档时的效率和质量是碾压性的。接下来,我们就从环境搭建开始。
2. 环境准备:安装LaTeX发行版与编辑器
工欲善其事,必先利其器。LaTeX环境主要包括两部分:
LaTeX发行版
(包含编译引擎、宏包等)和
编辑器
(用于编写
.tex
源文件)。
2.1 安装 LaTeX 发行版
发行版是核心,它包含了编译你的文档所需的所有程序、字体和宏包。
-
Windows & macOS 用户推荐:TeX Live TeX Live 是最完整、维护最积极的跨平台发行版。对于国内用户,从 清华大学开源软件镜像站 下载是最快的方式。
- 访问清华镜像站 TeX Live 页面(搜索“清华镜像站 texlive”即可找到)。
-
下载
install-tl-windows.exe(Windows) 或install-tl-macosx.tar.gz(macOS)。 - 运行安装程序。安装过程可能需要较长时间(1-2小时)和较大磁盘空间(约4-8GB),请耐心等待。安装时建议选择“简化安装模式”并勾选“创建菜单快捷方式”。
-
macOS 用户备选:MacTeX MacTeX 本质上是为 macOS 定制的 TeX Live,附带一些macOS特有的工具和编辑器(如TeXShop)。安装包较大,但一体化程度高。
-
Linux 用户 通常可以通过包管理器直接安装。例如,在 Ubuntu/Debian 上:
sudo apt update sudo apt install texlive-full # 安装完整版,包含绝大多数宏包如果磁盘空间紧张,可以安装
texlive-base或texlive-latex-base,需要什么宏包再单独安装。
验证安装 :安装完成后,打开命令行(Windows: CMD/PowerShell; macOS: Terminal; Linux: Terminal),输入以下命令,如果显示版本信息则说明安装成功。
latex --version
xelatex --version # 推荐用于中文编译的引擎
2.2 选择与配置代码编辑器
虽然可以用任何文本编辑器编写
.tex
文件,但专用的LaTeX编辑器能提供语法高亮、命令补全、一键编译、实时预览等强大功能,极大提升效率。
-
Visual Studio Code + LaTeX Workshop 插件(强烈推荐) 这是我目前的主力组合,功能强大且免费。
- 安装 VS Code :从官网下载安装。
- 安装 LaTeX Workshop 插件 :在VS Code扩展商店中搜索“LaTeX Workshop”并安装。
-
基本配置
:为了更好支持中文,我们需要配置使用
XeLaTeX作为编译引擎。在VS Code中,按下Ctrl+,(Windows/Linux) 或Cmd+,(macOS) 打开设置,搜索latex-workshop.latex.tools和latex-workshop.latex.recipes。你可以使用以下配置片段(放入用户设置的settings.json中):
{ "latex-workshop.latex.tools": [ { "name": "xelatex", "command": "xelatex", "args": [ "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOCFILE%" ] }, { "name": "bibtex", "command": "bibtex", "args": [ "%DOCFILE%" ] } ], "latex-workshop.latex.recipes": [ { "name": "xelatex -> bibtex -> xelatex*2", "tools": [ "xelatex", "bibtex", "xelatex", "xelatex" ] } ], "latex-workshop.view.pdf.viewer": "tab", "latex-workshop.latex.autoClean.run": "onBuilt", "latex-workshop.latex.autoBuild.run": "onSave" }这个配方(recipe)能正确处理包含参考文献的文档。
-
其他优秀编辑器
- TeXstudio : 专为LaTeX设计的开源集成环境,功能全面,开箱即用。
- Overleaf : 在线协作平台,无需安装,内置模板丰富,非常适合团队协作或初学者尝鲜。但高级功能需要付费,且依赖网络。
环境检查
:创建一个简单的测试文件
test.tex
,用编辑器打开并输入以下内容:
\documentclass{article}
\usepackage{ctex} % 中文支持宏包
\begin{document}
你好,LaTeX!这是一个测试文档。
简单的数学公式:$E = mc^2$。
\end{document}
在VS Code中,保存文件后,侧边栏会出现TeX图标,点击“编译”或使用快捷键(如
Ctrl+Alt+B
),如果成功生成
test.pdf
并正确显示中文和公式,则环境配置成功。
3. LaTeX 基础语法与文档结构
让我们从一个最基础的文档开始,逐步拆解LaTeX的语法和结构。
3.1 一个最小的 LaTeX 文档
\documentclass[12pt, a4paper]{article} % 文档类:文章,设置基础字号和纸张
\usepackage{ctex} % 引入宏包:提供中文支持
\title{我的第一个\LaTeX 文档} % 标题
\author{田田老师} % 作者
\date{\today} % 日期,\today 会自动替换为当前日期
\begin{document} % 文档内容开始
\maketitle % 生成标题区域
\section{引言} % 一级章节
这是我的第一个LaTeX文档。我很高兴开始学习这个强大的排版系统。
\section{数学公式示例}
行内公式:勾股定理 $a^2 + b^2 = c^2$。
行间公式(带编号):
\begin{equation}
E = mc^2
\end{equation}
\subsection{列表环境} % 二级章节
\begin{itemize}
\item 无序列表项一
\item 无序列表项二
\end{itemize}
\begin{enumerate}
\item 有序列表项一
\item 有序列表项二
\end{enumerate}
\end{document} % 文档内容结束
代码解析 :
-
\documentclass{...}: 必选命令 ,定义文档类型。article适用于短文、报告,其他常用类型还有report(报告、学位论文)、book(书籍)、beamer(幻灯片)。 -
\usepackage{...}: 引入宏包以扩展功能。ctex宏包是处理中文的现代解决方案,它自动配置了中文字体和排版细节。 -
\begin{document} ... \end{document}: 文档内容的 环境 ,所有可见内容都必须放在这里面。 -
\section{}, \subsection{}: 创建章节标题,LaTeX会自动编号。 -
$...$: 行内数学模式 ,公式与文字在同一行。 -
\begin{equation} ... \end{equation}: 行间数学环境 ,公式单独成行并自动编号。 -
\begin{itemize},\begin{enumerate}: 创建无序和有序列表的环境。
3.2 常用命令与环境
-
命令(Command)
: 以反斜杠
\开头,用于执行特定操作。有的带参数,如\section{标题};有的带可选参数,如\documentclass[选项]{类}。 -
环境(Environment)
: 以
\begin{环境名}开始,以\end{环境名}结束。用于定义一块具有特定格式的区域,如公式、列表、表格、图片。 -
注释
: 使用百分号
%,该行%之后的内容将被编译器忽略。 -
特殊字符
:
# $ % ^ & _ { } ~ \在LaTeX中有特殊含义,如需直接输出,需加反斜杠转义(如\$输出美元符号)或使用特定命令(如\textbackslash输出反斜杠)。
4. 核心功能实战详解
掌握了基本结构后,我们来深入LaTeX最核心的几个功能:数学公式、图表插入、交叉引用和参考文献管理。
4.1 数学公式排版
LaTeX的数学排版分为两种模式:
行内模式
(
$...$
或
\(...\)
) 和
行间模式
(
\[...\]
或
equation
等环境)。
常用数学符号与命令示例 :
\section{数学公式大全}
行内公式示例:导数 $f'(x) = \frac{df}{dx}$,偏导 $\frac{\partial u}{\partial t}$,求和 $\sum_{i=1}^{n} i$。
行间公式示例(无编号):
\[
\int_{a}^{b} f(x)\,dx = F(b) - F(a)
\]
行间公式示例(有编号,可引用):
\begin{equation}\label{eq:matrix}
\mathbf{A} = \begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22}
\end{pmatrix}
\end{equation}
如公式\eqref{eq:matrix}所示,这是一个矩阵。% 使用 \eqref 引用公式编号
方程组(align环境,按&对齐):
\begin{align}
x + y &= 5 \label{eq:1}\\
2x - y &= 1 \label{eq:2}
\end{align}
公式\ref{eq:1}和\ref{eq:2}构成一个方程组。
关键点 :
-
\frac{分子}{分母}: 生成分式。 -
\sum, \int: 求和、积分符号。上下标用_和^。 -
\begin{pmatrix} ... \end{pmatrix}: 生成圆括号矩阵。用&分隔列,\\换行。 -
\mathbf{}: 将字体设为粗体(常用于向量、矩阵)。 -
\label{标记}: 为公式(或章节、图表)打上标签。 -
\ref{标记}或\eqref{标记}: 引用标签对应的编号。\eqref会自动加上括号。
4.2 插入图片与表格
插入图片
:
需要引入
graphicx
宏包。图片建议使用
.pdf
,
.png
,
.jpg
格式,并放在与
.tex
文件相同的目录或子目录下。
\usepackage{graphicx} % 在导言区引入
\begin{document}
...
\begin{figure}[htbp] % 浮动环境,[htbp]是位置参数(here, top, bottom, page)
\centering % 居中
\includegraphics[width=0.8\textwidth]{example-image.png} % 宽度设为文本宽度的80%
\caption{这是一张示例图片的标题}\label{fig:example} % 标题和标签
\end{figure}
如图\ref{fig:example}所示,这是一个图片插入的示例。
\end{document}
创建表格
:
tabular
环境是基础,
booktabs
宏包可以制作更专业的三线表。
\usepackage{booktabs} % 在导言区引入,用于绘制美观的表格线
\begin{document}
...
\begin{table}[htbp]
\centering
\caption{学生成绩表示例}\label{tab:score}
\begin{tabular}{lccc} % l:左对齐,c:居中,r:右对齐。这里定义四列对齐方式
\toprule % 上横线
\textbf{姓名} & \textbf{数学} & \textbf{物理} & \textbf{总分} \\
\midrule % 中横线
张三 & 95 & 88 & 183 \\
李四 & 89 & 92 & 181 \\
王五 & 78 & 85 & 163 \\
\bottomrule % 下横线
\end{tabular}
\end{table}
表\ref{tab:score}展示了使用booktabs宏包排版的表格。
\end{document}
4.3 交叉引用与自动编号
LaTeX的自动编号和交叉引用是其核心优势之一。你需要做两件事:
-
打标签
:在需要引用的对象(章节、公式、图、表)后使用
\label{key}命令。key是你自定义的唯一标识符,建议使用前缀如fig:、tab:、eq:、sec:以便区分。 -
引用
:在文中需要出现编号的地方使用
\ref{key}(生成纯数字)或\eqref{key}(用于公式,生成带括号的数字)。
重要规则
:为了确保引用编号正确,通常需要
编译两次
。第一次编译生成
.aux
文件记录标签和编号,第二次编译读取该文件并正确插入引用。如果添加或删除了被引用的对象,可能需要编译三次。在VS Code LaTeX Workshop中,使用我们之前配置的
xelatex -> bibtex -> xelatex*2
配方可以自动处理这个过程。
4.4 参考文献管理(BibTeX)
手动管理参考文献格式是噩梦。LaTeX配合BibTeX可以自动化此过程。
步骤1:创建
.bib
数据库文件
新建一个文本文件,如
refs.bib
,内容如下。每条文献有一个唯一ID(如
einstein1905
)和类型(如
article
,
book
)。
@article{einstein1905,
title={Does the inertia of a body depend upon its energy content?},
author={Einstein, Albert},
journal={Annalen der Physik},
volume={18},
pages={639--641},
year={1905}
}
@book{knuth1984,
title={The {\TeX}book},
author={Knuth, Donald E.},
year={1984},
publisher={Addison-Wesley}
}
步骤2:在
.tex
文件中引用
\documentclass{article}
\usepackage{ctex}
\usepackage[backend=biber, style=gb7714-2015]{biblatex} % 推荐使用biblatex宏包,支持中文国标样式
\addbibresource{refs.bib} % 导入参考文献数据库
\begin{document}
\cite{knuth1984} 是一本关于 \TeX{} 的经典著作。相对论的相关论述见\cite{einstein1905}。
% 打印参考文献列表
\printbibliography[title={参考文献}] % 使用biblatex的命令
\end{document}
注意
:这里使用了更现代的
biblatex
+
biber
后端,而非传统的 BibTeX,它对中文和复杂样式支持更好。编译命令链需要包含
biber
。我们之前在VS Code中配置的配方已经包含了
bibtex
步骤,对于
biblatex
,需要将工具中的
bibtex
命令改为
biber
,并将参数改为
%DOCFILE%
(不带扩展名)。
5. 使用模板与自定义格式
不要从零开始造轮子!利用模板是高效使用LaTeX的关键。
5.1 寻找与使用模板
- Overleaf 模板库 :Overleaf官网有海量高质量模板,覆盖几乎所有主流期刊、会议和高校的学位论文要求。
- CTeX 套装自带模板 :旧版CTeX套装包含许多中文模板,但现已不推荐安装完整CTeX套装。
-
GitHub 或 GitLab
:搜索“
[学校/期刊名] latex template”,如“Tsinghua University thesis LaTeX template”。 - 各大高校官网 :许多学校的研究生院会提供官方的LaTeX学位论文模板。
使用模板步骤 :
-
下载模板文件(通常是一个包含
.tex,.cls,.sty,.bib等文件的压缩包)。 -
仔细阅读
README.md或main.tex中的注释说明。 - 用你自己的内容替换示例内容。
-
根据模板要求编译(可能是
pdflatex,xelatex,lualatex)。
5.2 基础自定义:页边距、行间距、字体
如果你只是想微调现有文档类的样式,可以在导言区使用一些宏包和命令。
\documentclass[12pt, a4paper]{article}
\usepackage{ctex}
\usepackage{geometry} % 用于调整页边距
\usepackage{setspace} % 用于调整行间距
% 设置页边距
\geometry{left=2.5cm, right=2.5cm, top=2.5cm, bottom=2.5cm}
% 设置行间距为1.5倍
\onehalfspacing
% 或者使用 \doublespacing 设置双倍行距
% 使用 \singlespacing 恢复单倍行距
% 设置字体(ctex宏包已处理中文,这里设置西文字体)
\usepackage{fontspec}
\setmainfont{Times New Roman} % 设置西文主字体
\begin{document}
...
\end{document}
6. 常见问题与排查思路(FAQ)
在学习和使用LaTeX的过程中,你一定会遇到各种报错和问题。以下是一些高频问题的排查思路。
| 问题现象 | 可能原因 | 解决思路 |
|---|---|---|
编译错误:
Undefined control sequence.
|
1. 命令拼写错误。
2. 未引入所需的宏包。 |
1. 检查错误行附近的命令拼写。
2. 确认是否使用了
\usepackage{...}
引入相关宏包。
|
| 中文无法显示或乱码 |
1. 未使用支持中文的编译引擎(如
XeLaTeX
或
LuaLaTeX
)。
2. 未引入中文宏包(如
ctex
)。
3. 源文件编码不是UTF-8。 |
1. 将编译器切换为
XeLaTeX
。
2. 在导言区添加
\usepackage{ctex}
。
3. 确保你的
.tex
文件以
UTF-8 无BOM
格式保存。
|
参考文献引用显示为
[?]**
|
1. 未成功运行BibTeX/Biber。
2. 引用键(cite key)拼写错误。 3. 编译次数不够。 |
1. 确保编译链包含
bibtex
或
biber
步骤。
2. 检查
\cite{}
中的键名是否与
.bib
文件中的ID完全一致。
3. 按顺序完整编译:
xelatex
->
biber
->
xelatex
->
xelatex
。
|
| 图片/表格找不到 |
1. 文件名或路径错误(大小写敏感)。
2. 文件扩展名未包含或错误。 |
1. 检查
\includegraphics{文件名}
中的路径和文件名是否正确。
2. 可以省略扩展名(如
.png
),LaTeX会尝试查找,但明确写出更保险。
|
| 公式编号或交叉引用错误 |
1. 新增/删除被引用对象后未重新编译足够次数。
2.
\label
命令放在了错误的位置(应放在
\caption
或
\begin{equation}
等命令之后)。
|
1.
连续编译两次
。在VS Code中,使用清理辅助文件后再编译的功能。
2. 确保
\label
紧跟在需要编号的对象命令之后。
|
File ended while scanning use of \@writefile
等诡异错误
|
辅助文件(
.aux
,
.toc
等)损坏。
|
清理所有辅助文件
(
.aux
,
.log
,
.toc
,
.lof
,
.lot
,
.bbl
,
.blg
,
.out
,
.synctex.gz
等),然后重新编译。VS Code LaTeX Workshop插件有“清理辅助文件”的按钮。
|
通用排错流程 :
-
仔细阅读错误信息
:编译器会在
.log文件和编辑器终端里给出错误位置(行号)和提示。 - 定位到错误行 :查看错误行及附近几行的代码。
-
检查常见语法
:括号
{}是否匹配?命令是否拼写正确?是否缺少\?环境是否以\end{...}正确闭合? - 检查宏包和命令 :是否引入了必要的宏包?命令是否来自已引入的宏包?
- 简化测试 :如果一段代码报错,尝试将其注释掉,或单独复制到一个新的最小文档中测试。
- 善用搜索引擎 :将错误信息直接复制到搜索引擎中,大概率能在 Stack Exchange 或中文论坛找到答案。
7. 最佳实践与进阶建议
当你熟悉基础操作后,遵循以下最佳实践能让你的LaTeX写作更加顺畅和专业。
7.1 项目管理与文件组织
对于大型文档(如学位论文),切勿将所有内容写在一个文件里。
my-thesis/ # 项目根目录
├── figures/ # 存放所有图片
├── chapters/ # 存放各章节
│ ├── intro.tex
│ ├── related-work.tex
│ └── conclusion.tex
├── refs.bib # 参考文献数据库
├── my-thesis.cls # 自定义文档类(可选)
├── my-thesis.sty # 自定义宏包(可选)
└── main.tex # 主文件,用于组织所有部分
主文件
main.tex
示例
:
\documentclass[12pt, a4paper]{report}
\usepackage{ctex}
\usepackage{graphicx}
\graphicspath{{figures/}} % 设置图片默认搜索路径
\usepackage{subfiles} % 用于管理子文件
\begin{document}
\include{chapters/titlepage} % 封面页
\tableofcontents % 目录
\include{chapters/intro} % 引入引言章节
\include{chapters/related-work} % 引入相关工作章节
% ... 引入更多章节
\bibliographystyle{plain} % 如果使用传统BibTeX
\bibliography{refs} % 如果使用传统BibTeX
% 如果使用biblatex,则用 \printbibliography
\end{document}
在子文件(如
chapters/intro.tex
)中,
不需要
\documentclass
和
\begin{document}
,直接写章节内容即可。
7.2 写作与版本控制
- 纯文本的优势 :LaTeX源文件是纯文本,非常适合用 Git 进行版本控制。你可以清晰地追踪每次修改的内容,方便协作和回滚。
-
注释的妙用
:多用
%注释来解释复杂的代码块或待办事项。 - 保持代码整洁 :适当缩进、换行,让源文件也易于阅读。相关设置(如宏包加载、自定义命令)尽量放在导言区。
7.3 性能与编译优化
-
仅编译所需部分
:对于超长文档,可以使用
\includeonly{chapters/current}命令只编译指定章节,加快调试速度。 -
使用外部化(TikZ Externalize)
:如果文档中包含大量复杂的TikZ绘图,可以使用
\usetikzlibrary{external}和\tikzexternalize命令将图形预编译为PDF,大幅提升后续编译速度。 -
选择合适的引擎
:对于纯英文文档,
pdfLaTeX最快。对于包含中文或复杂字体的文档,XeLaTeX是更好的选择。LuaLaTeX对OpenType字体和复杂排版支持最强,但速度稍慢。
7.4 持续学习资源
-
官方文档与指南
:
texdoc命令是你的好朋友。在命令行输入texdoc ctex、texdoc graphicx等可以查看任何已安装宏包的官方文档(英文)。 -
社区与问答
:
- TeX - LaTeX Stack Exchange :全球最专业的LaTeX问答社区,几乎任何问题都能找到答案。
- CTeX 论坛 :国内老牌LaTeX社区,中文资料丰富。
- 经典书籍 :《LaTeX入门》(刘海洋著)是优秀的中文入门教材。
从被复杂的公式和参考文献格式折磨,到从容地驾驭数十页的论文和教案,LaTeX给我的教学和科研工作带来了质的飞跃。它更像是一位严谨的合作伙伴,让你专注于内容创作,而将排版这件苦差事处理得无可挑剔。希望这份学习日记能成为你LaTeX之旅的一张实用地图。不要被初期的命令行和编译错误吓退,多动手实践,从模仿一个简单的模板开始,逐步探索更强大的功能。当你第一次看到自己排版的精美PDF诞生时,那种成就感一定会让你觉得所有的学习都是值得的。如果在实践中遇到具体问题,不妨回到第6节的排查思路,或者去那些活跃的社区寻找答案。祝你排版愉快!
950




被折叠的 条评论
为什么被折叠?



