跳过正文

首页 / 文章

【LaTeX】Vs code下载与配置

VS Code LaTeX 与 TeX Live 安装全指南(最新):覆盖 Windows、macOS、Linux;一键配置 LaTeX Workshop,镜像加速、tlmgr 修复、XeLaTeX 中文直出、SyncTeX 预览无报错;附 settings.json 实操与验证,立即上手。

她笑中藏泪花·
··3060 字·15 分钟

TeX Live 下载与安装
#

若网络情况不理想,可以在网盘中下载我上传的资源:

1
2
3
4
我用夸克网盘给你分享了「tex live」,点击链接或复制整段内容,打开「夸克APP」即可获取。
/~33653905Lk~:/
链接:https://pan.quark.cn/s/936429147d2c?pwd=P8dX
提取码:P8dX

方法一:下载安装包
#

访问 TeX Live 官网。各平台对应的安装程序如下:

  • Windows: install-tl-windows.exe (网络安装器)
  • Linux: install-tl-unx.tar.gz (解压后运行 install-tl 脚本)
  • macOS: MacTeX-年份.pkg (完整的 MacTeX 发行版)

方法二:下载iso镜像
#

官方下载页(ISO):https://tug.org/texlive/acquire-iso.html → 点击downloadfromanearbyCTANmirror → 下载 texlive.iso

镜像源
#

下列是一些国内镜像源,点开后点击 systemsTeX Live 进行下载,Source/ 对应方法一,Images/ 对应方法二:

国内 CTAN 镜像站点列表:


(2) 运行安装程序(Windows)
#

无论你通过方法一(网络安装包)还是方法二(ISO 镜像)获取了安装程序,Windows 上的安装步骤是相似的。

  1. 启动安装器

    • ISO/镜像: 下载完成后,双击 ISO 或右键装载为虚拟光驱。在根目录找到 install-tl-windows.bat
    • 网络安装包: 直接运行下载的 install-tl-windows.exe
    • 重要:请右键点击安装程序,选择“以管理员身份运行”,以确保其有权限修改系统 PATH 环境变量。
  2. 更换镜像源(可选,但推荐)

    • 如果你运行的是 .bat 启动的完整安装器(Perl/Tk 界面),首次启动会弹出一个临时命令窗口和加载 UI,稍候片刻进入主界面。
    • 若是 .exe 的界面,可以在下图界面更换镜像源,点击具体镜像 Asia → China 然后选一个离你近的;如果不知道哪个好,可以选清华 tuna 镜像。

image.png

  1. 配置安装选项:

    进入主安装界面后,你需要关注几个基本更改:

    • 安装路径:默认路径为 C:\texlive\2025。如果 C 盘空间紧张,可以修改到其他盘符,例如 D:\texlive\2025。路径中避免使用中文或空格

    image.png

    • 前端组件:默认会安装 TeXworks 编辑器。如果你计划使用 VS Code,可以在组件页中取消勾选 TeXworks front end
    • PATH:新版本的 Windows 安装器默认会将 TeX Live 的 bin 目录添加到系统 PATH。请确保此项已勾选。如果安装时忘记勾选,后续也可以手动运行 tlmgr path add 命令来修复(详见下文“验证与回滚”)。
  2. 个性化安装(高级)

    • 不熟悉时不要随意更改“目录 (Directories)”和“选项 (Options)”中的高级设置。
    • 如果你想节省磁盘空间,可以点击“选择 (Selections)”下的“定制 (Customize)”,在“语言 (Languages)”标签页中,只保留“中文 (Chinese)”和“英美英文 (US and UK English)”这两个语言集合。

    image.png

  3. 开始安装:

    点击 安装(Install) 按钮开始安装。这个过程会从镜像源下载大量宏包,根据你的网络速度和磁盘性能,耗时可能较长(30分钟到数小时不等)。


(3) 验证是否安装成功
#

Windows(PowerShell)
#

1
2
3
4
5
6
7
8
# 1) 验证 XeLaTeX 引擎版本
xelatex -v

# 2) 验证 TeX Live 管理器版本
tlmgr --version

# 3) 确认 PATH 指向当前年份的 bin 目录
where xelatex

image.png

  • 更换/修复 PATH(如未写入或曾取消) TeX Live 官方提供 tlmgr path 子命令用于添加/移除系统可执行路径映射(Windows 会创建合适的“前端链接”)。示例:
1
2
3
tlmgr path add
# 如需撤销:
tlmgr path remove

该子命令行为以《tlmgr 手册》为准。

  • 回滚包版本(出现包更新问题时) tlmgr 默认保留一次备份。可用:
1
2
3
4
# 回滚所有包到最近备份
tlmgr restore --all
# 或针对单包:
tlmgr restore <pkg> <revision>

macOS / Linux(bash)
#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 1) 引擎版本
xelatex -v

# 2) 管理器版本
tlmgr --version

# 3) 确认 PATH(找不到命令时)
which xelatex
# 如 PATH 有误,可用:
tlmgr path add

(4)Windows 手动配置环境变量(必做!!!)
#

警告

注意:如果在 VS Code 中遇到无法预览 PDF 或编译失败等问题,通常是由于环境变量未正确配置导致的。请务必按照以下步骤检查并手动添加。

  1. 打开环境变量设置 右键点击桌面上的 此电脑(或在资源管理器左侧栏右键),选择 属性 > 高级系统设置 > 环境变量。 在下方的 系统变量 列表中找到 Path,双击进入编辑界面。

    win环境变量位置

  2. 验证并添加路径 检查列表中是否已包含 TeX Live 的安装路径。

    • 如果路径缺失或错误:请点击右侧的 新建 按钮,输入正确的路径。
    • 路径格式要求:必须精确到 bin\windows 目录。
    • 示例D:\texlive\2024\bin\windows (请根据您的实际安装盘符和版本号修改)。
      编辑环境变量

