上周帮同事在自己的笔记本上从零装 LaTeX,从下载镜像到跑出第一份中文 PDF,前后花了两个多小时——其中真正点击"下一步"的时间不到十分钟,剩下的全耗在镜像选择、路径命名和环境变量这些细节上。这篇 Latex 详细安装教程就是想把这些"不该花的时间"省掉。我说的 LaTeX 不是某个单一软件,而是一整套排版工具链:一个负责排版的发行版(里面装着几千个宏包和编译器)、一个负责写代码的编辑器、再加上一层把它们连起来的配置。装好之后你能做什么?写论文、排简历、出书籍、做公式密集的技术文档,尤其是那种"公式多到 Word 会卡死"的场景,LaTeX 的优势就非常明显。这篇内容适合三类人看:完全没碰过命令行、只想赶紧把环境装起来的新手;装过一次但被报错劝退、想彻底搞明白原理的中级用户;以及需要在多台机器、多个系统上重复部署环境的老手。下面我会按"选型—安装—配置—验证—排错"的顺序,一步步拆开讲,每个参数为什么这么设,我都会说明理由。
1. 本地 LaTeX 值不值得装:先算一笔时间账
1.1 什么情况下必须装本地环境
很多人第一反应是"用在线编辑器不就行了"。在线方案确实省事,打开浏览器就能写,但对于几类场景它撑不住:一是论文投稿,期刊模板动辄要求特定的宏包版本和编译顺序,在线编辑器不一定装了你需要的包;二是文档体量大,几百页带几十张图的毕业论文,在线编译排队能等到你没脾气;三是断网环境、内网环境,学校机房或者公司内网根本连不上外部服务;四是需要版本控制,你想把源文件丢进 git 做提交历史,本地环境天然支持。所以判断标准很简单:只要你写的东西超过十页、或者需要长期反复修改、或者涉及机构模板,本地环境就是刚需。
1.2 三套常见方案的横向对比
我把常见的组合列成一张表,方便你按自己的情况对号入座。这张表里的"上手难度"是我按周围非计算机专业同事的平均感受估的,仅供参考。
| 方案 | 发行版 | 编辑器 | 上手难度 | 适合人群 | 主要代价 |
|---|---|---|---|---|---|
| 省心组合 | MiKTeX | TeXstudio | 低 | 只想写文档的新手 | 宏包按需下载,首次编译慢 |
| 主流组合 | TeX Live | VS Code + LaTeX Workshop | 中 | 需要长期维护文档的人 | 初始安装体积大、耗时长 |
| 极客组合 | TeX Live | 终端 + latexmk | 高 | 熟悉命令行、要自动化的人 | 学习曲线陡,排错全靠日志 |
选哪套没有绝对对错。我给身边人的默认推荐是"主流组合",理由是 TeX Live 的宏包完整度最高,一次装完基本不会再遇到"缺包"问题;VS Code 又是大多数人的日常编辑器,不用再额外学一个软件的界面。如果你连终端都不想打开,那"省心组合"更适合你,MiKTeX 检测到缺宏包会自动弹窗询问是否下载,这个特性对新手非常友好。
2. 工具链三层拆解:发行版、编辑器、编译引擎
2.1 发行版:TeX Live、MiKTeX、MacTeX 到底怎么选
发行版是整个体系的地基,它决定了你手里有多少宏包、编译器是什么版本。TeX Live 是跨平台的,Windows、Linux、macOS 都能装,宏包覆盖面最广,每年发一个版本,前面冠以年份,比如 2024 版、2025 版。它的坑在于安装包大,完整版接近 8 GB,安装过程视网速要半小时到一小时。MiKTeX 主要面向 Windows,优点是"按需装包",你文档里用到哪个宏包它才下载哪个,初始安装几百兆就够,缺点是首次编译时反复弹窗、依赖网络,在网络受限的环境下反而更麻烦。MacTeX 本质是 TeX Live 的 macOS 定制版,把配置和字体处理都帮你做好了,代价是体积同样很大。
注意:发行版不要装两个。TeX Live 和 MiKTeX 同时存在时,环境变量 PATH 里谁在前面谁生效,你会遇到"明明装了宏包却提示找不到"这种诡异问题。装新的之前,把旧的卸干净。
2.2 编辑器:TeXstudio 与 VS Code 的取舍
编辑器只是外壳,它本身不负责排版,真正干活的是后台的编译器。理解这一点,你就不会纠结"哪个编辑器的排版效果更好"这种伪命题了。TeXstudio 是专门为 LaTeX 做的编辑器,开箱即用,左侧大纲、右侧 PDF 预览、中间写代码,快捷键和补全都是为排版定制的,缺点是界面偏老派,主题和动画不够现代。VS Code 加 LaTeX Workshop 扩展是我的日常配置,好处是写代码、写 Markdown、写 LaTeX 全在一个窗口里,git 集成也顺,代价是需要手动写一段配置才能把编译链跑通。选哪个?如果你只写 LaTeX,TeXstudio 更省心;如果你本来就在用 VS Code,那别折腾了,装个扩展就行。
2.3 编译引擎:xelatex、pdflatex、lualatex 什么时候用哪个
这是新手最容易混淆的一层。简单说,编译器负责把 .tex 源文件转成 PDF,而不同编译器对字符编码和字体的处理方式不一样。
- pdflatex:元老级引擎,速度快、兼容性最好,但它对 Unicode 支持有限,处理中文需要额外的宏包配置,一般不推荐新手直接用。
- xelatex:原生支持 Unicode,可以直接调用系统字体,中文排版首选,速度中等。
- lualatex:功能最强,支持 Lua 脚本扩展,字体处理方式更现代,但某些老宏包兼容性不如 xelatex,编译速度也偏慢。
我的建议很直接:只要文档里有中文,就用 xelatex。这条规则能帮你避开八成的中文乱码和字体缺失问题。后面第三章里 VS Code 的配置,我给的也是以 xelatex 为主的编译配方。
3. Windows 平台完整安装流程
3.1 下载与镜像选择:为什么强烈建议换源
TeX Live 官方主站下载,国内访问速度往往惨不忍睹,安装过程还会因为超时中断。解决办法就是用国内镜像站。下载页面打开后,找到国家/地区镜像列表,选一个响应快的站点,进去之后找install-tl-windows.exe这个在线安装器,或者更稳妥的做法是直接下 ISO 镜像文件,用虚拟光驱加载后离线安装——ISO 方式的好处是安装过程不依赖网络,中途不会因为断线失败。
提示:ISO 文件几个 GB,建议用支持断点续传的下载工具。下完之后核对一下官方给出的校验值,避免文件损坏导致安装到一半报错,这种问题排查起来非常折磨人。
3.2 安装参数逐项拆解
双击安装器后,界面上的选项别一股脑点"下一步",有几项值得停下来想想。
安装方案(Scheme):默认是 full,全量安装,占盘大约 8 GB。如果你的硬盘紧张,可以选 basic 或者 small,之后再通过tlmgr按需补装宏包。但我个人的经验是,省这几 GB 换来的麻烦不划算——写论文时频繁遇到缺包,每次都要联网补装,时间成本更高。
安装路径:默认在C:\texlive\年份。我建议就按默认来,因为路径里绝对不能出现中文和空格。有人喜欢装到"我的文档\软件\LaTeX"这类目录,结果编译时报一堆莫名其妙的找不到文件错误,根源就是路径里的中文字符。
环境变量:安装界面里有个"将 bin 目录添加到 PATH"的选项,务必勾上。不勾的话你得手动去系统设置里加,很多人就是漏了这一步,导致命令行里敲tex提示"不是内部或外部命令"。
安装时间:full 方案解压几千个文件,机械硬盘上跑四十分钟很正常,固态盘大概二十到三十分钟。期间不要关闭窗口。
3.3 环境变量配置与安装验证
装完之后必须验证,别等到写文档时才发现环境有问题。打开一个新的命令行窗口(注意必须是新开的,旧窗口读不到刚更新的 PATH),依次敲三条命令:
tex --version xelatex --version tlmgr --version三条都能正常回显版本号,说明安装成功。如果提示找不到命令,检查一下 PATH 里有没有C:\texlive\2024\bin\windows这一条,年份按你实际装的版本替换。还有一个容易忽略的点:确认这个路径下确实存在xelatex.exe和tlmgr.bat,有时候杀毒软件会误删,尤其是国内某几款安全软件对可执行文件的拦截比较激进。
3.4 VS Code + LaTeX Workshop 配置实录
先装 VS Code,然后在扩展市场里搜 "LaTeX Workshop",装上。接着打开设置,切到 JSON 模式(快捷键Ctrl+Shift+P输入 "Open User Settings (JSON)"),把下面的配置合并进去:
{ "latex-workshop.latex.tools": [ { "name": "xelatex", "command": "xelatex", "args": [ "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%" ] }, { "name": "bibtex", "command": "bibtex", "args": ["%DOCFILE%"] } ], "latex-workshop.latex.recipes": [ { "name": "xelatex", "tools": ["xelatex"] }, { "name": "xelatex -> bibtex -> xelatex x2", "tools": ["xelatex", "bibtex", "xelatex", "xelatex"] } ], "latex-workshop.latex.recipe.default": "first", "latex-workshop.view.pdf.viewer": "tab" }配置里每个参数都有用意。-synctex=1生成同步文件,让你能在源码和 PDF 之间双向跳转,写长文档时这个功能能救命;-interaction=nonstopmode表示遇到错误不要停下来等输入,直接往下跑,避免编译卡死在终端;-file-line-error让报错信息带上文件和行号,排查效率翻倍。bibtex 那一步是为了处理参考文献,如果你暂时不写引用,用第一个单步配方就够。
提示:
latex-workshop.latex.recipe.default设成first之后,按Ctrl+Alt+B走的是列表里第一个配方,也就是单次 xelatex。如果你的文档有参考文献或目录,记得手动切成第三个配方,否则引用的编号会显示成问号。
3.5 跑通第一份中文文档
新建一个文件夹,路径别带中文,里面创建一个test.tex,写入:
\documentclass[UTF8]{ctexart} \begin{document} \title{我的第一份 LaTeX 文档} \author{张三} \maketitle \section{引言} 这是一段中文测试文字,用来验证 xelatex 编译链路是否正常。 行内公式示例:$E = mc^2$。 \end{document}保存后按Ctrl+Alt+B编译,右侧如果弹出 PDF 预览并且中文正常显示,整个环境就算彻底打通了。如果中文显示成方块或者直接空白,先别慌,多半是编译器选错了——确认你用的是 xelatex 而不是 pdflatex,这一点在第四章会详细展开。
4. macOS 与 Linux 的安装差异
4.1 macOS:MacTeX 全量包与 BasicTeX 的取舍
macOS 上最省事的是 MacTeX,下载一个 pkg 安装包,一路下一步,大概 5 GB 左右,装完自带 TeXShop 编辑器、BibDesk 文献管理工具,TeX Live 的宏包也全都在。如果你的固态盘实在紧张,可以选 BasicTeX,压缩包不到 200 MB,但它只带最基础的宏包,中文排版、绘图相关的包基本都得用sudo tlmgr install手动补。我的判断是:只要是长期用,就上 MacTeX 全量包,省下来的时间远比硬盘空间值钱。安装时还有一个细节,安装器会问你是否把 TeX 的 bin 目录加到 PATH,选"是",不然后面命令行调不动。
4.2 Ubuntu 与 Debian:apt 源安装的正确姿势
Linux 上很多教程直接让你sudo apt install texlive-full,这条命令能装,但有两个问题:一是版本可能比官方 TeX Live 落后一两年,某些新宏包用不了;二是 apt 的 TeX Live 和官方安装脚本混装会互相打架。我的做法是分情况:如果你只是临时写点东西,apt 够用,装这一组就差不多:
sudo apt update sudo apt install texlive-latex-base texlive-latex-recommended \ texlive-latex-extra texlive-xetex texlive-lang-chinese \ texlive-fonts-recommended latexmk如果你要长期维护学位论文、跟随期刊模板,那就去 TeX Live 官网下install-tl-unx.tar.gz,解压后运行安装脚本,装完再把/usr/local/texlive/2024/bin/x86_64-linux加进 PATH。注意这条路径里的架构名要按你机器的实际输出替换,用uname -m能查。
4.3 跨平台字体差异带来的连锁反应
同一份 .tex 文件,在 Windows 上编译正常,拷到 Linux 上就报字体找不到,这是最常见的一类"环境问题",根源在字体。Windows 上 ctex 宏包默认调用系统自带的中易宋体、中易黑体,这些字体在 Linux 上根本不存在。解决办法有两个:一是显式指定字体集,比如在文档类选项里写fontset=fandol,Fandol 是 TeX Live 自带的开源中文字体,跨平台都有;二是用 fontspec 宏包手动指定具体字体文件。推荐第一种,改动最小。如果你在 Linux 上想让系统里的思源黑体生效,就先确认fc-list :lang=zh能列出来,再在文档里用 fontspec 指名字体名,名字要和fc-list输出的完全一致,多一个空格都会失败。
5. 装完立刻要用的:中文、换行、符号、图片表格
5.1 ctex 文档类与中文支持的三条路线
中文支持这块,ctex 宏包是目前最省心的方案,它提供了ctexart、ctexrep、ctexbook三个文档类,分别对应文章、报告、书籍,你直接用它们替代标准的article、report、book就行。三条可行路线:一是文档类路线,\documentclass[UTF8]{ctexart},最简单;二是宏包路线,在标准文档类里\usepackage{ctex},适合必须用特定期刊模板、不能改文档类的情况;三是手动路线,用xeCJK宏包自己配置字体,灵活但配置量大,一般用不上。绝大多数人用第一条就够了。这里再强调一遍,ctex 的文档必须用 xelatex 或 lualatex 编译,用 pdflatex 会直接报错或中文丢失。
5.2 换行、分段、空行:换行符到底怎么打
这个话题问的人特别多,我把它讲透。LaTeX 里,源码中的一个换行等于一个空格,不是换行。想强制换行,用双反斜杠\\;想分段,就空一行(源码里敲两次回车)。这两个概念别混:\\是"这一行到此为止,下一行接着写",常用于诗歌、地址块、表格单元格里;空行是"新起一个段落",段首会自动缩进。还有一个\newline也能换行,但和\\在段落对齐时有细微差别,日常用\\就行。数学公式里的换行规则又不一样,equation环境里根本不能换行,要换行得用align或者split环境,用&对齐、\\断行。表格里单元格内容要用\\结束一行,但这个\\前面不能有多余的&,不然会报 column 数量不匹配。
5.3 数学符号与希腊字母速查
符号这块不用背,用的时候查就行,但有几个高频的必须记住。
| 需求 | 写法 | 说明 |
|---|---|---|
| 希腊字母小写 | \alpha\beta\gamma | 加\var前缀可换形状 |
| 希腊字母大写 | \Gamma\Delta\Omega | 首字母大写即可 |
| 分数 | \frac{a}{b} | 前是分子后是分母 |
| 根号 | \sqrt{x}\sqrt[n]{x} | 方括号里写次数 |
| 求和、积分 | \sum_{i=1}^{n}\int_a^b | 上下标用_和^ |
| 比较符 | \leq\geq\neq\approx | 别直接敲<> |
| 偏导、梯度 | \partial\nabla | 常在物理公式里出现 |
| 无穷、乘号 | \infty\times\cdot | 点乘和叉乘别搞混 |
注意:符号命令只在数学环境里有效。想在正文里写个希腊字母,得用
$\alpha$包起来,直接写\alpha会报 Undefined control sequence。
5.4 插入图片与表格自动换行
插入图片要先用\usepackage{graphicx},然后用figure环境包起来:
\begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{figures/result.png} \caption{实验结果对比} \label{fig:result} \end{figure}[htbp]是位置建议,分别是 here、top、bottom、page,LaTeX 会挑一个合适的位置放,不用强求它一定在你写代码的地方。width=0.8\textwidth表示占正文宽度的八成,比直接写像素值稳妥,换纸张尺寸也不用改。\label和\ref配合用,正文里写如图\ref{fig:result}所示,编号会自动更新。
表格自动换行是另一个高频痛点。标准的tabular环境里,单元格内容不会自动折行,长文本会直接撑破页面。解法是用tabularx宏包,把列类型写成X:
\usepackage{tabularx} \begin{tabularx}{\textwidth}{|l|X|} \hline 项目 & 说明 \\ \hline 编译引擎 & xelatex 支持 Unicode 和系统字体,中文文档首选 \\ \hline \end{tabularx}X列会自动分配剩余宽度并换行。如果只是某个单元格里需要手动断行,用makecell宏包的\makecell{第一行\\第二行}也行,适合内容不多的情况。
6. 报错排查与编译提速实录
6.1 高频报错速查表
下面这张表是我这些年真正遇到过的报错,按出现频率排序,建议收藏。
| 报错信息 | 常见原因 | 解决办法 |
|---|---|---|
| File `xxx.sty' not found | 宏包没装 | tlmgr install xxx |
| Font ... not found | 字体缺失或字体集不匹配 | 加fontset=fandol或装字体 |
| Undefined control sequence | 命令拼错或漏引宏包 | 核对拼写,补\usepackage |
| Missing $ inserted | 数学符号写在了正文里 | 用$...$包起来 |
| I can't write on file | 文件被占用或无写权限 | 关掉 PDF 阅读器,换目录 |
| Emergency stop | 严重错误,通常前面有真凶 | 往上翻日志找第一条错误 |
| Overfull \hbox | 行超宽,不是致命错误 | 检查长公式或长网址 |
排查有个通用心法:日志里第一个 Error 才是真凶,后面的往往是被连累的。很多人看到满屏红字就慌,其实只要找到第一条,解决它,后面一大片报错会自己消失。
6.2 宏包缺失的补装方法
TeX Live 用tlmgr补包,先更新自身再装目标:
sudo tlmgr update --self sudo tlmgr install ctex tabularx makecellWindows 上如果有权限问题,就以管理员身份打开命令行。注意tlmgr的仓库地址如果访问慢,可以换镜像:tlmgr option repository 镜像地址。MiKTeX 用户不用手动装,编译时它会自己弹窗问你要不要下载,点确认即可,但前提是网络通畅。
6.3 编译提速与临时文件治理
编译慢主要慢在重复处理图片和目录。几个实用技巧:一是草稿模式,在导言区加\usepackage[draft]{graphicx},图片位置只画个框,不实际渲染,能快一大截,定稿时再去掉;二是用\includeonly{chapter3}只编译正在改的那一章;三是用latexmk -pvc做增量编译,它会盯着源文件变化自动重编,省去反复敲命令。临时文件方面,一次编译会产生.aux、.log、.out、.toc、.synctex.gz一堆东西,用latexmk -c可以清理干净但保留 PDF,latexmk -C连 PDF 一起删。VS Code 里配置好的latex-workshop.latex.clean.fileTypes就是干这个的,点一下清理按钮就行。
提示:
.aux文件别随手删。目录、交叉引用、参考文献编号都靠它传递,删了之后至少要连编两次才能恢复,遇到"引用变成问号"的情况,先想想是不是刚删过 aux。
7. 我的长期维护习惯与几个压箱底技巧
装好只是开始,真正决定你用起来顺不顺的是后面这些习惯。我自己的做法是:机器上只保留一个 TeX Live 版本,每年新版发布后不着急升,等目标期刊的模板确认兼容了再升,升级前把老版本的texmf-local目录备份出来,里面放的是自己改过的宏包和自定义样式,重装后直接拷回去就能用。字体这块我统一用 Fandol,不管在 Windows 还是 Linux 上都指定fontset=fandol,这样同一份文档换机器编译不会出岔子,代价是字形没那么好看,但对保证可复现性来说值得。
再分享一个排错小技巧:遇到完全看不懂的报错,把文档内容删到只剩最简结构,如果还能复现,说明问题在导言区;如果不能复现,就用二分法把段落一段段加回去,很快能定位到出问题的那一行。这招听起来笨,但比重读几百行日志快得多。另外一个很多人不知道的点是,\typeout{检查点}可以在编译日志里打印自定义信息,用来确认某个宏包到底有没有被加载、某个分支有没有执行到,调试复杂模板时特别好用。
最后说个关于编辑器的心得。我用了几年 TeXstudio,后来彻底转到 VS Code,原因不是 TeXstudio 不好,而是我不想在写代码、写文档、管 git 之间来回切窗口。工具链这东西,统一比先进更重要。你要是已经习惯了 TeXstudio 的 PDF 预览和正向反向搜索,那就继续用,别为了追新折腾自己。环境装好之后,真正的门槛其实是宏包的用法和排版思维,那些内容靠多写多查慢慢积累,装的这一步,一次搞对就够了。