简介

LaTeX 是一种流行的排版系统,广泛用于学术论文和科技文献的撰写。对于广大科研工作者(ps:也就是一线研究生啦,教授、大老板们谁还趴着写论文啊),无论哪个专业,总是要使用LaTeX写论文的,因其强大美观标准化的排版。常用的LaTex写作环境也就三种:传统的Texlive和自带的Studio编辑器、Overleaf网页版、MiKTex+VSCode插件。VSCode插件只是组成了前端编辑器,需要搭配后端LaTex编译器使用,可以使用笨重的Texlive,但是这里推荐使用MiKTex
这三种主流方法的优缺点对比如下表:

特性 Texlive Overleaf VSCode
轻量化
可扩展性
安装方便
稳定性
界面美观
个性化配置
跨平台
拼写检查
语法纠错
ChatGPT辅助写作
参考文献管理
数学符号辅助
多人协同 (结合git)

结果显而易见,除了安装配置不方便,MiKTex+VSCode的方案具备所有优势。这篇文章就帮您解决安装配置的问题。
就我最近的实践而言,结合最新的写作辅助插件Github Copilot,写作生产力可以提升3倍以上!

安装步骤

由于作者Frank已经从Windows转战Mac,所以本教程以MacOS系统为例进行介绍,但如果想迁移到Windows甚至Linux并不难,因为本文所用到的所有软件都是跨平台支持的,只需要根据各自系统特点进行简单适配(主要是文件路径),作者在介绍时也尽可能兼顾所有系统平台做出必要提示。

安装 LaTeX 发行版

前往MikTex官网下载系统对应版本的MikTex并安装。Windows和Mac直接点击相应的安装包一键安装即可,Linux需要根据命令行提示进行操作,这里不再赘述。

Windows

Mac

Linux

安装 VSCode 与插件

  1. 前往官网下载安装VSCode。如果你的Mac是M1芯片请下载Apple silicon,Intel芯片请选择Intel chip;也可以直接下载通用版Universal,两种芯片都兼容。

    VSCode下载页

  2. 安装号VSCode之后打开,点击左边栏图标进入插件市场,搜索以下插件依次安装。

插件名称 功能 备注
LaTeX Workshop LaTex编辑核心 必须
LaTeX language support 语法高亮, snippets 可选,建议
LaTeX Snippets snippets提示 可选,建议
LTeX 离线语法检查 可选,建议
LaTeX Table Helper LaTex表格辅助 可选,建议
Chinese (Simplified) vscode汉化 可选
Shades of Purple vscode漂亮护眼主题(深色) 可选,推荐
GitHub Copilot ChatGPT辅助coding和writing 可选,墙裂推荐!
  1. 插件启用

    • LaTex相关套件在你打开tex文件时会自动启动。
    • LTex会在tex文件中自动检查语法,在首次启用时会自动下载200~300MB的模型文件,如果网络不佳可能下载很慢或失败,这不影响使用,等到网络通畅后会继续下载。如一直失败,最好使用科学上网,也可以直接禁用插件。
    • 换主题:按下F1键打开命令面板,搜索框输入“color theme”,依次选择:Preferences: Color Theme \rightarrow Shades of Purple。
    • GitHub Copilot 只需要登录你的Github账号就可以了,如果需要高级功能或者不再能免费使用,可以获取github学生大礼包权益。目前作者是未注册学生权益的,但是Copilot能免费用。如有这方面需求,后期专门出一篇教程讲解,也可暂时参考这里

环境配置

接下来进行最关键的一步,配置VSCode的LaTex编译环境。首先需要对MikTex进行配置,保证可以正常安装和使用LaTex宏包;然后对VSCode的编译环境配置。

MikTex配置

  1. 打开安装好的MikTex Console,建议直接选择管理员模式进行后续操作。
    管理员模式
  2. 检查更新,进入更新页,点击“立即更新”将会更新所有LaTex宏包,完成之后按提示重启MikTex。
    检查更新
    立即更新
    如果检查更新或安装失败,可以选择更改检索源:点击“更改…”按钮,选择“远程宏包存储库”,下一步,选择一个距离较近的即可。但是一般建议保持默认项<互联网上的随机宏包存储库>。
    更改检索源
  3. 进入MikTex设置页,推荐打开自动安装缺失包的选项,因为MikTex不像Texlive那些安装了所有包,它是按需安装的,第一次编译时如果缺失包,它会自动下载安装,无需担心。
    自动安装缺失包