VS Codecode 中使用 LaTeX
#

安装 TeX Live 只是提供了底层的编译引擎和宏包,我们还需要一个现代化的编辑器来编写 .tex 文稿。VS Code 配合 LaTeX Workshop 扩展是目前最高效的组合之一。

安装 VS Code 与 LaTeX Workshop
#

  1. 下载 VS Code

  2. 安装 LaTeX Workshop 扩展:

    打开 VS Code,在左侧菜单栏中打开“扩展”视图,搜索并安装 LaTeX Workshop。

提示:安装完成后,只有当你打开或新建一个 .tex 文件时,左侧菜单栏才会出现 TEX 图标(LaTeX Workshop 的专属面板)。

image.png

关键配置 (settings.json)
#

为了获得最佳体验(尤其是中文支持和整洁的项目目录),我们需要对 LaTeX Workshop 进行配置。

打开 settings.json

你有两种方式打开用户设置文件:

  1. UI 界面:通过 File → Preferences → Settings 打开设置界面,然后点击右上角的“打开 settings.json”图标。
  2. 命令面板:使用 Ctrl+Shift+P (Windows/Linux) 或 Cmd+Shift+P (macOS) 打开命令面板,输入并选择 Preferences: Open User Settings (JSON)

image.png

推荐配置 (基于 XeLaTeX):

settings.json 追加(或合并):

