每年到了写论文的季节,总有一批人被 Word 的排版折磨到怀疑人生:公式编号手动改到眼瞎、图表标题飘忽不定、参考文献格式调了一下午还是歪的。如果你正处于这个阶段,或者想给自己的科研写作流程来一次彻底升级,那 LaTeX + VSCode 这套组合绝对值得你花一晚上折腾明白。作为一个把毕业论文、期刊论文、甚至是平时组会汇报 PPT 都搬进 LaTeX 的老人,我可以负责任地说:前期配置的那点痛苦,会在你之后每一次写文档时加倍赚回来。
这篇文章不跟你扯太多理论,就讲怎么从零开始,把 LaTeX 环境在 VSCode 里跑通。我会把安装流程、核心配置、常用语法、以及我踩过的那些坑全部摊开来说。内容比较长,建议先收藏再照着操作,一步一个脚印来,基本能实现“零障碍上手”。
1. 组合思路:为什么偏偏是 VSCode + LaTeX
先说个很多人会问的问题:市面上能写 LaTeX 的工具那么多,Overleaf、TeXstudio、TeXworks、WinEdt,哪个不是开箱即用?为什么非要折腾 VSCode?
我的答案是:因为写作从来不只是“写”这一件事。你要面对的是文献管理、代码块、版本回退、多文件协同、以及随时可能插入的 Python 数据图。这些场景,VSCode 的通吃能力是其他专用编辑器比不了的。
1.1 三套主流方案怎么选
为了让你心里有底,我把最常见的几套方案摊开来对比一下:
| 方案 | 上手难度 | 编译体验 | 扩展能力 | 适用场景 |
|---|---|---|---|---|
| Overleaf | 极低 | 云编译,不用配置 | 有限,受网络限制 | 多人协作、快速起步 |
| TeXstudio | 低 | 内置 PDF 预览,体验不错 | 一般,主要围绕 TeX 本身 | 只写 LaTeX、不想折腾的人 |
| VSCode + LaTeX Workshop | 中等 | 自定义强,正向逆向搜索 | 极强,生态庞大 | 科研写作 + 编程 + 笔记一体化 |
Overleaf 确实是好工具,尤其是和导师共享文档时,对方打开链接就能改,省去一堆环境问题。但它有两个硬伤:一是重度使用后文档一多,免费版的编译队列和文件数量就不太够用;二是断网或者网络波动的时候,你什么都干不了。我自己的习惯是:小文档和多人协作用 Overleaf,正式的大论文、带大量本地图片和数据的项目,一律放回 VSCode 本地编译。
TeXstudio 我也用过挺长一段时间,它对 LaTeX 的定制确实做得深,菜单里能直接选各种环境模板,适合完全不想碰 JSON 配置的人。但它的编辑器生态本质上是封闭的,你想在代码区和文字区之间共享剪贴板历史、用 Git 做版本管理、或者把笔记和代码放在同一个工作区里,就比较绕。
VSCode 的优势在于它不是一个“LaTeX 编辑器”,而是一个“编辑器”。LaTeX 只是你装进去的一个插件。这意味着你可以一边写论文,一边在同一窗口里开一个 Python 脚本处理实验数据,甚至用 Jupyter 插件直接跑一段分析代码,把结果图存进论文目录。这种工作流一旦习惯了,就再也回不去了。
1.2 为什么我不推荐裸用 TeXworks
很多 LaTeX 发行版自带一个叫 TeXworks 的编辑器,界面简陋到像上个世纪的产物。它能编译、能看 PDF,但没有代码折叠、没有文件树、没有自动补全、没有拼写检查。写一篇几万字的论文时,光是在几十个 .tex 文件之间切换就能把你逼疯。
我见过太多新手装了 TeX Live 之后,打开 TeXworks 写了一下午,然后跑来问我:为什么我的 LaTeX 没有智能提示?为什么写错了不报红?为什么找不到引用跳转?这些问题在 VSCode 里基本不存在。所以我在这篇文章里的所有操作,都默认你以 VSCode 作为主战场。
2. 环境准备:先把“编译引擎”装明白
很多人对 LaTeX 有一个误解,以为它跟 Word 一样,装个软件就能开始打字。实际上 LaTeX 是一个“编译型”系统:你写的是纯文本源码,编译引擎会把它转换成排版结果。所以你的电脑上需要先有“引擎”,也就是 TeX 发行版。
2.1 TeX 发行版选哪个:TeX Live 还是 MiKTeX
Windows 上主流的发行版是 TeX Live 和 MiKTeX。简单的结论是:追求省心,选 TeX Live;追求轻量,选 MiKTeX。
TeX Live 的特点是安装包巨大(在线安装时装完通常要 5GB 以上),但装完就一劳永逸,几乎所有宏包都预装在里面,不需要额外联网下载。MiKTeX 的特点是安装包小,并且有“按需自动安装宏包”的功能——你用到某个宏包时它自动下载。听起来很完美,但实际使用时,每次编译依赖新宏包都会卡一下,如果刚好网络不好,编译就直接失败,对新手很不友好。
我的建议是:直接上 TeX Live。关于如何获取,我建议你访问 TUG 官网(tug.org)下载安装脚本,或者找国内高校的镜像站,速度会快很多。安装时基本上就是一路 Next,唯一需要留意的是安装时间较长,快则半小时,慢则一个多小时,取决于网络和磁盘速度。你可以利用这个时间去安装 VSCode 和插件。
macOS 用户则简单很多,直接安装 MacTeX 即可,同样来自 TUG,安装包包含了原生 App 和命令行工具。装完后记得检查一下 PATH,正常情况下/Library/TeX/texbin会被自动加入环境变量。
装完之后,怎么确认成功?打开一个终端(Windows 上是 PowerShell,macOS 上是 Terminal),输入以下命令:
latex --version xelatex --version如果能看到版本号输出,说明 TeX 发行版已经装好。这里要重点强调xelatex,因为后面我们写中文论文基本都靠它,原因等会儿讲。
2.2 VSCode 本体安装的三个细节
VSCode 的安装本身没什么难度,到官网(code.visualstudio.com)下载对应系统的安装包,双击装完即可。但我这里要提醒三个容易被忽略的点:
第一,安装时一定要勾选“添加到 PATH”。虽然大部分操作在图形界面里就能完成,但后续你可能需要直接在终端里输入code .打开项目,这个选项能省你很多事。第二,建议以用户级安装而不是系统级安装,尤其是在 Windows 上,系统级安装经常会出现权限不足导致插件无法更新的问题。第三,安装完成后先把界面语言切到中文,方法是按Ctrl+Shift+X打开扩展面板,搜索“Chinese (Simplified)”,安装后重启 VSCode 就变成中文界面了。这一步不是必须的,但对减轻新手心理压力很有帮助。
3. 配置核心:LaTeX Workshop 与 settings.json
环境装好后,接下来是重头戏:让 VSCode 具备完整的 LaTeX 编译能力。
3.1 必装插件清单
打开扩展面板,搜索并安装以下几个插件:
- LaTeX Workshop:核心插件,负责编译、预览、语法高亮、正反向同步,没它就没法玩。
- LaTeX Language Support:提供更细的语法解析,配合 LaTeX Workshop 使用体验更佳。
- Code Spell Checker:英文拼写检查,写论文时能救命的插件,很多低级错误就是它拦下来的。
- GitLens:如果你用 Git 管理论文版本,它能可视化每次修改,强烈推荐。
安装完 LaTeX Workshop 后,先别急着写代码。这个插件默认配置是给英文文档用的,直接编译中文会报错或者出现乱码。我们需要手动改一下配置。
3.2 settings.json 里最关键的四块配置
按Ctrl+Shift+P,输入“Open User Settings (JSON)”,打开配置文件。LaTeX Workshop 的配置项非常多,但你只需要关注下面几个核心块:
第一块是“编译工具链”。LaTeX 引擎有很多种,pdflatex、xelatex、lualatex 等,它们的侧重点不同。中文文档必须用 xelatex(或 lualatex),因为它直接支持 UTF-8 编码和系统字体。我们配置一个工具链,让 LaTeX Workshop 按照预设顺序执行编译命令。以下是一份我实测过很久的配置:
{ "latex-workshop.latex.tools": [ { "name": "xelatex", "command": "xelatex", "args": [ "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%" ] }, { "name": "bibtex", "command": "bibtex", "args": [ "%DOC%" ] } ], "latex-workshop.latex.recipes": [ { "name": "xelatex -> bibtex -> xelatex -> xelatex", "tools": [ "xelatex", "bibtex", "xelatex", "xelatex" ] } ] }这里-synctex=1的作用是生成同步索引文件,让 PDF 和源代码之间可以互相跳转。-interaction=nonstopmode表示编译遇到错误时不暂停等待输入,而是尽量编译完并输出错误日志,这对自动化编译很重要。
第二块是“PDF 预览方式”。LaTeX Workshop 内置了一个 PDF 查看器,但我个人喜欢在右侧 tab 中直接预览,这样编译完能立刻看到效果。你可以通过以下配置指定:
"latex-workshop.view.pdf.viewer": "tab", "latex-workshop.view.pdf.ref.viewer": "auto",如果你希望更专业的反向定位体验,Windows 用户可以考虑安装 SumatraPDF,配置外部查看器。这步可以等基础流程跑通后再折腾,我后面会专门讲。
第三块是“自动清理辅助文件”。每次编译都会生成一堆 .aux、.log、.out 之类的中间文件,时间长了目录会变得很乱。配置以下字段让插件在编译成功后自动清理:
"latex-workshop.latex.autoClean.run": "onBuilt", "latex-workshop.latex.clean.subfolder": true第四块是“自动补全与悬浮预览”。LaTeX Workshop 自带的补全已经很好用,你可以在书写\ref{}、\cite{}时自动跳出可选的标签列表。还有一个贴心功能是悬停预览,把鼠标移到公式或引用上就能看到渲染结果,配置如下:
"latex-workshop.hover.preview.enabled": true, "latex-workshop.intellisense.citation.format": "text", "latex-workshop.intellisense.label.reference.enabled": true配置完成后保存,VSCode 会自动加载新设置。此时你的编辑器已经具备了完整的 LaTeX 写作能力。
3.3 编译原理速通:为什么第一次编译这么慢
在进入语法环节前,我想先讲清楚一个基本概念:LaTeX 编译不是一次性的“翻译”,而是多轮递进的过程。
简单来说,第一遍编译时,LaTeX 会把文档里的引用、编号、目录等信息写入 .aux 辅助文件;第二遍编译时,它再读这些辅助文件,把交叉引用和目录补全。如果文档中包含参考文献,还需要在中间插入一次 bibtex 命令来生成参考文献列表。所以一条完整的编译链是:xelatex → bibtex → xelatex → xelatex。这也是我刚才配置里那个 recipe 的来由。
明白了这个,你就能理解为什么第一次编译几百页的大文档时慢得让人以为死机了。实际上,xelatex 需要加载系统字体、解析所有宏包、执行排版算法,这是一个计算量不小的过程。等编译完成后,所有中间文件都会缓存起来,后续就快很多。
4. 新手必看的语法与排版实操
环境都搭好了,现在进入实战环节。我会从一个最简单的中文文档开始,逐步加上公式、图片、表格和参考文献。
4.1 用 10 行代码写出一篇中文文档
在 VSCode 里新建一个文件夹,命名为my_paper,在里面新建文件main.tex,输入以下内容:
\documentclass[UTF8]{ctexart} \title{我的第一篇 LaTeX 中文论文} \author{作者姓名} \date{\today} \begin{document} \maketitle \section{引言} 这是一个简单的 LaTeX 文档,用来测试中文编译是否正常。 \end{document}保存后点右上角的绿色“▶”按钮(或者按Ctrl+Alt+B),插件就会执行我们刚才配置的 xelatex 编译链。编译成功后,右侧会弹出 PDF 预览。如果一切顺利,你会看到一篇带着标准标题、作者、日期和章节的 PDF 文档,排版效果干净得不像话。
看到这里,有件事你必须注意:如果你用的是 pdfLaTeX 编译这段代码,百分百报错。中文支持依赖的是 ctex 宏包,而 ctex 在 pdfLaTeX 下处理中文编码的过程极其痛苦,动不动就“缺少字符”或“乱码”。所以从一开始就养成用 xelatex 的习惯,是新手最该有的觉悟。
4.2 公式与图像:科研论文两大刚需
理工科论文里最常见的就是数学公式。LaTeX 的公式系统是它的灵魂,也是新手最容易被劝退的地方——比如网上求助最多的“latex右斜线怎么打”这个问题。
其实很简单,键盘上“回车键”上方那个带|和\的键就是反斜杠(Backslash),在英文输入法下按它就能打出来。我们平时说“右斜线”通常指的是/,它在键盘右下角问号键旁边,是正斜杠(Slash)。LaTeX 命令的起始标记是反斜杠\,比如\alpha表示希腊字母 α,\frac{a}{b}表示分数。所以这个符号的打法和位置一定要记牢。
举一个带公式的最小例子:
\documentclass[UTF8]{ctexart} \usepackage{amsmath} \begin{document} 爱因斯坦的质能方程为: \begin{equation} E = mc^2 \label{eq:emc} \end{equation} 由公式 \ref{eq:emc} 可知,质量与能量可以相互转化。 \end{document}\usepackage{amsmath}是数学排版的核心宏包,几乎所有多行公式、矩阵、分段函数环境都要用到它。\label和\ref配合使用可以实现公式编号的自动引用,这是 Word 用户最羡慕的功能之一。
图片插入同样高频。使用 graphicx 宏包,把图片放在和 main.tex 同级的figures文件夹里,然后这样引用:
\documentclass[UTF8]{ctexart} \usepackage{graphicx} \begin{document} \begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{figures/实验数据图.png} \caption{实验数据拟合结果} \label{fig:data} \end{figure} 如图 \ref{fig:data} 所示,拟合优度良好。 \end{document}这里[htbp]是浮动位置参数,依次代表“放在这里、放在顶部、放在底部、单独一页”,LaTeX 会按顺序尝试并自动优化布局。width=0.8\textwidth的意思是图片宽度占页面正文宽度的 80%,推荐用相对宽度而不是固定像素,这样在不同版式下都能自适应。
关于插图,新手最常见的坑有两个。第一个是图片路径写错,记住\includegraphics的路径是相对 main.tex 所在目录的,不是相对当前文件。第二个是图片文件名最好不要带空格和中文,某些引擎对中文文件名支持不好,容易莫名其妙报错。我习惯把所有图片统一命名成t01.png、f02.pdf这种格式。
4.3 表格自动换行与多行公式
表格是比图片更折磨人的存在,尤其是当单元格内容很长时。默认的tabular环境遇到长内容会直接溢出页面,这时候你需要限制列宽。
一个常见的解决方案是使用tabularx宏包,它允许你指定表格总宽度,然后自动分配列宽。比如:
\documentclass[UTF8]{ctexart} \usepackage{tabularx} \begin{document} \begin{table}[htbp] \centering \caption{不同方法性能对比} \begin{tabularx}{\textwidth}{|l|X|X|} \hline 方法 & 平均精度 & 备注 \\ \hline A & 89.2\% & 传统方法,计算速度快但精度偏低 \\ B & 94.5\% & 深度学习方法,训练时间较长 \\ \hline \end{tabularx} \end{table} \end{document}X列类型会自动把剩余宽度分配到该列,并且当单元格内容过长时自动换行。如果你想精确控制某一列的宽度,还可以用p{3cm}这样的固定宽度列。注意,使用p{}类型的列时,默认是两端对齐,配合\raggedright可以改成左对齐,看起来更自然。
多行公式则可以使用align环境,用&指定对齐位置,用\\换行:
\usepackage{amsmath} \begin{align} f(x) &= a x^2 + b x + c \\ &= (x - x_1)(x - x_2) \end{align}这组公式会按等号对齐,并且每一行都有独立的自动编号。如果不需要编号,可以在环境名后面加星号,写成align*。
4.4 参考文献引用:论文的排面工程
参考文献是论文写作的重灾区,特别是“引用两篇参考文献格式”这种需求。在 LaTeX 中,实现多篇文献引用极其简单,只需在\cite命令中用逗号分隔多个标签即可:
\cite{author2020, author2021}但要达到这一步,需要先搞定参考文献数据库。推荐使用 BibTeX,它把参考文献信息统一放在一个.bib文件里。例如refs.bib内容如下:
@article{author2020, title = {A Study on Efficient Writing}, author = {List, Some and Other, Another}, journal = {Journal of Academic Writing}, year = {2020} } @article{author2021, title = {Advanced LaTeX Techniques}, author = {Smith, John}, journal = {Journal of Typesetting}, year = {2021} }然后在main.tex里,在\begin{document}之后需要引用文献的位置直接\cite{author2020, author2021},并且在文档末尾、\end{document}之前加上:
\bibliographystyle{plain} \bibliography{refs}\bibliographystyle指定参考文献的排序和显示格式,常用选项包括plain、unsrt、alpha、ieeetran等。投稿时,会议或期刊通常会有自己的格式要求,直接改这一行即可。编译时一定要使用之前配置的“xelatex -> bibtex -> xelatex -> xelatex”完整流程,少跑一步参考文献都不会出现。
5. 踩坑记录与速查表
配置和基础语法都过了一遍,下面这部分是我最想写的内容。以下每一个坑都是我实际遇到并排查过的,希望能帮你少走弯路。
5.1 “Undefined control sequence”和其他经典报错
新手最常见的报错是! Undefined control sequence。这个报错通常意味着你打错了一个命令,或者使用的宏包没有引入。解决办法是先看报错信息里提到的命令名称,检查拼写,再看看对应的\usepackage{}是否写在了导言区。
还有一个高频问题是! LaTeX Error: File 'xxx.sty' not found。这表示你引用的某个宏包没有安装。由于我们推荐的是 TeX Live 全量版,理论上所有宏包都已经内置,遇到这个报错大概率是宏包名写错了。当然,如果你用的是 MiKTeX 且网络不好,也可能出现这种情况。解决办法是在终端里用tlmgr install 宏包名手动安装。
中文乱码和缺字问题也是重灾区。如果你用 xelatex 编译仍然出现方块或者乱码,先检查文档编码是不是 UTF-8。在 VSCode 右下角可以看到当前文件的编码,如果是 GBK 之类,点击它并改成“Reopen with Encoding -> UTF-8”。另外,确认你的.tex文件里\documentclass用的是ctexart或引入了ctex宏包,而不是直接在article里写中文。系统缺少中文字体也可能导致显示异常,一段时间内 Windows 自带的“宋体”“黑体”通常都够用,macOS 上则对应“宋体-简”等字体。如果需要指定字体,可以用\setCJKmainfont{字体名}命令。
第二个容易踩的坑是编译缓存。有时候你改完了代码,编译出来的 PDF 还是老样子,怎么刷新都没变化。原因多半是编辑器还在使用旧的辅助文件,或者构建设置是“仅增量编译”。解决办法是先手动删除项目里的.aux、.toc、.out和.bbl文件,然后执行完整编译链。我甚至可以给你一个万能的“清缓存大法”:在终端里运行rm -rf *.aux *.log *.out *.toc *.bbl *.blg(Windows PowerShell 下写Remove-Item *.aux, *.log, *.out, *.toc, *.bbl, *.blg),再重新编译。这招能解决所有“我明明改了啊怎么没反应”的问题。
5.2 图片路径、表格超宽、字体字体字体
图片相关的问题最让人头大:为什么编译报错说找不到图片?其实原因很简单,路径写错了。很多人习惯把图片放在figures子目录下,但写路径时忘了带上相对路径前缀。另外,PDFLaTeX 支持的主流图片格式是 PDF、PNG、JPG,如果你用 xelatex,EPS 图片必须先转换成 PDF 或 PNG 才能正常插入。转换工具可以用 Ghostscript,也可以用 Inkscape 的“另存为 PDF”功能。记住,LaTeX 编译引擎不是“什么图都能吃”,提前把图片统一成 PDF 或 PNG,能省去大量调试时间。
表格超宽也是高频问题。默认的 tabular 环境,列内容再长都不会自动换行,而是直接撑破页面。解决方案不外乎三种:第一,用p{宽度}指定列宽,让内容自动换行;第二,用tabularx宏包,配合X列类型自适应分配宽度;第三,如果表格实在太宽,可以旋转表格(使用pdflscape宏包把该页变为横向),或者缩小字号(表格内容外包\small或\footnotesize)。但这里有个细节极易忽略:p{3cm}的列是顶部对齐的,而普通c列是垂直居中的,混用会很难看。如果需要垂直居中,可以用m{宽度}列类型,或者用\renewcommand{\arraystretch}{1.2}调整行高,让表格整体更协调。
5.3 Windows 下 VSCode 与 SumatraPDF 的配合
虽然 LaTeX Workshop 内置的 PDF 预览已经够用,但如果你需要“PDF 里点击一下就跳回源码对应的位置”这种反向搜索功能,内置查看器有时候不够顺滑。Windows 下我强烈推荐 SumatraPDF,它对 LaTeX 的反向搜索支持做得极好,而且软件体积小、打开 PDF 速度快到起飞。
配置步骤很简单。先安装 SumatraPDF,然后在 VSCode 的设置里加两行:
"latex-workshop.view.pdf.viewer": "external", "latex-workshop.view.pdf.external.viewer.command": "C:/Users/<你的用户名>/AppData/Local/SumatraPDF/SumatraPDF.exe", "latex-workshop.view.pdf.external.viewer.args": ["%PDF%"]正反向搜索的命令行参数在每一版 SumatraPDF 上会略有差异,新版用的是-forward-search和-reuse-instance,具体可以在 VSCode 的 LaTeX Workshop 文档里找到最新写法。这一步其实属于进阶玩法,基础流程跑通之前不建议折腾,免得被外部工具的问题带偏。
5.4 关于模板和写长文档的建议
很多人在配置完环境后,第一件事就是找个论文模板往里灌内容。这没问题,但我提醒一点:模板虽好,不要贪多。每个模板的宏包依赖和编译链可能完全不同,有的模板要求 pdflatex 编译,有的模板用了自定义的 bibstyle,甚至还有的模板对图片路径有特殊规定。我见过太多人下载了十几个模板,每个都报错,最后心态崩了。
我的建议是:至少用上面我给你那个最小的 ctexart 框架,手工跑通一次编译,再考虑套模板。你先能控制 10 行代码了,模板里出了任何问题,你至少有分辨能力,知道是宏包冲突、引擎不对、还是路径写错。这个过程比任何教程都值钱。
另外,一定要养成用\input{}或\include{}拆分章节的习惯。比如main.tex只总领全文,每章内容放一个独立文件,用\include{chapter1}、\include{chapter2}引入。这样做的好处是:编译时可以单独编译某个章节(LaTeX Workshop 支持\includeonly配合局部编译),修改后的编译速度快很多;文件之间互相干扰也小。写大论文的管理体感,能舒服非常多。
如果你未来要写更复杂的文档,比如需要保持版式统一、内容模块化的作品集、CV、简历,LaTeX 这套流程同样适用。它本质上是一种“把写作与排版分离”的思维方式:你只管内容和结构,排版引擎负责美学。一旦体会到了这种分离带来的自由,你再也不想回到手动调格式的原始时代。
最后再分享一个小技巧:VSCode 的Ctrl+Shift+V可以唤起 Markdown 预览,但你完全可以把 Markdown 和 LaTeX 混用,在 Markdown 文件里直接写公式(用$...$包裹),再用 Pandoc 把它转成 LaTeX 或 Word。这样一来,日常笔记用 Markdown 记录,正式论文用 LaTeX 输出,两者之间的桥梁就是 Pandoc。这个工作流我用了好几年,效率非常稳定,推荐你也试一次。