LaTeX 入门指南:从环境搭建到中文排版与参考文献管理
1. 为什么还要折腾 LaTeX从一份排版需求说起第一次接触 LaTeX 的人多半是被逼的。要么是毕业论文格式要求变态到每一级标题的行距、字号、缩进都有明文规定要么是投稿期刊只收特定模板排出来的 PDF要么是写一本几十页的技术文档Word 里的图表编号和交叉引用改到崩溃。我当年属于第一种学校发下来一份格式规范光“参考文献著录格式”就列了三页纸用 Word 手动调了两天改一个标题全篇编号全乱最后咬牙转向 LaTeX从此再没回头。LaTeX 本质上是一套基于 TeX 的排版系统核心思路是“内容与格式分离”。你只管写“这是一章”“这是一个公式”“这里引用文献”至于这一章用什么字体、公式怎么对齐、文献编号怎么排交给模板和编译器去处理。这跟 Word 那种“所见即所得”的思路完全相反刚开始会很不习惯但一旦上手尤其是文档超过二十页、公式超过五十个之后你会发现省下来的时间远超学习成本。这篇内容适合三类人正在被论文格式折磨的学生、需要产出高质量技术文档的工程师、以及任何对专业排版感兴趣但一直没敢下手的新手。我会从最基础的环境搭建讲起一路走到能独立编译出一份带公式、图表、目录和参考文献的完整文档。全程不绕弯子踩过的坑我都会标出来你照着做基本能一次跑通。2. 环境搭建发行版、编辑器与编译引擎怎么选2.1 发行版的选择逻辑LaTeX 本身只是一套宏命令真正干活的是背后的 TeX 发行版。目前主流的有两个方向一个是 TeX Live跨平台Windows、Linux、macOS 都能用体积大但宏包齐全另一个是 MiKTeX主要面向 Windows特点是按需下载宏包初始体积小。我个人的建议很直接如果你硬盘空间不紧张直接上 TeX Live 完整版省去后面缺宏包反复安装的麻烦。完整版大概几个 GB但一次装好后面几年都不用操心。安装过程本身没什么技术含量官网下载镜像一路下一步即可。唯一需要注意的是安装路径不要带中文和空格这是很多新手第一次编译失败的根本原因。TeX 系统对路径中的非 ASCII 字符处理一直不太友好虽然近几年有所改善但为了省事直接用默认路径最稳。提示安装完成后一定要在命令行里验证一下。打开终端输入tex --version和latex --version能正常输出版本号才算装好。如果提示找不到命令说明环境变量没配好Windows 下需要手动把 TeX Live 的 bin 目录加到 PATH 里。2.2 编辑器的取舍编辑器这块选择很多我按使用场景分三类说。第一类是通用代码编辑器加插件比如 VS Code 配 LaTeX Workshop优点是轻量、免费、你如果本来就写代码会觉得很顺手缺点是配置需要花点时间。第二类是 LaTeX 专用编辑器比如 TeXstudio开箱即用自带命令补全、错误提示、PDF 预览对新手最友好我推荐第一次接触的人从它开始。第三类是在线平台打开浏览器就能写适合临时协作但涉及隐私内容或者网络不稳定的场景就不太合适。我自己的主力组合是 VS Code 加 LaTeX Workshop因为平时写代码也用同一个编辑器切换成本低。但给身边朋友推荐时我一律先推 TeXstudio原因很简单新手最需要的是“少配置、快出结果”TeXstudio 装完就能编译能立刻看到 PDF正反馈来得快才不容易放弃。2.3 编译引擎的区别与选择这是新手最容易懵的地方。LaTeX 的编译引擎有好几种常见的是 pdfLaTeX、XeLaTeX、LuaLaTeX。它们的区别主要在字体处理和 Unicode 支持上。pdfLaTeX 是最传统的引擎速度快兼容性好但对中文和系统字体的支持很弱需要额外配置。XeLaTeX 原生支持 Unicode 和系统字体中文排版基本靠它是目前中文用户的首选。LuaLaTeX 功能最强支持 Lua 脚本扩展但编译速度稍慢宏包兼容性偶尔有坑。结论很明确写中文文档直接用 XeLaTeX。写纯英文且追求编译速度pdfLaTeX 也够用。这个选择在后面的模板配置里会反复出现先记住就行。引擎中文支持字体调用编译速度推荐场景pdfLaTeX弱需配置快纯英文文档XeLaTeX强系统字体直接调用中等中文文档首选LuaLaTeX强系统字体直接调用较慢需要脚本扩展3. 第一份文档从骨架到能跑通的完整流程3.1 文档基本结构拆解一份最简 LaTeX 文档由两部分组成导言区和正文区。导言区放文档类声明、宏包引入、全局设置正文区放实际内容。这个结构就像做菜导言区是备料和调料正文区是下锅炒。\documentclass[12pt,a4paper]{article} \usepackage{ctex} \begin{document} 你好LaTeX。 \end{document}这四行就是一个能编译的最小中文文档。\documentclass声明文档类型article是最常用的短文类适合论文、报告、笔记。[12pt,a4paper]是可选参数设定字号和纸张大小。\usepackage{ctex}引入中文支持宏包这是中文用户必须加的一行否则中文会直接报错或者显示成空白。\begin{document}和\end{document}之间就是正文。我见过太多新手卡在第一步原因往往不是语法而是忘了加ctex宏包或者用了 pdfLaTeX 引擎编译带中文的文档。这两个坑记住能省你半小时。3.2 编译流程与中间文件LaTeX 的编译不是一步到位的它会产生一堆中间文件。以 XeLaTeX 为例编译一次会生成.aux、.log、.pdf等文件。.aux文件记录交叉引用和目录信息.log文件记录编译日志出错时第一时间看它。为什么有时候要编译两次甚至三次因为目录、交叉引用、参考文献这些内容需要“先记录再回填”。第一次编译时LaTeX 还不知道你的章节在第几页它先把这些信息写进.aux文件第二次编译时再读取.aux把页码填回去。所以当你发现目录页码不对、引用显示成问号时别慌再编译一次通常就好了。注意如果编译两次还是问号先删掉所有中间文件保留.tex源文件重新编译。中间文件损坏或者残留旧信息是常见原因。3.3 中文排版的关键配置中文排版和英文有几个本质区别一是字体中文需要指定中文字体英文默认的 Computer Modern 字体不含汉字二是断行规则中文没有空格断行逻辑不同三是标点中文标点占全角和英文混排时间距需要处理。ctex宏包把这些都封装好了默认会调用系统里的中文字体。但如果你想要更精细的控制比如指定宋体、黑体、楷体分别用于正文、标题、引用可以这样写\usepackage[fontsetwindows]{ctex}fontset参数可选windows、mac、ubuntu等对应不同操作系统的字体集。如果你在 Windows 上写用windows最省事跨平台协作时建议用fontsetfandol它自带开源中文字体不依赖系统换台电脑也能编译出一样的效果。我踩过的一个坑是在 Windows 上写好的文档拿到 Linux 服务器上编译字体全变了排版全乱。后来统一用fandol字体集才解决。如果你有跨平台需求这一点务必注意。4. 核心语法公式、图表、交叉引用与参考文献4.1 数学公式的两种模式公式是 LaTeX 的看家本领也是很多人学它的唯一理由。公式分两种行内公式和行间公式。行内公式用$...$包裹嵌在文字中间行间公式用\[...\]或者equation环境单独占一行并居中。行内公式质能方程 $Emc^2$ 大家都很熟悉。 行间公式 \begin{equation} E mc^2 \label{eq:emc2} \end{equation}equation环境会自动给公式编号\label给公式起个名字方便后面引用。引用时用\ref{eq:emc2}编译两次后就会显示成“公式 (1)”这样的形式。复杂公式比如矩阵、分段函数、多行对齐需要用到amsmath宏包这是事实上的标准几乎每份文档都会引入。矩阵用pmatrix、bmatrix等环境分段函数用cases环境多行对齐用align环境。这些环境的名字有规律p是圆括号b是方括号v是竖线记住规律就不用死记硬背。4.2 图表插入与浮动体机制LaTeX 里插入图片用graphicx宏包基本命令是\includegraphics。但图片通常放在figure环境里这个环境叫“浮动体”意思是 LaTeX 会根据排版需要自动调整图片位置不一定严格放在你写代码的地方。\begin{figure}[htbp] \centering \includegraphics[width0.8\textwidth]{example.png} \caption{示例图片} \label{fig:example} \end{figure}[htbp]是位置参数h 代表 here当前位置t 代表 top页顶b 代表 bottom页底p 代表单独一页。LaTeX 会按这个优先级尝试放置。很多人抱怨“图片乱跑”其实这是浮动体的正常行为理解它的逻辑后反而会觉得方便——你不需要手动调图片位置LaTeX 会帮你找到最合适的地方。表格用tabular环境列格式用l、c、r表示左对齐、居中、右对齐|画竖线\hline画横线。表格的浮动体环境叫table和figure类似。环境用途位置参数编号前缀figure图片浮动体htbp图table表格浮动体htbp表equation公式无公式4.3 交叉引用的正确姿势交叉引用是 LaTeX 相比 Word 最大的优势之一。你给章节、公式、图、表、文献都打上\label然后在需要的地方用\ref或\eqref引用编号自动生成、自动更新。改文档结构时所有引用跟着变不用手动改一个数字。这里有个关键细节\label必须放在\caption之后。因为\caption才会生成编号\label引用的是最近一次生成的编号。如果顺序反了引用会指向错误的编号这是新手极高频的错误。提示引用文献用\cite配合bibtex或biblatex使用。\cite的编号是方括号形式比如 [1]和图表引用的圆括号形式不同这是约定俗成的规范。4.4 参考文献的自动化管理手动写参考文献列表是自虐行为。正确做法是把文献信息存进.bib文件用bibtex或biblatex自动生成。.bib文件的格式很固定article{key2024, author {张三 and 李四}, title {一篇示例论文}, journal {某学术期刊}, year {2024}, volume {12}, pages {34--56} }然后在文档里用\cite{key2024}引用编译时自动匹配。bibtex的编译流程是XeLaTeX 编译一次bibtex 处理文献再 XeLaTeX 编译两次。总共四次听起来麻烦但编辑器里通常有一键完成按钮实际体验很流畅。我强烈建议从一开始就用.bib管理文献哪怕只有三五篇。因为文献格式一旦定下来后面加文献就是复制粘贴的事而且换期刊模板时文献格式自动适配不用手动改。5. 常见报错与排查实录5.1 编译失败的典型原因LaTeX 的报错信息出了名的难懂但常见的就那么几类。第一类是缺宏包报错信息里会有File xxx.sty not found解决办法是安装对应宏包TeX Live 用tlmgr install xxxMiKTeX 会自动弹窗提示安装。第二类是语法错误比如忘了闭合花括号、环境没配对报错会指向具体行号顺着找通常能找到。第三类是编码问题中文乱码或者报Unicode character not set up基本是引擎选错了换成 XeLaTeX 即可。我整理了一份速查表覆盖新手九成以上的报错场景报错关键词可能原因解决办法File not found缺宏包安装对应宏包Missing $ inserted数学符号没放在公式环境检查$配对Undefined control sequence命令拼写错误或未引入宏包检查拼写和宏包Runaway argument花括号没闭合检查括号配对Unicode character引擎不支持该字符换 XeLaTeXCitation undefined文献未编译运行 bibtex 后再编译5.2 中文相关的特殊问题中文用户会遇到一些英文用户不会碰到的问题。最常见的是“中文不显示”或者“中文显示成方框”根源是字体没配好。ctex宏包默认会尝试调用系统字体如果系统里没有对应字体就会出问题。解决办法是显式指定fontset或者手动设置字体。另一个问题是中文断行。英文靠空格断行中文没有空格LaTeX 默认的断行算法对中文支持一般长段落可能出现溢出边界的情况。ctex宏包已经做了优化但极端情况下还是需要手动调整。可以在导言区加\XeTeXlinebreaklocale zh和\XeTeXlinebreakskip 0pt plus 1pt改善中文断行效果。还有一个隐蔽的坑中英文混排时的间距。中文和英文之间、中文和数字之间规范上需要加一点空隙但手动加空格很麻烦。ctex宏包会自动处理这个间距所以只要你用了ctex这个问题基本不用操心。5.3 排版效果的微调技巧文档能编译只是第一步排得好看是第二步。几个我常用的微调技巧调整页边距用geometry宏包一行代码搞定比手动调\hoffset优雅得多。调整行距用setspace宏包\onehalfspacing就是 1.5 倍行距论文常用。调整段落缩进用\setlength{\parindent}{2em}中文习惯首行缩进两个字符。\usepackage[margin2.5cm]{geometry} \usepackage{setspace} \onehalfspacing \setlength{\parindent}{2em}这几行加在导言区文档的观感立刻专业一个档次。我见过不少人花大量时间调格式其实这些宏包早就把常见需求封装好了查一下文档就能用没必要自己造轮子。注意geometry宏包的margin参数会同时设置四边边距如果只想改某一边用left、right、top、bottom单独指定。论文装订通常需要左边距大一点这时候就用单独指定。6. 从入门到能用的进阶路径6.1 模板的获取与改造入门之后下一步是学会用模板。期刊、学校、会议通常都会提供官方 LaTeX 模板拿到模板后不要从头改而是先编译一遍看效果再把自己的内容往里填。模板里的导言区通常已经配好了格式你只需要关注正文部分。改造模板时最容易出问题的是宏包冲突。模板引入的宏包和你自己加的宏包可能不兼容表现为编译报错或者排版异常。解决办法是尽量少加宏包能用模板自带的就用自带的。如果必须加加之前先查一下有没有已知冲突。我个人的习惯是拿到新模板先建一个副本在副本上折腾确认没问题再迁移到正式文档。这样即使改崩了原始模板还在不至于从头再来。6.2 版本管理与协作LaTeX 源文件是纯文本天生适合用版本管理工具。我所有的 LaTeX 项目都放在版本控制里每次大改之前提交一次改崩了随时回滚。协作时多人同时改一份文档容易冲突建议按章节拆分文件用\input或\include在主文件里组装。这样每个人改自己的章节冲突概率大大降低。\input和\include的区别\include会强制分页适合章节级别的拆分\input不分页适合任意粒度的拆分。我通常用\input拆章节主文件只保留导言区和章节引入命令结构清晰找内容也方便。6.3 学习资源的取舍LaTeX 的学习资源很多但质量参差不齐。我的建议是不要一上来就啃几百页的手册那样容易劝退。先找一份二三十页的入门文档把基本结构、公式、图表、引用跑通能独立编译出一份像样的文档然后再按需查手册。遇到具体问题再查比通读手册效率高得多。常用的参考资料有两类一是宏包的官方文档用texdoc 宏包名命令可以直接调出本地文档这是最权威的来源二是社区问答常见问题基本都有人问过搜一下通常能找到答案。查资料时注意看日期太老的答案可能已经不适用新版本。我在实际使用中的体会是LaTeX 的学习曲线确实陡但陡峭的部分集中在前两周。一旦跨过“能独立编译出一份完整文档”这个门槛后面的路就平了。而且这个投入是一次性的学会之后无论写论文、写报告、写书排版都不再是负担。最后分享一个小技巧把你常用的导言区配置存成一个单独的.tex文件新文档直接\input进来省去每次重复配置的麻烦。这个习惯我坚持了好几年累计省下的时间相当可观。