配置文件
  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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
{
  // ===================================================================
  // 一、 预览、同步与界面
  // ===================================================================
  // 本区域设置VS Code中PDF预览窗口的行为、反向同步(PDF→源码)以及与编辑器的集成方式。

  // 【预览】: 在哪个窗口打开编译好的 PDF
  // "tab": 推荐。在 VS Code 编辑器区域内新开一个标签页显示 PDF,体验最流畅。
  // "browser": 使用默认的系统浏览器打开 PDF(会脱离 VS Code 窗口)。
  // "external": 使用您设置的外部 PDF 阅读器(如 SumatraPDF, Skim)。
  // "external" 方式可以配合 "latex-workshop.view.pdf.external.viewer.command" 来指定具体程序。
  "latex-workshop.view.pdf.viewer": "tab",

  // 【同步】: PDF → 源码 (SyncTeX 反向同步)
  // 设置如何从预览的 PDF 跳转回 .tex 源码的对应位置。
  // "double-click": 推荐。在 PDF 预览上双击,即可跳回源码。
  // "ctrl-click": 按住 Ctrl (Cmd) 并单击。如果您希望双击用于放大等其他功能,可选此项。
  "latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",

  // 【同步】: 源码 → PDF (SyncTeX 正向同步)
  // `true`: 编译完成后,PDF 预览窗口会自动滚动到当前 .tex 光标所在的源码位置。
  // 这对于大型文档,只想查看刚修改部分的效果时非常有用。
  "latex-workshop.synctex.afterBuild.enabled": true,

  // 【预览】: PDF 默认缩放级别
  // "page-width": 推荐。PDF 宽度贴合预览窗口宽度,上下滚动查看。
  // "page-fit": 页面整体缩放以适应窗口大小(可能留有左右白边)。
  // "auto": 自动缩放。
  // 数值: 如 1.5 (代表 150%) 或 150 (也代表 150%)。
  "latex-workshop.view.pdf.zoom": "page-width",

  // 【预览】: PDF 滚动方式
  // 0: 垂直滚动(标准,推荐)。
  // 1: 水平滚动。
  // 2: 环绕滚动(像 Word 一样页面并排,但垂直滚动)。
  // 3: 逐页滚动(翻页,而不是平滑滚动)。
  "latex-workshop.view.pdf.scrollMode": 0,

  // 【预览】: PDF 页面排版
  // 0: 不并排(单页显示,推荐)。
  // 1: 奇数开本(从奇数页开始,模拟书本打开,右侧是第1页)。
  // 2: 偶数开本(从偶数页开始,模拟书本打开,左侧是第1页)。
  "latex-workshop.view.pdf.spreadMode": 0,

  // 【界面】: PDF 预览标签页的位置
  // "right": 推荐。自动在编辑器的右侧分栏打开 PDF,实现左源码、右PDF的经典布局。
  // "active": 在当前活动的分栏打开(可能会覆盖你的 .tex 文件)。
  // "primary": 强制在最左侧(主)分栏打开。
  "latex-workshop.view.pdf.tab.editorGroup": "right",

  // 【预览】: PDF 拖拽
  // `false`: 推荐。关闭“手形工具”拖拽 PDF,使用鼠标滚轮或触控板滚动。
  // `true`: 启用手形工具,按住鼠标左键拖动页面。
  "latex-workshop.view.pdf.hand": false,

  // 【预览】: PDF 页面裁切
  // `0`: 不裁切。
  // 设置一个正整数(像素)可以裁切 PDF 四周的空白边缘,使内容区域更大。
  "latex-workshop.view.pdf.trim": 0,

  // 【预览】: PDF 刷新过渡效果
  // "fade": 推荐。重新加载 PDF 时使用淡入淡出,视觉上更平滑,减少白屏闪烁。
  // "none": 立即切换,可能会闪烁。
  "latex-workshop.view.pdf.reload.transition": "fade",

  // 【预览】: 暗色模式反色(按需开启)
  // 启用此功能可在暗色主题下将 PDF(黑字白底)反色为(白字黑底),以保护眼睛。
  // "auto": 仅在 VS Code 为暗色主题时启用反色。
  // "always": 总是反色。
  // "compat": 尝试一种兼容性反色算法。
  // "never": 从不反色。
  // "latex-workshop.view.pdf.invertMode.enabled": "auto",

  // 反色强度(0到1)。0.9 是一个比较柔和的设置,不会黑得刺眼。
  // "latex-workshop.view.pdf.invert": 0.9,

  // 【界面】: 在 .tex 文件右键菜单中显示 LaTeX Workshop 命令(如构建、查看等)
  "latex-workshop.showContextMenu": true,

  // 【界面】: 智能感知(IntelliSense)
  // `true`: 启用包感知。插件会读取你的 `\usepackage{...}`,并仅为你已加载的包提供命令补全。
  "latex-workshop.intellisense.package.enabled": true,

  // 【界面】:详细的报错
 "latex-workshop.message.error.show": true,
"latex-workshop.message.warning.show": true,
"latex-workshop.message.information.show": true,

  // ===================================================================
  // 二、 输出与构建策略
  // ===================================================================
  // 本区域定义编译产物(.log, .aux, .pdf)的存放位置和自动编译的触发时机。

  // 【输出】: 统一输出目录
  // `%DIR%/out`: 强烈推荐!
  // %DIR% 是指你主 .tex 文件(Root File)所在的目录。
  // 此设置将所有编译生成的中间文件 (.aux, .log, .bcf, .toc ...) 和最终的 .pdf
  // 全部放入主 .tex 文件同级的 `out` 目录中。
  // 这能让你的项目根目录保持极度整洁。
  "latex-workshop.latex.outDir": "%DIR%/out",

  // 【构建】: 构建策略优先级
  // `true`: 强制使用下面的 "配方(Recipes)"。
  // 即使你的 .tex 文件中写了 "Magic Comments" (如 `%!TEX program = pdflatex`),
  // 也会被忽略,从而确保始终使用你在 VS Code 中选定的构建配方,保持一致性。
  "latex-workshop.latex.build.forceRecipeUsage": true,

  // 【构建】: 自动构建触发时机
  // "onFileChange": 推荐。只要你修改了任何依赖文件(.tex, .bib, .cls, .sty 等)并稍作停顿,
  // 就会自动触发编译。预览刷新最及时,真正实现“所见即所得”。
  // "onSave": 仅在保存文件时才触发编译。相对稳妥,资源占用较低。
  // "never": 从不自动编译,必须手动点击“Build”按钮或使用快捷键。
  "latex-workshop.latex.autoBuild.run": "onFileChange",

  // 【构建】: PDF 监视延迟
  // 当 PDF 文件发生变化时(例如编译生成了新 PDF),等待 400 毫秒后再通知 VS Code 刷新。
  // 这可以防止因 PDF 写入尚未完成而导致的预览错误。
  // 如果你的项目非常大,或者放在同步网盘(如 OneDrive, Dropbox)上,导致写入延迟,
  // 可以适当调高此数值,例如 800 或 1000。
  "latex-workshop.latex.watch.pdf.delay": 400,

  // 【构建】: 文件监视轮询(按需开启)
  // `false`: 默认。使用系统提供的文件事件监听。
  // `true`: 启用轮询。即插件会每隔一段时间主动检查文件是否变化。
  // 仅在特定环境(如 WSL2 早期版本、网络驱动器、某些 Docker 容器)下,
  // 默认的文件监听(onFileChange)失效时,才需要开启此项。开启后 CPU 占用会略高。
  // "latex-workshop.latex.watch.usePolling": true,


  // ===================================================================
  // 三、 Root 识别(多文件工程)
  // ===================================================================
  // 本区域帮助插件在大型项目中(如书籍、论文)正确找到“主” .tex 文件。

  // 【Root】: `subfiles` 包支持
  // `true`: 启用。如果你使用了 `subfiles` 包来管理子文档(如 `chapter1.tex`),
  // 当你打开 `chapter1.tex` 并点击编译时,插件能智能地将其作为独立文档编译,
  // 而不是去编译整个项目的主文件。
  "latex-workshop.latex.rootFile.useSubFile": true,

  // 【Root】: 自动查找 Root 文件
  // `true`: 推荐。当打开一个 .tex 文件时,插件会根据下面的 `include` 和 `exclude` 规则
  // 自动向上查找主文件(Root File),而不会弹窗询问“请选择主文档”。
  "latex-workshop.latex.rootFile.doNotPrompt": true,

  // 【Root】: 搜索 Root 文件的包含规则
  // 告诉插件,只有匹配 `**/*.tex` (任意目录下的 .tex 文件) 才可能是主文件。
  "latex-workshop.latex.search.rootFiles.include": [
    "**/*.tex"
  ],

  // 【Root】: 搜索 Root 文件的排除规则
  // 告诉插件在查找主文件时,忽略这些目录。
  // `out/**`: 必须排除!防止插件误把 `out` 目录中的 .tex 文件(如果有)当成主文件。
  // 其他的是常见的版本控制、依赖和历史记录目录。
  "latex-workshop.latex.search.rootFiles.exclude": [
    "**/.git/**",
    "**/node_modules/**",
    "**/.history/**",
    "**/.vscode/**",
    "**/out/**"
  ],


  // ===================================================================
  // 四、 工具链(Tools)定义
  // ===================================================================
  // 本区域定义了可以调用的 *单个* 命令行工具。
  // 它们是构成第五部分“配方(Recipes)”的基础模块。
  //
  // 占位符说明:
  // %DIR%:主 .tex 所在目录 (绝对路径)
  // %DOC%:主 .tex 的完整路径 (不含 .tex 扩展名)
  // %DOCFILE%:主 .tex 的文件名 (不含 .tex 扩展名)
  // %OUTDIR%:上面 "latex-workshop.latex.outDir" 定义的输出目录 (例如 %DIR%/out)
  "latex-workshop.latex.tools": [
    // ---- 1. latexmk (推荐的构建方式) ----
    // latexmk 是一个 Perl 脚本,它能自动处理编译所需的一切:
    // 1. 自动检测是否需要多次编译(以确保引用、目录正确)。
    // 2. 自动检测是否需要调用 bibtex/biber (处理文献)。
    // 3. 自动检测是否需要调用 makeindex/makeglossaries (处理索引/术语)。
    {
      "name": "latexmk (xelatex)", // xelatex:对中文(CJK)和现代字体(OTF/TTF)支持最好
      "command": "latexmk",
      "args": [
        "-synctex=1",                 // 生成 SyncTeX 文件,用于正反向同步
        "-interaction=nonstopmode",   // 编译出错时不要停下(而是继续尝试编译),这在自动构建时(onFileChange)尤其重要
        "-file-line-error",           // 在日志中输出 "file:line:error" 格式,方便 VS Code 解析并跳转到错误
        "-xelatex",                   // 指定后端引擎为 xelatex
        "-outdir=%OUTDIR%",           // 【关键】告诉 latexmk 将 *所有* 输出文件(.pdf, .log, .aux...)都放入 out 目录
        "%DOC%"                       // 要编译的主文档(无扩展名)
      ]
    },

    {
      "name": "latexmk (pdflatex)", // pdflatex:传统引擎,编译速度快,但对中文和新字体支持不佳
      "command": "latexmk",
      "args": [
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "-pdf",                       // 指定后端引擎为 pdflatex
        "-outdir=%OUTDIR%",
        "%DOC%"
      ]
    },

    {
      "name": "latexmk (lualatex)", // lualatex:现代引擎,Unicode支持好,并集成了 Lua 脚本能力
      "command": "latexmk",
      "args": [
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "-lualatex",                  // 指定后端引擎为 lualatex
        "-outdir=%OUTDIR%",
        "%DOC%"
      ]
    },

    {
      // 【特殊】: 当你需要使用 minted (代码高亮) 或 gnuplottex 等需要调用外部程序的包时,
      // 必须开启 -shell-escape 选项。
      // 警告:这允许 .tex 文件执行任意 shell 命令,请确保你的文档来源可靠。
      "name": "latexmk (xelatex + shell-escape)",
      "command": "latexmk",
      "args": [
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "-xelatex",
        "-shell-escape",              // 【关键】允许执行外部命令 (如 pygmentize)
        "-outdir=%OUTDIR%",
        "%DOC%"
      ]
    },

    // ---- 2. 单发引擎 (用于调试) ----
    // 这些工具 *只编译一次*。它们无法自动处理文献或复杂的交叉引用。
    // 主要用于快速检查单次编译的日志,或者作为“配方”中的一个步骤。
    // 注意:它们的输出目录参数是 -output-directory=... (与 latexmk 的 -outdir=... 不同)
    {
      "name": "xelatex",
      "command": "xelatex",
      "args": [
        "-synctex=1",
         "-interaction=nonstopmode",
        "-file-line-error",
        "-output-directory=%OUTDIR%", // 【关键】注意参数名不同
        "%DOC%"
      ]
    },

    {
      "name": "pdflatex",
      "command": "pdflatex",
      "args": [
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "-output-directory=%OUTDIR%",
        "%DOC%"
      ]
    },

    {
      "name": "lualatex",
      "command": "lualatex",
      "args": [
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "-output-directory=%OUTDIR%",
        "%DOC%"
      ]
    },

    // ---- 3. 辅助工具 (文献/索引/术语) ----
    // 这是使用 `outDir` 时 *必须* 的设置!
    // 因为 xelatex/pdflatex 把 .aux, .glo, .idx 等辅助文件生成在了 %OUTDIR% (即 out 目录) 中。
    // 我们必须在 "args" 中明确告诉 biber/bibtex/makeglossaries 
    // 去 out 目录中查找辅助文件,否则它们在根目录将找不到。
    {
      "name": "biber",       // 用于 BibLaTeX
      "command": "biber",
      "args": [
        // 【关键】Biber 需要读取 %OUTDIR% 中的 .bcf 文件
        // 参数 %OUTDIR%/%DOCFILE% 会被 Biber 自动识别为 %OUTDIR%/%DOCFILE%.bcf
        "%OUTDIR%/%DOCFILE%"
      ]
    },

    {
      "name": "bibtex",      // 用于 BibTeX (较老)
      "command": "bibtex",
      "args": [
        // 【关键】BibTeX 需要读取 %OUTDIR% 中的 .aux 文件
        "%OUTDIR%/%DOCFILE%"
      ]
    },

    {
      "name": "makeglossaries", // 用于 glossaries 包(术语表)
      "command": "makeglossaries",
      "args": [
        // 【关键】makeglossaries 需要读取 %OUTDIR% 中的 .glo 或 .acn 文件
        "%OUTDIR%/%DOCFILE%"
      ]
    },

    {
      "name": "makeindex",   // 用于 makeidx 包(索引)
      "command": "makeindex",
      "args": [
        // 【关键】makeindex 需要读取 %OUTDIR% 中的 .idx 文件
        "%OUTDIR%/%DOCFILE%"
      ]
    },

    // ---- 4. 备选方案:tectonic (现代引擎) ----
    // Tectonic 是一个集成的、现代的 TeX 引擎,它会自动下载缺失的包(类似 Cargo/NPM)。
    // 它不依赖 latexmk,自己就能处理多轮编译和 BibTeX。
    // 适合用于需要“零配置、快速出 PDF”的场景。
    {
      "name": "tectonic (basic)",
      "command": "tectonic",
      "args": [
        "--synctex",
        "--keep-logs",
        "--keep-intermediates",
        "--outdir",     // Tectonic 的输出目录参数
        "%OUTDIR%",
        "%DOC%.tex"     // Tectonic 需要带 .tex 扩展名
      ]
    },

    // ---- 5. 备选方案:arara ----
    // arara 是一个声明式的构建工具。你需要在 .tex 文件的头部
    // 用 "magic comments" 来指定构建规则 (e.g., % arara: xelatex)。
    // arara 会读取这些指令并执行。
    {
      "name": "arara",
      "command": "arara",
      "args": [
        "--verbose",
        "--log",
        "--working-directory", // 告诉 arara 在哪个目录执行
        "%DIR%",
        "%DOC%.tex"          // 告诉 arara 要处理哪个文件
      ]
    }
  ],

  // ===================================================================
  // 五、 配方(Recipes)组合
  // ===================================================================
  // 本区域将上面定义的“工具(Tools)”组合成可执行的“配方(Recipes)”。
  // 这才是我们日常在 VS Code 左侧 LaTeX 面板中点击“Build”时真正选择的东西。
  "latex-workshop.latex.recipes": [
    // ---- 推荐:使用 latexmk 的配方 (最省心) ----
    // 它们都只包含一个工具,因为 latexmk 已经“全自动”处理了所有事情。
    {
      "name": "latexmk: xelatex(推荐)",
      "tools": [
        "latexmk (xelatex)" // 对应上面 Tools 定义的 name
      ]
    },

    {
      "name": "latexmk: pdflatex",
      "tools": [
        "latexmk (pdflatex)"
      ]
    },

    {
      "name": "latexmk: lualatex",
      "tools": [
        "latexmk (lualatex)"
      ]
    },

    // ---- 特殊场景:需要 shell-escape (例如 minted) ----
    {
      "name": "latexmk: xelatex(shell-escape)",
      "tools": [
        "latexmk (xelatex + shell-escape)"
      ]
    },

    // ---- 多步配方示例:术语表 (当 latexmk 无法自动处理时) ----
    // 这是一个多步骤配方,它演示了“工具”的组合:
    // 1. 运行 latexmk (xelatex) 第一次,生成 .glo 等文件。
    // 2. 运行 makeglossaries 处理 .glo 文件。
    // 3. 再次运行 latexmk (xelatex) 以包含术语表。
    // 注意:如果你的 latexmk 配置正确(有 .latexmkrc),这一步通常不是必需的,
    // 因为 "latexmk (xelatex)" 配方自己就能处理。这只是一个示例。
    {
      "name": "latexmk → makeglossaries → latexmk",
      "tools": [
        "latexmk (xelatex)",
        "makeglossaries",
        "latexmk (xelatex)"
      ]
    },

    // ---- 多步配方示例:索引 (当 latexmk 无法自动处理时) ----
    {
      "name": "latexmk → makeindex → latexmk",
      "tools": [
        "latexmk (xelatex)",
        "makeindex",
        "latexmk (xelatex)"
      ]
    },

    // ---- 手动配方 (用于演示或调试) ----
    // 模拟不使用 latexmk 时的“手动四步法”:
    // 1. xelatex (生成 .aux)
    // 2. biber (读取 .aux,生成 .bbl)
    // 3. xelatex (读取 .bbl,插入文献引用)
    // 4. xelatex (再次运行,确保页码和引用跳转正确)
    {
      "name": "手动:xelatex → biber → xelatex×2",
      "tools": [
        "xelatex",
        "biber",
        "xelatex",
        "xelatex"
      ]
    },

    {
      "name": "手动:pdflatex → bibtex → pdflatex×2",
      "tools": [
        "pdflatex",
        "bibtex",
        "pdflatex",
        "pdflatex"
      ]
    },

    // ---- 单次编译配方 (用于极速调试) ----
    // 仅运行一次引擎,用于查看日志、定位语法错误。
    {
      "name": "单次:xelatex",
      "tools": [
        "xelatex"
      ]
    },

    {
      "name": "单次:pdflatex",
      "tools": [
        "pdflatex"
      ]
    },

    {
      "name": "单次:lualatex",
      "tools": [
        "lualatex"
      ]
    },

    // ---- 备选引擎配方 ----
    {
      "name": "tectonic(快速出活)",
      "tools": [
        "tectonic (basic)"
      ]
    },

    {
      "name": "arara(按文档头部规则)",
      "tools": [
        "arara"
      ]
    }
  ],

  // 【构建】: 默认配方
  // "lastUsed": 推荐。VS Code 会自动记住你上次用于这个项目的配方。
  // "first": 使用上面 `recipes` 列表中的第一个(即 "latexmk: xelatex(推荐)")。
  // 你也可以强制指定一个 name,例如: "latexmk: xelatex(推荐)"
  "latex-workshop.latex.recipe.default": "lastUsed",


  // ===================================================================
  // 六、 自动清理(Clean)
  // ===================================================================
  // 本区域设置如何清理因 `outDir` 而产生在 `out` 目录中的编译中间文件。

  // 【清理】: 自动清理时机
  // "onBuilt": 推荐。每次 *成功* 编译后,自动清理中间文件(.log, .aux 等)。
  //            这能确保 `out` 目录始终只包含最新的 .pdf 和 .synctex.gz。
  // "onFailed": 编译失败时才清理。
  // "never": 从不自动清理,需要手动执行 "Clean up auxiliary files" 命令。
  "latex-workshop.latex.autoClean.run": "onBuilt",

  // 【清理】: 清理方法
  // "glob": 使用下面的 `fileTypes` 列表来匹配要删除的文件。
  // "latexmk": 使用 `latexmk -c` 命令来清理(如果使用 latexmk,这也是个好选择)。
  "latex-workshop.latex.clean.method": "glob",

  // 【清理】: 要清理的文件类型(Glob 模式)
  // 这是一个非常全面的清理列表,覆盖了 LaTeX、BibTeX/Biber、MakeIndex、
  // Glossaries、Beamer 等生成的几乎所有中间文件。
  // 注意:这里的文件路径是相对于 `outDir` (即 `out` 目录) 的。
  "latex-workshop.latex.clean.fileTypes": [
    // LaTeX 基础
    "*.aux",      // 辅助文件(交叉引用)
    "*.log",      // 日志文件
    "*.toc",      // 目录
    "*.lof",      // 图表目录
    "*.lot",      // 表格目录
    "*.out",      // 大纲 (hyperrref)
    "*.fls",      // (latexmk) 使用的文件列表
    "*.fdb_latexmk", // (latexmk) 数据库
    "*.synctex(busy)", // SyncTeX 锁定文件
    "*.synctex.gz(busy)",
    // 参考文献 (BibTeX/Biber)
    "*.bbl",      // 编译后的文献列表
    "*.bcf",      // (biber) 控制文件
    "*.blg",      // 文献编译日志
    "*.run.xml",  // (biber)
    // 索引 (MakeIndex)
    "*.idx",      // 索引原始数据
    "*.ind",      // 编译后的索引
    "*.ilg",      // 索引编译日志
    "*.ist",      // 索引样式
    // 术语表 (Glossaries)
    "*.acn",
    "*.acr",
    "*.alg",
    "*.glg",
    "*.glo",
    "*.gls",
    // 幻灯片/演示 (Beamer)
    "*.snm",      // (beamer)
    "*.nav",      // (beamer)
    "*.vrb",      // (beamer)
    // 其他引擎中间件
    "*.xdv",      // (xelatex)
    // minted 临时目录
    "_minted-*/**", // 匹配 _minted-XXX 目录下的所有文件
    "_minted-*/",   // 匹配 _minted-XXX 目录本身
    // 额外常见
    "*.auxlock"   // 锁定文件
  ],


  // ===================================================================
  // 七、 语法检查(Linting)
  // ===================================================================
  // 本区域使用 ChkTeX 工具实时检查你的 .tex 源码,发现潜在的排版问题。

  // 【检查】: 启用 ChkTeX
  // `true`: 启用。你必须已通过 TeX Live (tlmgr install chktex) 或 MiKTeX
  // 或包管理器 (brew install chktex) 安装了 chktex 可执行程序。
  "latex-workshop.linting.chktex.enabled": true,

  // 【检查】: 启用 lacheck(另一个较老的检查工具,一般不需要)
  "latex-workshop.linting.lacheck.enabled": false,

  // 【检查】: 触发时机
  // "onType": 推荐。在你输入时实时检查,问题会立刻出现在“问题”面板。
  // "onSave": 保存时才检查。
  "latex-workshop.linting.run": "onType",

  // 【检查】: ChkTeX 参数
  // (可选)你可以在项目根目录放一个 `.chktexrc` 文件来定义检查规则。
  // 下面的参数是示例,例如 `-q` (安静模式), `-I0` (不显示欢迎信息)。
  // "latex-workshop.linting.chktex.exec.args": ["-q", "-I0"],


  // ===================================================================
  // 八、 格式化(Formatting)
  // ===================================================================
  // 本区域设置如何使用 `latexindent` 工具来自动格式化(排版)你的 .tex 源码。

  // 【格式化】: 使用 latexindent
  // 必须安装 `latexindent`。它是一个 Perl 脚本,通常随 TeX Live 完整版附带。
  // Windows 用户可能需要单独安装 Perl (如 Strawberry Perl)。
  "latex-workshop.formatting.latex": "latexindent",

  // 【格式化】: latexindent 路径
  // "latexindent": 默认,假设它在你的系统 PATH 中。
  // 如果 VS Code 找不到,请改为绝对路径,例如:
  // "C:/texlive/2024/bin/windows/latexindent.exe"
  "latex-workshop.formatting.latexindent.path": "latexindent",

  // 【格式化】: latexindent 参数
  // 这是最关键的设置:
  "latex-workshop.formatting.latexindent.args": [
    "-c",                     // 告诉 latexindent 加载配置文件
    "%DIR%/",                 // 【关键】指定查找配置文件的目录为项目根目录 (%DIR%)。
                              // 这样 latexindent 就会自动加载你项目中的 `.latexindent.yaml`
                              // 或 `latexindent.yaml` 来实现项目级自定义格式。
    "%TMPFILE%",              // 这是 VS Code 传递给格式化器的标准占位符,代表当前文件
    "-y=defaultIndent: '%INDENT%'" // 【关键】覆盖 latexindent 的默认缩进设置,
                              // 强制它使用 VS Code 编辑器当前的缩进设置(如:2个空格或4个空格的Tab)
                              // 保持团队和个人配置一致。
  ],


  // ===================================================================
  // 九、 词数统计(Word Count)
  // ===================================================================
  // 本区域使用 `texcount` 工具来统计论文字数。

  // 【统计】: 触发时机
  // "onSave": 推荐。每次保存时自动统计,并在 VS Code 状态栏显示总字数。
  // "off": 关闭自动统计(你仍可右键菜单或命令面板手动运行)。
  "latex-workshop.texcount.autorun": "onSave",

  // 【统计】: texcount 路径(如果不在 PATH 中,请指定绝对路径)
  // "latex-workshop.texcount.path": "texcount",

  // 【统计】: texcount 参数
  "latex-workshop.texcount.args": [
    "-merge",   // 合并所有被 `\include` 或 `\input` 的子文件
    "-inc",     // 允许 `\include` 和 `\input`
   "-total",   // 仅显示总数(否则会显示详细分类)
    // **处理中文文档时,强烈建议添加以下参数:**
    "-ch",      // 启用中文字符统计 (texcount v3.0+),这对中文用户至关重要
    "-utf8"     // 明确指定 UTF-8 编码,确保中文字符正确计数
  ],


  // ===================================================================
  // 十、 智能感知与大纲
  // ===================================================================
  // 本区域增强 .tex 文件的编辑体验,如自动补全、悬浮提示和大纲视图。

  // 【感知】: 智能感知刷新策略
  // `true`: 推荐。更积极地监视文件变化(如 `\input` 的文件),并更新补全索引。
  // 这使得在多文件项目中,你在 `chapter1.tex` 中定义的新 `\label`
  // 能更快地在 `main.tex` 中被补全。
  "latex-workshop.intellisense.update.aggressive.enabled": true,

  // 积极刷新的延迟(毫秒)。
  "latex-workshop.intellisense.update.delay": 800,

  // 【感知】: 悬浮预览
  // `true`: 鼠标悬浮在数学公式(如 $...$)上时,显示渲染后的公式预览图。
  "latex-workshop.hover.preview.enabled": true,

  // `true`: 鼠标悬浮在引用(如 `\ref{fig:1}`)上时,显示被引用的图/表/章节的预览。
  "latex-workshop.hover.ref.enabled": true,

  // `true`: 鼠标悬浮在文献(如 `\cite{knuth}`)上时,显示该文献的 BibTeX 条目信息。
  "latex-workshop.hover.citation.enabled": true,

  // 【感知】: 回车键绑定
  // `true`: 推荐。增强回车键的功能。
  // 例如,在 `itemize` 环境中输入 `\item` 后按回车,会自动补全下一个 `\item`。
  // 如果这与你的输入法或其它插件(如 Vim)冲突,可以设为 `false`。
  "latex-workshop.bind.enter.key": true,

  // 【大纲】: 启用 VS Code 侧边栏的大纲视图
  "latex-workshop.view.outline.enabled": true,
  // 【大纲】: 在大纲中显示这些层级的章节
  "latex-workshop.view.outline.sections": [
    "part",
    "chapter",
    "section",
    "subsection",
    "subsubsection",
    "paragraph"
  ],

  // 【大纲】: 在大纲中显示浮动体(图、表)和标签
  "latex-workshop.view.outline.floats.enabled": true,


  // ===================================================================
  // 十一、 外部依赖查找
  // ===================================================================
  // 本区域帮助插件找到 *不在* 你当前项目文件夹中的文件(例如系统字体、全局 .bib 库)。

  // 【依赖】: 使用 kpsewhich 查找 .bib
  // `true`: 允许插件使用 `kpsewhich` (TeX 发行版自带的搜索工具)
  // 来查找那些在 TeX 系统路径中(但不在项目里)的 .bib 文件。
  "latex-workshop.kpsewhich.bibtex.enabled": true,

  // 【依赖】: 使用 kpsewhich 查找 .cls/.sty
  // `true`: 允许插件使用 `kpsewhich` 查找系统路径中的类文件和样式文件。
  "latex-workshop.kpsewhich.class.enabled": true,

  // 【依赖】: 手动指定 .bib 目录
  // 如果你有一个全局的、私人的 .bib 数据库(例如放在 `/Users/Me/MyBibs`),
  // 但它又不在 TeX 系统路径中,你可以在这里手动添加它。
  // "latex-workshop.latex.bibDirs": ["/绝对路径/到/你的/bib目录"],


  // ===================================================================
  // 十二、 VS Code 编辑器配合(可选)
  // ===================================================================
  // 本区域确保 VS Code 正确识别 LaTeX 相关文件类型。

  // 【识别】: 文件关联
  // 确保 VS Code 知道 .tex, .cls, .sty 文件应使用 "latex" 语法高亮
  // (并激活 LaTeX Workshop 插件),.bib 文件应使用 "bibtex" 语法高亮。
// 尽管 VS Code 通常能自动识别,但这里显式声明可以作为兜底。
  "files.associations": {
    "*.tex": "latex",
    "*.cls": "latex",
    "*.sty": "latex",
    "*.bib": "bibtex"
  }
}