以上,MikTex的所有配置就完成了,它只负责对LaTex宏包的管理,后续编辑、编译操作无需打开它,VSCode会通过后台调用它的命令行工具完成pdf编译。

VSCode 配置

  1. 首先,打开VSCode,按F1打开命令面板,输入“settings.json”,选择打开用户设置的json文件。
    settings.json

  2. 在你的settings.json文件中按格式插入以下内容;如果你的settings文件是空的,则可以直接完全替换为以下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    {
    // 编译工具和命令
    "latex-workshop.latex.tools": [
    {
    "name": "pdflatex",
    "command": "pdflatex",
    "args": [
    "-synctex=1",
    "-interaction=nonstopmode",
    "-file-line-error",
    "%DOCFILE%"
    ]
    },
    {
    "name": "bibtex",
    "command": "bibtex",
    "args": [
    "%DOCFILE%"
    ]
    },
    {
    "name": "makeindex",
    "command": "makeindex",
    "args": [
    "%DOCFILE%"
    ]
    },
    {
    "name": "texify",
    "command": "texify",
    "args": [
    "--synctex",
    "--pdf",
    "--tex-option=\"-interaction=nonstopmode\"",
    "--tex-option=\"-file-line-error\"",
    "%DOCFILE%.tex"
    ]
    },
    {
    "name": "xelatex",
    "command": "xelatex",
    "args": [
    "-synctex=1",
    "-interaction=nonstopmode",
    "-file-line-error",
    "%DOCFILE%"
    ]
    }
    ],
    // 编译链
    "latex-workshop.latex.recipes": [
    {//放在最前面为默认编译方案, 适用于MikTex
    "name": "texify",
    "tools": [
    "texify"
    ]
    },
    {
    "name": "pdflatex",
    "tools": [
    "pdflatex"
    ]
    },
    {
    "name": "xelatex",
    "tools": [
    "xelatex"
    ]
    },
    {// 论文常用编译链,如需要可以放在第一位
    "name": "pdflatex -> bibtex -> pdflatex*2",
    "tools": [
    "pdflatex",
    "bibtex",
    "pdflatex",
    "pdflatex"
    ]
    },
    {
    "name": "xelatex -> bibtex -> xelatex*2",
    "tools": [
    "xelatex",
    "bibtex",
    "xelatex",
    "xelatex"
    ]
    },
    {
    "name": "pdflatex -> makeindex",
    "tools": [
    "pdflatex",
    "makeindex",
    "bibtex"
    ]
    },
    {
    "name": "xelatex -> makeindex",
    "tools": [
    "xelatex",
    "makeindex",
    "bibtex"
    ]
    }
    ],
    // 自动清理
    "latex-workshop.latex.autoClean.run": "onBuilt",
    //从使用的包中自动补全命令和环境
    "latex-workshop.intellisense.package.enabled": true,
    "latex-workshop.intellisense.file.base": "both",
    "latex-workshop.intellisense.unimathsymbols.enabled": true,
    "latex-workshop.intellisense.update.aggressive.enabled": true,
    // 设置是否自动编译(onSave/never): 保存时编译
    "latex-workshop.latex.autoBuild.run": "onSave",
    //编译出错时设置是否弹出气泡设置
    "latex-workshop.message.error.show": true,
    "latex-workshop.message.warning.show": false,
    "latex-utilities.message.update.show": false,
    // pdf查看方式(tab/external): 内置tab,不建议使用别的文章推荐的SumatraPDF
    "latex-workshop.view.pdf.viewer": "tab",
    // 需要自动清理的辅助文件
    "latex-workshop.latex.clean.fileTypes": [
    "*.aux",
    "*.brf",
    "*.blg",
    "*.idx",
    "*.ind",
    "*.lof",
    "*.lot",
    "*.out",
    "*.toc",
    "*.acn",
    "*.acr",
    "*.alg",
    "*.glg",
    "*.glo",
    "*.gls",
    "*.ist",
    "*.fls",
    "*.log",
    "*.fdb_latexmk",
    "*.bbl", // for arXiv submission,如果需要提交arxiv则注释掉,保留.bbl文件
    // "*.gz" // for forward search,tex->pdf 前向跳转、搜索依赖的文件
    ],
    "ltex.enabled": true, // 启用插件
    "ltex.language": "en-US", // 设置语言,这里是English
    }

    关于以上json配置,必要的解释都写在注释中了,可以根据需要修改。需要注意的事项有:

    • 可以更改的代码为,将编译方式: pdflatex、 xelatex 和 latexmk 中的%DOC更改为%DOCFILE。%DOCFILE表明编译器访问没有扩展名的根文件名,而%DOC表明编译器访问的是没有扩展名的根文件完整路径。这就意味着,使用%DOCFILE可以将文件所在路径设置为中文,但笔者不建议这么做,因为毕竟涉及到代码,当其余编译器引用时该 tex 文件仍需要根文件完整路径,且需要为英文路径。更多详情可以访问 github 中 LaTeX-Workshop 的 Wiki
    • 可以根据使用习惯和场景自行调整编译链的顺序。
    • 许多教程都教大家使用SumatraPDF,作者也使用过,但是感觉很鸡肋,从VSCode编辑器再跳转到外面查看很麻烦,而且不利于跨平台使用,SumatraPDF的路径在不同系统下也需要额外配置,前向、后向跳转也需要额外配置。以前是很多人没发现LaTeX-Workshop 其实自带前向、后向跳转才转而用 SumatraPDF。如果正确配置了以上json,使用内置tab查看pdf也可以自由跳转。使用方式见下节。

