1. 从“劝退”到“真香”我为什么劝你认真学LaTeX如果你经常需要和公式、论文、报告打交道尤其是理工科的学生或研究者那你大概率听过LaTeX这个名字。第一次接触它时很多人会被它那看似“反人类”的纯文本编辑方式和一堆需要记忆的命令吓退转头又回到了熟悉的Word或WPS的怀抱。我最初也是其中一员觉得用鼠标点点、拖拖就能排好版干嘛要自找麻烦去敲代码直到我因为一篇包含几十个复杂公式和交叉引用的硕士论文在Word里被频繁的格式崩溃、图片乱跑、编号错乱折磨到几乎崩溃时才被迫重新捡起LaTeX。而这次“被迫”的尝试让我彻底转变了看法——LaTeX不是麻烦的制造者它恰恰是解决排版麻烦的终极利器。它让你从繁琐的格式调整中解放出来专注于内容本身。这篇文章就是把我从“小白”到“依赖”过程中那些最核心、最常用、最能立刻上手的LaTeX基础语法和实战心得毫无保留地分享给你。无论你是正在为课程报告发愁的本科生还是即将开始撰写学位论文的研究生或是需要制作专业技术文档的工程师掌握LaTeX基础都能让你的文档质量和工作效率提升一个显著的档次。2. LaTeX核心思想与工作环境搭建2.1 理解“内容与格式分离”的哲学在开始敲下第一个命令之前理解LaTeX的设计哲学至关重要。这与我们熟悉的“所见即所得”WYSIWYG编辑器如Word有本质区别。在Word里你一边输入文字一边设置字体、调整间距、插入图表并手动定位。文档的“内容”你写的文字、公式和“格式”它们看起来的样子是紧密耦合、同时处理的。这在小文档中很方便但当文档变得复杂这种耦合就成了噩梦你想调整一下全局的页边距可能所有图片位置都乱了你想在第二章前面插入一个新章节后面所有章节、图表、公式的编号都需要手动更新极易出错。LaTeX则采用了“内容与格式分离”的思想。你的任务就是在一个纯文本文件后缀为.tex中用特定的“命令”Command来“标记”Markup你的内容比如用\section{引言}告诉系统“这是一级标题标题文字是‘引言’”用\begin{equation}...\end{equation}包裹一个公式。你完全不关心“引言”这个标题最终是20磅的黑体还是18磅的楷体也不关心公式是居中还是左对齐。这些所有的格式问题都由一个叫做“文档类”Document Class和一系列“样式包”Packages的预定义规则库来决定。你只需要关心写什么和结构是什么LaTeX引擎如pdflatex,xelatex会读取你的.tex源文件结合选定的文档类和样式包经过编译生成一个完美格式化的PDF文件。这种方式的优势是巨大的格式一致性通篇的标题、图表、公式格式自动统一专业美观。引用自动化对章节、公式、图表、参考文献的引用完全自动编号和更新。专注内容作者可以全心投入内容创作不被排版细节干扰。复杂元素处理对于数学公式、算法伪代码、复杂表格的排版能力是Word难以企及的。2.2 选择你的“战壕”本地安装 vs. 在线平台工欲善其事必先利其器。搭建LaTeX环境主要有两种路径适合不同人群。方案一本地安装推荐给长期、重度用户这是最经典、功能最完整、自由度最高的方式。你需要安装两个核心组件LaTeX发行版Distribution它包含了LaTeX引擎、编译器以及成千上万个宏包和字体。相当于一个“LaTeX全家桶”。Windows用户首选MiKTeX。它体积相对较小并且具有“按需安装”的特性即只有在编译文档真正用到某个宏包时才会自动下载安装非常友好。macOS用户首选MacTeX。它是为macOS深度优化的发行版集成度极高。Linux用户通过包管理器安装即可如sudo apt install texlive-full(Ubuntu/Debian) 或sudo yum install texlive-scheme-full(CentOS/Fedora)。编辑器Editor用来编写.tex源文件的工具。一个好的编辑器能极大提升效率。TeXstudio跨平台开源免费。功能极其全面内置PDF预览支持正向和反向搜索即点击PDF跳转到源码点击源码跳转到PDF、语法高亮、命令补全、一键编译等对新手和专家都非常友好是我的主力推荐。Visual Studio Code LaTeX Workshop插件如果你已经是VS Code的用户那么安装LaTeX Workshop插件后它能提供不输于专业LaTeX编辑器的体验高度可定制化。Overleaf本地模式著名的在线平台Overleaf也提供了本地版本Overleaf Desktop结合了其优秀的UI和本地编译的速度。注意初次安装LaTeX发行版尤其是完整版Tex Live可能需要下载数GB的文件安装时间较长。对于新手如果只是想快速尝试可以先使用在线平台。方案二在线平台推荐给初学者、轻量用户或协作场景完全无需安装打开浏览器就能用。Overleaf这是目前最流行、最强大的在线LaTeX平台。它提供了丰富的模板、实时协作功能像Google Docs一样多人同时编辑、历史版本管理以及几乎所有的常用宏包。免费账户基本能满足个人学习和小型项目需求。它的最大优点是开箱即用环境统一没有兼容性问题特别适合课程作业、合作写论文。中文支持提示在Overleaf中如果需要编译中文文档记得将编译器选择为XeLaTeX或LuaLaTeX因为它们对Unicode和系统字体的支持更好。在文档开头使用\documentclass{ctexart}等CTeX文档类可以极简地支持中文。我的选择建议如果你是学生并且确定未来几年会经常使用LaTeX比如写论文我强烈建议直接进行本地安装TeXstudio MiKTeX/MacTeX。本地编译速度更快离线可用且能更深入地理解和控制整个流程。如果只是想临时交个作业或者不确定是否要深入那么Overleaf是最佳起点它能让你在5分钟内就开始撰写第一个LaTeX文档感受其魅力。3. 从零到一你的第一个LaTeX文档解剖让我们从一个最基础的、能编译通过的文档开始逐行解析每一部分的作用。请在编辑器或Overleaf中新建一个文件命名为hello.tex输入以下内容。\documentclass{article} % 第1行声明文档类型 \usepackage[UTF8]{ctex} % 第2行引入中文支持宏包 \title{我的第一个\LaTeX 文档} % 第4行定义标题 \author{你的名字} % 第5行定义作者 \date{\today} % 第6行定义日期\today 会自动生成当前日期 \begin{document} % 第8行文档内容开始 \maketitle % 第9行生成标题页 \section{引言} % 第11行一级章节标题 你好世界这是用\LaTeX 排版的第一段文字。 \section{数学公式示例} % 第14行另一个一级标题 这是一个行内公式$E mc^2$。这是爱因斯坦的质能方程。 这是一个单独显示的公式带编号 \begin{equation} % 第17行公式环境开始 \int_a^b f(x)\,dx F(b) - F(a) \end{equation} % 第19行公式环境结束 \end{document} % 第21行文档内容结束现在点击编辑器中的“编译”按钮在TeXstudio中通常是F5键旁的绿色箭头在Overleaf中是“Recompile”。如果一切顺利你将得到一个PDF里面包含漂亮的标题、章节和公式。逐行详解与核心语法点\documentclass{article}这是LaTeX文档的必选第一行。它定义了文档的整体类型和基本格式。article适用于短文、报告、学术文章。其他常用文档类还有report适用于更长的报告、学位论文有章节和摘要。book适用于书籍。beamer用于制作演示文稿幻灯片。ctexart/ctexrep/ctexbook这是CTeX宏包提供的文档类内部已经集成了中文支持对于中文文档你可以直接用\documentclass{ctexart}来替代第1行和第2行。\usepackage[UTF8]{ctex}\usepackage命令用于加载宏包以扩展LaTeX的功能。这里加载了ctex宏包并指定编码为UTF8这是为了支持中文输入和显示。方括号[]内是传递给宏包的可选参数花括号{}内是宏包名称。几乎所有的功能扩展都通过加载不同的宏包实现。\title,\author,\date这些是预处理命令用于定义文档的元信息。它们位于\begin{document}之前。\today是一个自动生成当前日期的命令。\begin{document}和\end{document}这是文档的主体环境。所有你希望出现在最终PDF中的内容都必须写在这两个命令之间。它们像是一个容器标记了内容的开始和结束。\maketitle这个命令会根据前面定义的\title,\author,\date信息在文档当前位置生成一个格式化的标题。\section{引言}用于创建一级章节标题。LaTeX会自动为其编号1, 2, 3...并设置相应的字体和间距。还有\subsection{}二级标题如1.1和\subsubsection{}三级标题如1.1.1。$E mc^2$这是行内数学公式的写法。公式内容被一对美元符号$...$包裹。公式会与文字在同一行内显示。\begin{equation} ... \end{equation}这是一个公式环境用于生成单独居中显示、并自动编号的公式。环境是LaTeX中用于处理特定类型内容如公式、表格、列表的通用结构格式为\begin{环境名} ... \end{环境名}。编译流程初探 当你点击编译时引擎如pdflatex会做以下几件事读取.tex源文件。处理所有命令和宏包。可能需要运行两次或三次才能正确生成交叉引用如公式编号、目录页码。这是一个常见现象如果发现引用显示为“??”再编译一次即可。最终生成.pdf文件。实操心得养成“保存即编译”的习惯。在TeXstudio中可以开启“自动编译”选项。在Overleaf中它是默认实时编译的。及时查看PDF输出能快速定位语法错误的位置编译器会报错并提示出错行号。4. 文档结构的构建章节、目录与段落一篇结构清晰的文档是专业性的体现。LaTeX让文档结构化管理变得异常简单。4.1 章节与标题\section{引言} 这是引言部分的内容。\LaTeX 会自动为章节编号。 \subsection{研究背景} 这是二级小节。 \subsubsection{国内外研究现状} 这是三级小节。通常不建议嵌套超过三级。 \section*{致谢} 这是一个不编号的章节使用了\section*。 \addcontentsline{toc}{section}{致谢} % 手动将致谢加入目录\section,\subsection,\subsubsection是标准的带编号标题命令。在命令后加上星号*如\section*可以生成不带编号的标题常用于“摘要”、“致谢”、“参考文献”等部分。默认情况下不带编号的章节不会自动加入目录。如果需要可以使用\addcontentsline{toc}{section}{致谢}手动添加。4.2 自动生成目录在文档中希望插入目录的位置通常在标题页之后正文之前使用\tableofcontents命令即可。\begin{document} \maketitle \tableofcontents % 在此处生成目录 \newpage % 可选目录后另起一页 \section{第一部分} ... \end{document}编译两次后LaTeX会自动收集所有章节标题及其页码生成一个格式精美的目录。当你的章节标题、页码发生变化后再次编译两次目录会自动更新。4.3 段落、换行与换页段落在源文件中一个或多个空行即按两次回车表示开始一个新的段落。LaTeX会自动进行段落缩进。换行在源文件中单个回车即一行结束不会在PDF中产生换行。如果需要在某个特定位置强制换行使用\\命令注意在段落中频繁使用\\来换行是不好的排版习惯应优先使用空行分段。换页使用\newpage命令强制开始新的一页。这是第一段的第一行。 这是第一段的第二行虽然源码里换行了但输出是同一段。 这是新的一个段落。可以看到首行有缩进。 这里我想强制换行。\\ 看我到了新的一行但没有缩进。 \newpage 我现在在新的一页了。5. LaTeX的灵魂数学公式排版LaTeX最广为人知、也最不可替代的优势就是其强大的数学公式排版能力。它拥有两套完整的数学符号库排版效果堪称印刷级。5.1 两种数学模式行内模式 (Inline Mode)公式嵌入在文本行中。使用一对美元符号$...$。勾股定理表示为 $a^2 b^2 c^2$。 导数定义为 $f‘(x) \lim_{\Delta x \to 0} \frac{f(x\Delta x)-f(x)}{\Delta x}$。显示模式 (Display Mode)公式独立成行居中显示。有多种环境equation环境单个公式带自动编号。\begin{equation} \label{eq:integral} % 给公式加标签便于引用 \int_{-\infty}^{\infty} e^{-x^2} dx \sqrt{\pi} \end{equation}equation*环境需要先加载amsmath宏包单个公式不带编号。\usepackage{amsmath} % 在导言区添加 ... \begin{equation*} E mc^2 \end{equation*}align环境来自amsmath宏包用于多行公式对齐非常常用。是对齐符号\\是换行符。\begin{align} (ab)^2 a^2 2ab b^2 \label{eq:square1} \\ (a-b)^2 a^2 - 2ab b^2 \label{eq:square2} \end{align}这两行公式会按等号对齐并且每一行都有一个独立的编号。如果不想某行编号在该行末尾加上\notag命令。5.2 常用数学符号与命令速查记住所有命令不现实但掌握最核心的其他的可以随时查阅“符号表”。以下是一些你必须掌握的类型命令效果备注上下标x^2,x^{n1}$x^2$, $x^{n1}$多个字符需用花括号a_i,a_{ij}$a_i$, $a_{ij}$分式\frac{分子}{分母}$\frac{ab}{c}$行内公式中会变小根式\sqrt{x},\sqrt[n]{x}$\sqrt{x}$, $\sqrt[n]{x}$希腊字母\alpha,\beta,\Gamma,\Delta$\alpha$, $\beta$, $\Gamma$, $\Delta$首字母大写为大写形式运算符\sum,\prod,\int$\sum$, $\prod$, $\int$\lim_{x \to 0},\sin x$\lim_{x \to 0}$, $\sin x$极限、三角函数等关系符\le,\ge,\neq,\approx$\le$, $\ge$, $\neq$, $\approx$小于等于、大于等于等箭头\to,\Rightarrow,\leftarrow$\to$, $\Rightarrow$, $\leftarrow$括号( ),[ ]$( )$, $[ ]$自动调整大小用\left( ... \right)矩阵使用matrix,pmatrix等环境需amsmath宏包5.3 公式引用这是LaTeX自动化的一大体现。首先在公式环境中用\label{eq:xxx}给公式打上标签eq:是约定俗成的前缀便于区分。然后在正文中任何地方使用\eqref{eq:xxx}来引用LaTeX会自动替换为正确的公式编号。\begin{equation} \label{eq:fourier} X(f) \int_{-\infty}^{\infty} x(t) e^{-j 2\pi f t} dt \end{equation} 如公式\eqref{eq:fourier}所示傅里叶变换的定义是...编译两次后会显示为“如公式(1)所示...”。如果你在公式(1)前又插入了一个新公式编号和引用都会自动更新完全无需手动修改。注意事项数学模式中的空格会被忽略。LaTeX根据一套复杂的规则自动处理公式中各元素间的间距。如果你需要手动添加微小间距可以使用\,(小空格),\:(中空格),\;(大空格),\!(负空格) 等命令。例如在积分中dx前加一个\,小空格会更美观\int f(x)\,dx。6. 浮动体精准控制图表位置在LaTeX中图片和表格通常被放置在一种叫做“浮动体”float的容器中。之所以叫浮动是因为LaTeX会尝试为它们寻找一个最合适的位置比如当前页的顶部或底部而不是死死地固定在源码插入的地方。这避免了难看的页面留白是专业排版的常见做法。6.1 插入图片插入图片需要加载graphicx宏包。图片格式推荐使用PDF, PNG, JPG。\usepackage{graphicx} % 在导言区加载宏包 ... \begin{figure}[htbp] % 开始图片浮动体环境[htbp]是位置参数 \centering % 图片居中 \includegraphics[width0.8\textwidth]{example-image.png} % 插入图片宽度设为文本宽度的80% \caption{这是一张示例图片的标题} % 图片标题 \label{fig:example} % 图片标签用于引用 \end{figure}[htbp]位置参数这是给LaTeX的“建议”按优先级尝试放置。h此处here尽量放在源码插入的位置。t页面顶部top。b页面底部bottom。p单独成页page专门放置浮动体的页面。!可以加在任何参数前如!ht表示“忽略一些严格的排版限制尽量满足这个建议”。通常使用[htbp]或[!ht]即可。\includegraphics关键命令。width选项可以指定绝对宽度如5cm或相对宽度0.5\textwidth。还可以用height,scale,angle旋转等选项。\caption和\label与公式类似为图片添加标题和标签之后可以用\ref{fig:example}来引用如“见图\ref{fig:example}”。6.2 创建表格表格的创建稍微复杂一些最常用的是tabular环境。\begin{table}[htbp] \centering \caption{实验数据对比表} \label{tab:data} \begin{tabular}{|c|c|c|r|} % 定义表格列格式l左对齐c居中r右对齐|表示竖线 \hline % 横线 \textbf{样本} \textbf{温度(℃)} \textbf{压力(MPa)} \textbf{强度(MPa)} \\ \hline A1 25 0.1 125.6 \\ A2 50 0.2 118.3 \\ B1 25 0.2 140.7 \\ \hline \end{tabular} \end{table}\begin{tabular}{|c|c|c|r|}定义了表格有4列格式分别为居中、居中、居中、右对齐并且每一列之间以及表格两侧都有竖线|。列分隔符。\\行结束符。\hline画一条横贯表格的线。\textbf{}加粗用于表头。对于更复杂的表格如合并单元格、跨页长表格建议使用功能更强大的tabularx,longtable,booktabs推荐用于制作更专业、无线框的三线表等宏包。实操心得浮动体的“等待队列”如果连续插入多个浮动体如图片而当前页空间不足LaTeX可能会将它们“排队”集中放置到后面的某个页面比如下一章的起始页。这有时会导致图片位置远离引用它的文字。解决办法有调整位置参数尝试使用[!ht]。使用\clearpage或\newpage命令强制刷新浮动体队列让它们立即输出。如果图片对位置要求极其严格可以使用\usepackage{float}宏包然后在\begin{figure}中使用[H]大写H选项强制将浮动体“固定”在当前位置但这可能破坏页面美观。不到万不得已不要用[H]应信任LaTeX的排版算法。7. 列表、参考文献与交叉引用7.1 列表环境LaTeX提供了有序和无序列表。% 无序列表 (itemize) \begin{itemize} \item 第一项 \item 第二项 \item 第三项可以嵌套列表 \begin{itemize} \item 子项一 \item 子项二 \end{itemize} \end{itemize} % 有序列表 (enumerate) \begin{enumerate} \item 第一步 \item 第二步 \item 第三步 \end{enumerate}7.2 自动化参考文献管理BibTeX手动管理参考文献是学术写作的噩梦。LaTeX配合BibTeX可以完美解决。你需要两个文件.tex主文件和一个.bib数据库文件。第一步创建.bib文件新建一个文本文件如refs.bib。里面按以下格式存放参考文献条目article{greenwade93, author George D. Greenwade, title The {C}omprehensive {T}ex {A}rchive {N}etwork ({CTAN}), year 1993, journal TUGBoat, volume 14, number 3, pages 342--351 } book{knuth1984texbook, author Donald E. Knuth, title The {TeX}book, publisher Addison-Wesley, year 1984 }每个条目都有一个唯一的引用键如greenwade93,knuth1984texbook在文中引用时就使用这个键。第二步在.tex文件中引用在导言区指定参考文献样式如\bibliographystyle{plain}和数据库文件\bibliography{refs}不含后缀。在文中需要引用的地方使用\cite{引用键}命令。在文档末尾通常是\end{document}之前放置\bibliography{refs}命令来生成参考文献列表。\documentclass{article} \usepackage{cite} % 可选提供更好的引用格式 \begin{document} 根据文献\cite{greenwade93}的研究以及Knuth在\cite{knuth1984texbook}中的经典论述... \bibliographystyle{plain} % 指定样式还有unsrt, alpha, abbrv等 \bibliography{refs} % 指定.bib文件名 \end{document}第三步编译流程使用BibTeX时编译顺序需要四步或使用编辑器的一键编译功能它会自动执行pdflatex或xelatex编译主文件生成.aux文件记录引用信息。bibtex编译读取.aux从.bib中提取被引用的条目生成.bbl文件。pdflatex或xelatex再编译一次将参考文献列表插入文档但引用标记可能还是??。pdflatex或xelatex再编译一次正确解析所有交叉引用。7.3 交叉引用章节、公式、图表我们已经见过了公式\eqref和图表的引用\ref。章节的引用完全一样\section{背景介绍}\label{sec:background} ... 如第\ref{sec:background}节所述...使用\label{xxx}在任何需要引用的地方章节、公式、图表、表格打上标签然后用\ref{xxx}来引用编号。记住每次新增或删除带标签的元素后都需要编译两次才能使引用生效。8. 常见问题与排查技巧实录即使掌握了语法在实际操作中还是会遇到各种报错和意外情况。这里记录了几个最常见的问题和解决方法。8.1 编译错误与警告“Undefined control sequence”最常见的错误意思是“未定义的命令”。原因命令拼写错误或者没有加载所需的宏包。排查仔细检查错误行附近的命令。比如你用了\includegraphics但没加载graphicx宏包或者把\usepackage拼成了\uspackage。“Missing $ inserted”数学模式相关错误。原因在数学模式外使用了数学命令如_,^或者在数学模式内出现了非法字符。排查确保所有上下标_和^都出现在$...$或数学环境内。检查公式中是否误输入了中文标点或全角字符。“LaTeX Warning: Float too large for page”浮动体图表太大一页放不下。解决调整图片/表格的尺寸如[width0.9\textwidth]或者考虑将大表格拆分成多个部分。“Citation ‘xxx’ on page y undefined”引用未定义。原因BibTeX条目键\cite{xxx}在.bib文件中不存在或者编译流程没走完。解决检查.bib文件中的键名是否正确。确保执行了完整的pdflatex - bibtex - pdflatex - pdflatex编译流程。8.2 中文支持问题这是中文用户最常遇到的坎。症状编译通过但PDF中的中文显示为空白或乱码。根本原因编译器、字体、编码不匹配。通用解决方案推荐使用XeLaTeX或LuaLaTeX编译器它们原生支持UTF-8和系统字体。使用ctex文档类或宏包。这是最省心的方式。% 方案A使用ctex文档类最简单 \documentclass[UTF8]{ctexart} % 方案B使用标准文档类ctex宏包 \documentclass{article} \usepackage[UTF8]{ctex}确保你的.tex源文件以UTF-8 无BOM格式保存几乎所有现代编辑器默认都是。8.3 引用显示为“??”或错误编号原因交叉引用信息需要多次编译才能完全正确。标准操作流程无论何时当你新增、删除或修改了\label,\cite,\tableofcontents等涉及交叉引用的内容后连续编译两次。在TeXstudio中直接按两次F5。在Overleaf中点击两次“Recompile”。这是一个固定动作养成习惯。8.4 宏包冲突症状加载了两个功能相似的宏包后某个命令失效或报错。解决查阅宏包文档看它们是否兼容。有时加载顺序很重要。如果无法解决尝试注释掉其中一个宏包在行首加%看问题是否消失然后寻找替代方案。8.5 资源与求助官方文档与手册在命令行输入texdoc 宏包名如texdoc ctex,texdoc amsmath可以打开本地安装的宏包PDF手册这是最权威的资料。Overleaf LearnOverleaf官网的教程和文档非常系统且友好适合初学者。CTAN (Comprehensive TeX Archive Network)LaTeX宏包的大本营可以搜索和下载任何宏包。社区TeX - LaTeX Stack Exchange 是全球最活跃的LaTeX问答社区几乎你遇到的所有问题都能在那里找到答案。提问前请先搜索。最后学习LaTeX就像学习一门编程语言开始时需要记忆一些基本命令和结构会有一定的门槛。但一旦你熟悉了它的工作方式并成功用它完成了第一个像样的文档比如一份课程报告你就会深刻体会到“内容与格式分离”带来的高效与优雅。那种让文档自动变得专业、美观而你只需关心内容的感觉是任何“所见即所得”编辑器都无法给予的。从今天起尝试用LaTeX来写你的下一份作业或报告吧迈出第一步你会发现它并没有想象中那么难而且回报远超你的投入。