快速自测

Hello, XeLaTeX(新建 main.tex):

1
2
3
4
\documentclass{ctexart} % 中文友好
\begin{document}
你好,\LaTeX!这是 XeLaTeX 自测。我是泪花花。
\end{document}

image.png

在 VS Code 命令面板(Ctrl+Shift+P)中运行 Build LaTeX project(或点击状态栏的 TeX 徽章选择默认的 latexmk: xelatex(推荐) 配方)执行构建。

如果一切配置正确,VS Code 应该会自动在右侧标签页打开 main.pdf 预览,并正确显示中文字符和数学公式。

如果构建失败,请首先查看 VS Code 底部的“问题 (Problems)”和“输出 (OUTPUT)”面板,并检查 LaTeX Workshop 提供的编译日志(可在 TeX 侧边栏中找到 View LaTeX compiler log)。

相关文章

【VS Code】告别安装与配置困难:新手保姆级指南

··992 字·5 分钟
还在为如何入门 VS Code 而烦恼吗?这篇专为新手打造的保姆级 VS Code 教程,将从官网下载安装讲起,手把手教你如何设置中文界面、安装 Prettier、GitLens 等实用插件,并更换 One Dark Pro 主题美化编辑器。内容覆盖 Windows/macOS 双平台,助你无痛上手。深入了解,立即开启高效编码之旅!