使用说明

  1. 打开VSCode新建一个测试文件test.tex,并写入以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    \documentclass[12pt,a4paper]{article}
    \usepackage{amsmath, amsthm, amssymb, graphicx}
    \title{Hello \LaTeX}
    \author{Frank}

    \begin{document}
    \maketitle
    This is a test file.
    \end{document}
  2. 当打开*.tex文件时,VSCode左功能栏会自动显示LaTex-Workshop功能区、数学符号快捷输入区等。
    LaTeX-Workshop功能展示
    在功能区菜单中可以选择编译方式(pdflatex、xelatex等),之后保存会自动使用上次选用的方式编译,无需再次选择。使用快捷键+S保存文件即可自动编译。点击“View LaTeX PDF”会分离出右侧tab显示编译好的pdf文件。还可以清理辅助文件、整理参考文献、导航跳转等。
    编译展示

  3. 对于MacOS,tex \rightarrow pdf 跳转快捷键:++J,pdf \rightarrow tex 快捷键:鼠标左键单击+
    Windows 或 Linux 可以在VSCode左下角设置\rightarrow键盘快捷键中查看:
    键盘快捷键

  4. 一般的论文投稿都是使用bibtex组织参考文献,将编译链设置为“pdflatex->bixtex->pdflatex*2”即可。如果使用中文则选择对应的xelatex编译工具。中文编译在Mac上会有很多奇怪的问题,都写英文论文的咳盐工作者了,谁还自找麻烦用中文呢是吧?另外,文件路径最好也不要用中文。

  5. Github Copilot 是Microsoft的产品,当然获得了ChatGPT加持,所以在代码、文字生成方面时世界无敌的。可以看到当右下角的Copilot图标转圈圈完成之后,就会为你生成文字提示,按Tab键即可插入。甚至在写论文、公式、引用参考文献、引用表格数据时,会根据上下文帮你生成citation、表格分析等等。开始欢乐地造论文吧!
    Copilot文字生成

以上就是全部内容,如配置过程中遇到问题随时联系Frank,也可以在下面评论留言,乐意帮您解决~

参考链接

  1. Github学生认证及学生包保姆级申请指南 - 知乎
  2. texlive2023+vscode安装与配置(简洁版)
  3. Visual Studio Code (vscode)配置LaTeX