拓冰建站拓冰建站
首页 / 资讯中心 / 正文

VS Code + LaTeX 论文排版环境搭建全攻略

写公众号以来经常被问到一个问题论文排版到底用Word还是LaTeX我的回答一直都是如果你要写超过20页的理工科论文、毕业设计或者期刊投稿用LaTeX是省心而不是折腾。但LaTeX的上手门槛确实劝退了不少人特别是第一次接触时“环境装不上、编译报错看不懂、中文显示乱码”三连击直接让人想放弃。今天这篇我就拿自己多年写论文、改模板、被投稿系统折磨的经历带你把VS Code LaTeX这套组合从零搭起来全程手把手把该踩的坑提前帮你踩平。这篇文章适合这些读者被毕业论文排版搞得焦头烂额的本科生刚进实验室需要写开题报告的研究生以及任何想用LaTeX投稿期刊但还在观望的人。我会把“安装LaTeX发行版 - 配置VS Code - 写第一个文档 - 处理图片公式参考文献 - 解决各种报错”这条路完整走一遍所有配置都基于Windows系统Mac和Linux用户参考思路即可。保证你看完能直接上手而不是收藏了就当学会了。1. 想明白再动手LaTeX到底比Word强在哪很多人上来就问“LaTeX怎么安装”我反而喜欢先聊思路。工具只是手段你得先知道自己为什么需要折腾这个环境。1.1 它解决的核心痛点是“排版”而不是“打字”LaTeX是一个基于“内容与格式分离”理念的排版系统。你用标记语言描述文档结构和内容比如“这是标题”“这是章节”“这是公式”而字体、间距、行距、页边距这些琐碎细节全部交给发行版和模板去处理。这就意味着你不需要像在Word里那样手动调整目录缩进、公式对齐、图表编号——这些东西在LaTeX里是自动生成的而且是全局一致的。举个例子你在Word里写了三章内容忽然发现要把正文从五号字改成小四号那一瞬间你的内心是崩溃的因为全文所有字号、行距、标题层级都要手动改。但在LaTeX里你只需要改一行文档类参数整个文档的排版风格立刻全部更新。这种“改一处处处跟新”的爽快感写过长文档的人都懂。1.2 什么时候LaTeX不是最优解我也说句公道话不是所有场景都用LaTeX。如果你只写2~3页的会议简报或者排版需求极其简单Word确实更顺手。LaTeX的学习曲线是实打实的陡峭前三天你可能会因为各种小错误反复编译失败甚至会怀疑自己是不是不适合写代码——但那是正常的任何人都会经历。真正适合LaTeX的场景包括带有大量数学公式的理工科论文Word的公式排版质量在LaTeX面前确实不够看、需要严格参考文献格式的期刊投递BibTeX管理参考文献比手动整理强太多、以及任何超过30页的长文档目录、交叉引用、页眉页脚自动管理。判断标准很简单如果你的文档里有超过10个公式或者超过20篇参考文献或者页数超过30页那么花一个下午配置LaTeX环境绝对值得。1.3 为什么我选VS Code而不是TeXstudioTeXstudio这类专用编辑器也很好自带一键编译和内置PDF预览开箱即用。但VS Code的优势在于“一体化”你写论文的同时还能用同一个编辑器写代码、做笔记、跑Python脚本。更重要的是LaTeX Workshop插件提供了代码补全、编译任务管理、SyncTeX正反向搜索、自动清理辅助文件等能力配合Git做版本管理也非常方便。对于一个把写论文和写代码作为日常的人来说一个编辑器解决所有事情这种幸福感是很实在的。2. 环境搭建全流程从下载到第一次编译成功2.1 第一步安装LaTeX发行版——这是最花时间的部分LaTeX本身只是一个语言和命令集你需要一个发行版来安装所有宏包和编译引擎。Windows上主流有两个选择TeX Live和MiKTeX。我在前面几年一直用MiKTeX因为它安装体积小而且可以“按需自动安装缺失宏包”——你写了一段命令编译器发现缺包它自动去下载安装特别适合新手。但后来我改用TeX Live因为我投稿期刊动不动需要安装几十个宏包TeX Live一次装好全部宏包之后就不会再被“缺包”问题打断思路。我的建议是如果你磁盘空间紧张或者只想快速体验选MiKTeX安装包几十MB缺点是首次编译可能要等它后台下载宏包。如果你想一劳永逸选TeX Live但完整安装有8GB左右要预留时间。我的操作习惯是直接下CTeX套装里的TeX Live定制版或者去镜像站下载instal-tl-windows.bat然后全部默认下一步安装。安装时间可能在20分钟到1小时之间取决于网速和机器性能。期间你可以先去装VS Code时间一点不浪费。注意安装路径不要带空格和中文比如别装到D:\Program Files\LaTeX这种目录免得后续宏包路径解析出问题。我见过太多人栽在这一步上。安装完成后打开终端输入xelatex --version如果输出版本号就说明环境变量配好了。没配好就重启终端或者手动把安装目录下的bin文件夹加到系统PATH里。2.2 第二步安装VS Code并配置中文界面VS Code的安装没什么技术含量去官网下载Windows版一路Next即可。装完打开后左侧扩展商店搜索“Chinese Language Pack”安装后重启就是中文界面。这一步纯粹是让界面看着舒服对功能没影响。同时在扩展商店搜索并安装最核心的LaTeX扩展LaTeX Workshop。这是VS Code下最优秀的LaTeX环境提供了编译、PDF预览、语法检查、代码片段等功能而且高度可定制。另外建议安装一个拼写检查插件Code Spell Checker写英文摘要时能帮你抓出拼写错误非常实用。2.3 第三步编写第一个最小文档验证环境环境配没配好最快的方法就是跑一个能通过编译的最小文档。新建一个文件夹test-latex在里面新建文件main.tex内容如下\documentclass{article} \usepackage[UTF8]{ctex} \begin{document} 你好世界Hello LaTeX! \end{document}保存后在VS Code里打开这个文件按CtrlAltB默认编译快捷键如果底部状态栏出现一个绿色的勾且PDF预览窗口弹出来显示“你好世界”恭喜你环境已经通了。如果你的编译报错Internal Error或者找不到xelatex通常是LaTeX发行版没装好或者VS Code终端没识别到PATH重启VS Code即可。如果还是不行回到2.1检查环境变量。3. LaTeX Workshop精修配置把编辑体验拉满LaTeX Workshop默认配置已经能用但离“舒服”还差一段距离。我给你一份我自己的settings.json把常用优化一次性到位。3.1 设置编译工具链和编译方式LaTeX有多个编译引擎常见的有pdflatex、xelatex、lualatex。其中xelatex对中文支持最好也是我们最常用的。LaTeX Workshop默认的recipe不一定是xelatex所以我们需要显式指定。在VS Code中按CtrlShiftP打开命令面板输入Open User Settings (JSON)打开settings.json添加以下内容{ latex-workshop.latex.recipes: [ { name: xelatex, tools: [ xelatex ] }, { name: xelatex bibtex xelatex*2, tools: [ xelatex, bibtex, xelatex, xelatex ] } ], latex-workshop.latex.tools: [ { name: xelatex, command: xelatex, args: [ -synctex1, -interactionnonstopmode, -file-line-error, -pdf, %DOC% ] }, { name: bibtex, command: bibtex, args: [ %DOCFILE% ] } ], latex-workshop.view.pdf.viewer: tab, latex-workshop.latex.clean.fileTypes: [ *.aux, *.log, *.fls, *.out, *.fdb_latexmk, *.synctex.gz, *.bbl, *.blg, *.bcf, *.run.xml ] }解释一下几个关键参数。-synctex1是为了让代码和PDF位置同步这是后面实现“Ctrl点击跳转”的基础。-interactionnonstopmode让编译遇到错误时不会停下来干等你而是尽量把所有错误打印出来方便你一次性排查。%DOC%是LaTeX Workshop提供的变量代表当前打开的主文件。为什么要把bibtex也单独做成一个recipe因为论文到后期一定会插入参考文献。使用BibTeX时正确的编译顺序是xelatex - bibtex - xelatex - xelatex第一次生成辅助文件第二次读入参考文献宏包数据第三次交叉引用解析完毕第四次确保所有编号稳定。我保存了一个名为“Clean auxiliary files”的快捷键配置每次编译完成自动清理中间文件避免目录里堆满了没有用的.aux.log文件。3.2 配置正反向搜索和自动编译所谓“正反向搜索”指的是在VS Code里Ctrl点击LaTeX代码PDF会跳转到对应位置在PDF里Ctrl点击某一处编辑器也能定位到对应的LaTeX源码。这个功能在修改论文时简直是救命级别的效率提升。LaTeX Workshop默认支持SyncTeX只要你用了-synctex1参数。反向搜索还需要在PDF查看器中设置如果你用的是VS Code内置的PDF查看器扩展已经处理好了一切不需要额外配置。我习惯把内置PDF浏览器作为Tab打开latex-workshop.view.pdf.viewer: tab因为它可以并排显示源码和PDF改一行代码PDF自动刷新体验非常流畅。自动编译的设置建议保持默认的“onSave”也就是每次保存文件自动编译。如果文件较多编译时间较长也可以改成“onFileChange”但我觉得onSave更可控避免在打字过程中频繁编译打断思路。3.3 配置代码补全和数学公式片段LaTeX Workshop自带的补全已经比较完善你输入\beg它会提示\begin{}输入\alp会提示\alpha。但针对日常写作我推荐额外配置几个自定义代码片段效率能翻倍。在VS Code里按CtrlShiftP输入Configure User Snippets选择“latex.json”加入下面几个常见的片段{ Figure: { prefix: fig, body: [ \\begin{figure}[htbp], \\centering, \\includegraphics[width0.8\\linewidth]{${1:figures/图名}}, \\caption{${2:图片说明}}, \\label{fig:${3:标签名}}, \\end{figure} ] }, Inline Equation: { prefix: eqi, body: $${1:表达式}$, }, Display Equation: { prefix: eqd, body: [ \\begin{equation}, ${1:表达式}, \\label{eq:${2:标签名}}, \\end{equation} ] } }这样在正文里输入fig再按Tab就能自动展开一个完整的图片环境框架输入eqi能快速插入行内公式输入eqd插入带编号的公式环境。自定义片段的好处是你把自己写论文时反复敲的模板固化下来日积月累省下来的时间非常可观。4. 写论文的第一课从空白文档到完整结构环境配好了我们得真正写点东西。这里我用一个完整的论文骨架带你把LaTeX的核心语法过一遍顺便讲清楚教材里不会写的坑。4.1 文档结构和常用声明一份标准论文的基本框架是这样的\documentclass[12pt,a4paper]{article} \usepackage[UTF8]{ctex} \usepackage{graphicx} \usepackage{booktabs} \usepackage{caption} \usepackage{subcaption} \usepackage{tabularx} \usepackage{amsmath, amssymb} \usepackage{geometry} \geometry{top2.5cm,bottom2.5cm,left3cm,right2.5cm} \title{基于VS Code和LaTeX的论文写作环境搭建} \author{你的名字} \date{\today} \begin{document} \maketitle \begin{abstract} 这里是摘要内容简要说明论文工作。 \end{abstract} \section{引言} \label{sec:intro} 这里是引言段落。 \section{相关工作} \label{sec:related} \section{方法} \label{sec:method} \section{实验} \label{sec:experiment} \section{结论} \label{sec:conclusion} \bibliographystyle{plain} \bibliography{references} \end{document}这里我用了ctex宏包解决中文字体问题用了geometry宏包设置页边距这个比CTeX默认模板更灵活。你如果投中文期刊可能还需要gbt7714样式的参考文献后面会讲。有一个很多人忽略的点\label与\ref搭配可以实现交叉引用。比如你写“见第\ref{sec:intro}节”输出时自动显示正确的编号。你不需要手动维护编号插入新章节时所有引用自动更新这太方便了。4.2 公式不要背命令理解结构才是重点LaTeX里数学公式是一个大坑但也是最大的红利。行内公式用单美元符独立编号公式用equation环境。常用的数学符号很多人问“latex右斜线怎么打”其实在LaTeX里反斜线本身是命令的开始符想要输出一个反斜线要用\backslash或者\textbackslash。而“右斜线”如果指的是“/”这个字符直接打就行在数学模式下它自动处理为斜杠。常用数学命令我整理过一份速查表含义LaTeX命令显示效果分数\frac{1}{2}1/2垂直分式根号\sqrt{x1}√(x1)下标x_ix_i上标x^2x²希腊字母\alpha \beta \gammaα β γ求和\sum_{i1}^{n}∑无穷\infty∞向量\vec{v}v→矩阵\begin{matrix} ... \end{matrix}矩阵写公式时新手最困惑的是“为什么我的公式渲染出来不对称”其实是因为忽略了{}分组。比如x_i^2只让i有平方要让整个x_i都要平方得写{x_i}^2。我踩过的坑是公式里括号不配对编译报错Missing } inserted这个错误基本天天见。4.3 图片插入不只是\includegraphics这么简单插入图片看起来简单但细节很多。最稳的组合是\begin{figure}[htbp] \centering \includegraphics[width0.8\linewidth]{figures/结构图.pdf} \caption{系统架构图} \label{fig:arch} \end{figure}注意参数[htbp]的含义是LaTeX浮动体位置优先级别here当前位置、top页顶、bottom页底、page单独成页。不要指望LaTeX百分百按你的字面位置放置它是在保证排版的最优前提下尽量靠近引用位置。如果你强制用[H]需要float宏包图片会严格放在当前位置但可能会留下大片空白。我的建议是在投稿模板里用模板指定的位置参数不要自己去改。图片格式方面这算是个大机关。用xelatex编译时可以插入PDF、PNG、JPG但PDF图片如果包含特殊字体或者透明渐变可能出现显示异常。另外交叉引用图片编号用\ref{fig:arch}记得在caption下面加label而且label必须写在caption之后否则引用编号会指向section而不是figure。4.4 表格自动换行和三线表是论文标配LaTeX表格命令比Word复杂但排出来的效果是真的整齐。普通表格用tabular环境论文常用的是三线表用booktabs宏包\begin{table}[htbp] \centering \caption{模型性能对比} \label{tab:result} \begin{tabular}{lccc} \toprule 模型 精确率 召回率 F1值 \\ \midrule Model A 0.85 0.82 0.83 \\ Model B 0.88 0.85 0.86 \\ \bottomrule \end{tabular} \end{table}很多人问latex表格自动换行怎么弄。标准tabular环境里单元格内部文字不会自动换行你需要在相应列的定义中加p{3cm}例如\begin{tabular}{lp{4cm}c} 第一列靠左 这一列宽度固定为4cm文字过长会自动换行 第三列居中 \\ \end{tabular}更灵活的方案是用tabularx宏包的X列类型它自动分配宽度\begin{tabularx}{\linewidth}{lXc} ... \end{tabularx}这样整个表格占据一行宽度X列自适应伸缩写摘要、长描述文本时非常好用。4.5 参考文献管理用BibTeX而不是手敲你写了20篇参考文献用LaTeX引用时只需要在文中插入\cite{key001}然后在一个.bib文件中维护条目。以引用两篇参考文献为例你的references.bib文件内容大致是article{knuth1984literate, author {Donald E. Knuth}, title {Literate Programming}, journal {The Computer Journal}, year {1984}, volume {27}, number {2}, pages {97--111} } book{lamport1994latex, author {Leslie Lamport}, title {LaTeX: A Document Preparation System}, edition {2nd}, publisher {Addison-Wesley}, year {1994} }在文档中引用两篇的格式是\cite{knuth1984literate,lamport1994latex}注意多个key用逗号分隔不要加空格——或者加了空格也没事但容易误判。然后编译顺序必须是xelatex - bibtex - xelatex - xelatex否则参考文献和引用编号都会是问号。区别在于如果你用\bibliographystyle{plain}参考文献按字母排序数字编号如果用unsrt按引用顺序排序中文期刊常用的国标样式是gbt7714宏包的方式后面讲投稿模板时再展开。5. 常见问题与排查技巧实录这是整个搭建过程里最值得收藏的一部分。我在各种群、论坛里见过太多新手问同样的问题这里我把高频问题汇总成速查表每一条都是我自己或者身边人亲自踩过的坑。症状原因解决办法编译报错ctex.sty not found缺少CTeX宏包命令行安装tlmgr install ctexTeX Live或MiKTeX自动下载安装中文显示为乱码或方块编译器不是xelatex或没导入ctex确认recipe使用xelatex文档\usepackage[UTF8]{ctex}图片不显示编译报File not found图片路径错误检查文件名有无空格或中文路径建议只用英文字母下划线PDF中引用编号是??编译顺序不对使用xelatexbibtex完整recipe或按正确顺序手动编译公式后出现! Missing $ inserted数学命令用于文本模式确保公式内容在$...$或equation环境中表格列宽度不够文字溢出tabular列类型没指定宽度使用p{宽度}或tabularx的X列PDF中文字体不美观默认字体问题加\usepackage{newtxtext,newtxmath}或用fontspec配合系统字体按CtrlAltB没有反应没有LaTeX Workshop扩展在扩展商店安装LaTeX Workshop编译时Runaway argument?某一行漏了花括号检查{}是否配对定位到报错行附近VS Code底部没有PDF图标查看器没打开按CtrlAltV或点击状态栏PDF图标5.1 最坑的“缺少宏包”类错误LaTeX最让人崩溃的就是“安装完了还要装包”。TeX Live用户可以用tlmgr install 包名来装MiKTeX用户通常在报错弹窗里选“Install”即可或者在MiKTeX Console中修改自动安装策略为“Always”。但有些包不是包本身而是编译器不支持。比如你用了\usepackage{fontspec}这需要xelatex或lualatex才能编译pdflatex编译会直接报错。所以新手第一步一定要确认编译器是xelatex这能解决80%的中文和字体问题。如果你用TeX Live安装宏包时网速感人建议更换CTeX源镜像。具体命令是tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet tlmgr update --self tlmgr install ctex5.2 中文环境的三个隐藏坑第一个坑是编码问题。务必保证tex文件保存为UTF-8编码VS Code默认就是UTF-8但如果你从微信或者Word复制粘贴过文本可能混入全角符号或隐藏字符导致莫名其妙的错误。我的习惯是遇到诡异错误先全选删除空白字符或者重新新建干净文档。第二个坑是字体。Windows上CTeX宏包会自动帮你选中文默认字体基本不用管。但如果你用macOS或Linux可能需要用fontspec指定中文字体比如\setCJKmainfont{SimSun} % Windows 宋体 \setCJKsansfont{SimHei} % Windows 黑体第三个坑是超长文档编译缓慢。xelatex处理大文档确实慢特别是插入大量PDF图片后。优化方法是写单个章节时用\includeonly{chapter2}只编译当前章节最终全量编译时再注释掉。这能省下大量等待时间。5.3 左右花括号、反斜线等符号怎么打前面提过“latex右斜线怎么打”我再展开一次。LaTeX的命令都是以反斜线\开头如果你要显示一个反斜线本身在正文里用\textbackslash{}在数学模式里用\backslash。而左花括号{和右花括号}在LaTeX里是特殊字符要显示它们必须在前面加反斜线转义\{和\}。百分号%是注释符显示时要写\%。美元符号$是数学模式进入符显示时要写\$。井号#是参数占位符显示时要写\#。下划线_是下标符号显示时要写\_。这些符号如果不转义轻则编译报错重则悄悄改变整个文档的排版结构别问我怎么知道的。5.4 使用模板前先看一下宏包差异很多人喜欢下载期刊模板或毕业论文模板直接跑。但模板一般年代久远可能依赖旧的宏包和最新发行版不兼容。我最常遇到的是老模板用了\usepackage{CJK}而现代发行版建议用ctex或xeCJK。处理方法是不要硬刚直接在模板正文里替换为\usepackage[UTF8]{ctex}把原来的\begin{CJK*}{UTF8}{gbsn}这类段落全部删掉。另外有些模板会自定义大量命令和宏包冲突不要试图去改宏包要么接受现实调整自己的写作方式要么换一个维护积极的模板。5.5 用“状态栏按钮”诊断编译过程LaTeX Workshop在VS Code底部状态栏会显示一个里程计式的按钮点击可以打开“LaTeX Workshop”的输出面板。编译失败时输出面板会列出红色日志你不需要全看懂核心是搜! LaTeX Error:或Error关键词然后定位到对应的代码行。每次调试我都是按Ctrl\切到终端再用F8快捷键跳到下一条错误。记住方法比背错误更重要。6. 从“能编译”到“有生产力”的三件套环境搭好、语法会基本操作接下来就是让这套系统真正成为生产力工具。对我来说让LaTeX写作效率和Word一样快的关键在这三件事。6.1 模板管理建立自己的“章节目录碎片库”我自己维护了一个模板文件夹里面有论文骨架、常用宏包清单、三线表模板、图片双栏模板、参考文献示例等。每次开新论文我直接复制整个文件夹过去比从空文档开始快太多。你可以在GitHub上建一个私有仓库把这些模板传上去换电脑时一键克隆下来继续写。我强烈建议把你反复用到的代码块做成VS Code的User Snippets就像前面说的fig和eqd。这样写作时可以全神贯注在内容上而不是琢磨语法。毕竟LaTeX的定位是把你从格式琐事里解放出来如果你每个表都重新敲一次表格结构那就本末倒置了。6.2 用“魔咒编译链”一次性搞定参考文献很多新手被参考文献编译顺序折磨得想哭。这里我给你一个一劳永逸的配方在LaTeX Workshop的配置里把参考文献相关的recipe设为默认。我前面给的settings.json里已经有了“xelatex bibtex xelatex*2”这个recipe你只需把latex-workshop.latex.recipes[0].name改成你自定义的名字或者把数组顺序调整成这个组合然后把它设为首选latex-workshop.latex.recipe.default: lastUsed这样你在写过程中第一次编译用带bibtex的recipe之后修改参考文献再保存就会自动执行完整链路。如果还是用的?编号八成是.bib文件名写错了或者某个\cite引用了一个不存在的key。检查这两个地方比重装软件靠谱。6.3 Git版本管理让改崩的论文有后悔药LaTeX是纯文本文件天生适合用Git做版本管理。我在写论文时每完成一个阶段就提交一次比如“初稿初版”“加实验2”“改引用格式”“导师修改版V1”这样就再也不怕改崩了。VS Code的源代码管理面板非常直观左侧可以看到每个文件的改动写论文时忘记保存的损失也能大幅降低。对了记得在.gitignore中忽略所有中间辅助文件*.aux *.log *.fls *.out *.fdb_latexmk *.synctex.gz *.bbl *.blg *.bcf *.run.xml *.toc这样仓库只保留.tex、.bib、图片等源文件别人克隆下来重新编译即可。7. 结语我的一些实在话整套环境配下来你可能会发现最花时间的不是装软件而是理解LaTeX“源文件 编译”的工作方式。很多用了十年Word的人第一次接触LaTeX会忍不住想找“保存为docx”按钮——没有这回事你的源文件就是纯文本PDF是编译产物但正是这种分离让论文内容有了极强的可移植性。以我个人经验来说配置环境更像是一个小门槛真正决定你能不能顺手的是是否愿意用一周时间每天写一小段LaTeX文档把常见命令变成肌肉记忆。不用急着背符号大全随用随查就行写得多了慢慢就熟了。等你能闭着眼睛写出图片环境和表格环境你就再也不想回Word去手动调整编号了。最后分享一个小技巧如果你投的是中文期刊直接去期刊官网下载官方LaTeX模板然后用xelatex编译一般都能顺利通过。如果模板太老编译失败先查模板里的注释看看有没有说明用什么编译器大概率是让你用pdflatex——这时候不要硬换xelatex而是按模板要求切换recipe学会适配比“哪个引擎好”更重要。写到这里这套环境已经从“入门”走到了“入坑再爬出来”的阶段。剩下的路就是多写多改了。如果你在配置过程中遇到这里没写到的奇怪问题回来再通读一遍排查表大概率能找到线索。毕竟LaTeX的报错虽然吓人但所有坑基本都被前人踩过了学会看日志你就已经超过80%的新手了。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门