【Docker】告别环境配置噩梦:从零到一的安装指南

··711 字·4 分钟
还在为繁琐的环境配置而抓狂?这份2025年最新的 Docker 安装教程,是专为新手打造的终极指南。我们将通过高清图文与实测命令,手把手带你搞定 Windows(WSL2)、macOS(M1/Intel) 与 Linux 全平台部署及镜像加速,彻底告别环境依赖问题。立即学习,5分钟内跑起你的第一个容器!

【安装】R 、R Studio 、R Tools 安装

··237 字·2 分钟
本博文详细讲解了如何下载与安装 R语言、R Tools 及 RStudio,包括选择合适的 CRAN 镜像、配置正确的安装路径及环境变量设置,助您轻松搭建 R 开发环境。

【PDF2ZH】谁才是论文翻译之王?新版 vs 旧版深度对决

··718 字·4 分钟
在 pdf2zh 与全新的 pdf2zh-next (2.0) 之间犹豫不决?本文为你带来最全面的深度评测,基于 v2.6.4 与 v1.9.11 版本进行实测,从翻译质量、API 成本、速度到免费渠道,用详实数据助你做出最佳选择。立即阅读,找到最适合你的科研论文翻译神器。

【Origin Pro】告别传统箱线图:绘制好看的云雨图

··309 字·2 分钟
想在 OriginPro 绘制信息更丰富的云雨图(Raincloud Plot)?本教程以模板中心与手动构建两法,详解数据要求、半小提琴+点云+箱线图叠加、美化参数、轴刻度与网格、统计摘要配置与导出,避免均值误导,适合非编程用户,助你快速产出出版级图表,立即学习。点击查看!

碎碎念

··164 字·1 分钟
碎语 # 2026-06-28T01:33:00+08:00 # 网站从 Typecho 切换到 hugo 了,这样后续更方便维护了。希望可以走的更远。 2026-05-07T20:36:37+08:00 # 孟夏新晴,余年廿一。回首来路,或明或晦,皆为今日之我;遥望前程,有山有水,亦待他年之行。 愿此后心有定火,不随众声而灭;眼有清光,能见人间之美。遇风则立,逢雨则歌,得失不惊,去留从容。 少年自有凌云意,不负春光不负身。 一岁一礼,一寸欢喜;此生漫漫,且行且珍重。 祝我生日快乐。 2026-04-28T19:35:50+08:00 # 今天把工具站 tools.rosetears.cn 给换了。更好看了!!! 2026-03-08T22:46:46+08:00 # 时间的参照物是什么?小时候从县城到乡下,总得提前好几天找人、找车,是要走很久很久。但现在发现一个人骑车最快半个小时就到了,上了公交没一会儿也到了。从前以为家门口那条小路走到大路上,必须骑车才能到达,现在才发现那不过是大学宿舍到校门的距离。 记忆里,我是从十三岁开始一个人坐火车的。从武汉到郑州,卧铺,我睡在中铺。不记得到底用了多久,只记得自己醒一阵、睡一阵,看看手机,吃哥哥给我买的果盘。到了站,去了舅舅租的房子,在顶楼,印象里有花,也有星星。 后来上了大学,每半年都要走六百多公里。坐高铁要四个多小时,坐火车要十二个小时。有一年五一,突然想家了,买到了下铺的卧铺回去了。那一次倒觉得很快,那是我这几年来唯一一次在卧铺上睡着。 这半年里,我有时也会一个人坐车,走五百多公里,八九个小时。路程没变,却觉得很远,空落落的。 前两天和朋友聚,发现每个人离得并不是很远,但相遇越要等一年半载。 记得之前和一些人的距离只有两三米,现在却是个未知数。高中有次放假回到学校看杂志,翻到了一句话“一期一会”。在不知不觉中和很多人见了最后一面了。是偶然在班门前发现的一个同学,闲聊了几句;是一次聚会有人喝醉了给我说以后要永远有联系;是再正常不过的一次对视,和余光一瞥;也可能是那次越过了山河相聚后的再见;也可能是我也不记得是什么了,只记得有人对我说“不许联系我”。 故乡和故人离我越来越远了,远到现在要用年的单位来计算。 一期一会,会者定离,难得一面,世当珍惜。 2025-12-31T23:00:14+08:00 # 马上就是 2026 了。屏幕还亮着,窗外的风有点冷。手表的秒针一格一格地走,像把这一年的边角慢慢削掉,啃食着岁月,也啃食着我,推着我往前一点点。 这一年回头看,第一反应不是总结,是惊讶:我还在。去年这个时候我也哭过,眼泪落得很认真,像在跟自己较劲。我挺矫情,也挺倔。 这一年做了不少事。博客从零搭起来,页面一点点成形;视频一条条剪,画面和节奏慢慢顺了;知识一层层学,学完又忘,再学;在老师和朋友的帮忙下,拿到一些还挺漂亮的结果。对 AI 的那股劲也没丢,始终想站在前面一点,哪怕只是多看一眼、多试一次。也在一次次流泪中变得坚强,伤痛是特别为我安排的试炼 ,一旦我拥抱它化成我一部分,从此后是独一无二更坚强的我,我知道要往哪里走。 也不是没有遗憾。事情太多,时间被我分得乱七八糟,几件很重要的事没做完,有的干脆错过了。朋友对我说过一句话,我记到现在:“既然认识到了问题,就不要因为惯性,一直没有改向。快点改变方法和做法,立刻行动就好了。这一年也和亲近的人吵了许久,这是我最后悔的事情,没有之一。 这一年也遇见了很多人。新朋友来了,老朋友还在,谁也没丢。童年的一个小愿望也补上了:开了一个我的世界服务器,还是和最早一起玩的人。十几年了,我们还在同一张地图上挖矿、盖房子,想想都觉得,我们真挺厉害。 还有一件很长的心愿:见到了认识快十年的网友。我们在游乐场笑得很大声。因为你在旁边,我才把安全杆压下去,去坐海盗船,去进鬼屋。勇气有时候不是突然长出来的,是有人陪着你往前走一步。 人活在流俗里,独木难支。没有家人和朋友,就没有今天的我。谢谢你们一直包容我。 新的一年,愿平安喜乐。愿日子里既有细碎的小幸福,也有随时重新出发的力气。 2025-12-27T09:27:44+08:00 # 年初我为了找一些数据分析的代码真是焦头烂额。后来才发现,难的不是代码本身,而是它们太零散,而且很多还被商业化包装得又贵又不透明。

【DocuTranslate】超好用的多格式开源文档翻译工具

··242 字·2 分钟
DocuTranslate 文档翻译工具,开源可本地部署,支持 PDF、DOCX、XLSX、EPUB、SRT/ASS 等多格式,高保真保留排版,并支持 JSONPath 定向翻译与术语表自动生成。本文提供工作流选择与参数实战,助你快速搞定批量翻译,立即查看,包含 MinerU、docling 解析建议。