本文配置最初参考 【LaTeX】如何愉快地肝report —— VS Code × LaTeX____JIM___的博客-CSDN博客,这也是笔者多年来一直使用并改进的配置,但原博文已不更新,而 SumatraPDF 更新后多次导致原文配置早已失效,故本文将持续更新 LaTeX 配置。

TeX Live 的安装很简单,在 Index of /systems/texlive/Images/ (globo.tech) 下载 ISO 镜像文件后安装即可,默认会添加系统环境变量,若未添加可手动添加系统环境变量指向 Tex Live 安装目录(我的是 D:\texlive\2021\bin\win32),在此不表。

VS Code 配置 LaTeX 的核心扩展为 LaTeX Workshop,所有配置都由它负责。其它可选扩展例如 LaTeX language support 和 LaTeX Snippets,相比于扩展提供的 Snippets,我更鼓励在 VS Code 的左下角齿轮->->用户代码片段->latex.json (LaTeX) 中自定义一些 Snippets,效率远高于扩展提供的通用 Snippets,定义的方式在 JSON 文件开头的注释里已经给出了,并给出了例子:

Place your snippets for latex here. Each snippet is defined under a snippet name and has a prefix, body and description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:

$1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the same ids are connected.

Example:

"Print to console": {
    "prefix": "log",
    "body": [
        "console.log('$1');",
        "$2"
    ],
    "description": "Log output to console"
}

我在这里也给一个例子:

"Figure:LYH": {"prefix": "fig","body": ["\\begin{figure}[H]","\t\\centering","\t\\includegraphics[width=$1\\textwidth]{$2}","\t\\caption{$3}","\\end{figure}"],"description": "Figure in Ayka's style"
}

安装 SumatraPDF 和 VS Code,然后在 VS Code 中安装 LaTeX Workshop 扩展,完成后,在 VS Code 的左下角齿轮->设置->右上角从右至左第 3 个图标即“打开设置 (json)”打开 settings.json,添加:

{"latex-workshop.latex.tools": [{"name": "pdflatex","command": "pdflatex","args": ["-shell-escape","-synctex=1","-interaction=nonstopmode","-file-line-error","%DOC%"]},{"name": "xelatex","command": "xelatex","args": ["-shell-escape","-synctex=1","-interaction=nonstopmode","-file-line-error","%DOC%"]},{"name": "lualatex","command": "lualatex","args": ["-shell-escape","-synctex=1","-interaction=nonstopmode","-file-line-error","%DOC%"]},{"name": "bibtex","command": "bibtex","args": ["%DOCFILE%"]}],"latex-workshop.latex.recipes": [{"name": "PDFLaTeX","tools": ["pdflatex"]},{"name": "XeLaTeX","tools": ["xelatex"]},{"name": "LuaLaTeX","tools": ["lualatex"]},{"name": "latexmk","tools": ["latexmk"]},{"name": "BibTeX","tools": ["bibtex"]},{"name": "pdflatex -> bibtex -> pdflatex*2","tools": ["pdflatex","bibtex","pdflatex","pdflatex"]},{"name": "xelatex -> bibtex -> xelatex*2","tools": ["xelatex","bibtex","xelatex","xelatex"]}],"latex-workshop.view.pdf.viewer": "external","latex-workshop.view.pdf.external.viewer.command": "E:\\Program Files\\SumatraPDF\\SumatraPDF.exe","latex-workshop.view.pdf.external.synctex.command": "E:\\Program Files\\SumatraPDF\\SumatraPDF.exe","latex-workshop.view.pdf.external.synctex.args": ["-forward-search","%TEX%","%LINE%","-reuse-instance","-inverse-search","\"E:\\Program Files\\Microsoft VS Code\\Code.exe\" -r -g \"%f:%l\"","%PDF%"]
}

复制粘贴上述配置后请注意合并最外层的大括号,并将 SumatraPDF 和 VS Code 的路径改为自己的安装路径。

LuaLaTeX 对 TikZ 等包至关重要,建议配置;"pdflatex -> bibtex -> pdflatex*2" 和 "xelatex -> bibtex -> xelatex*2" 两个 Recipe 是用来编译使用 BibLaTeX 的 LaTeX 文档的,编译 BibLaTeX 需要完整的编译链,即 PDFLaTeX 或 XeLaTeX 编译一遍,BibTeX 编译一遍,PDFLaTeX 或 XeLaTeX 再编译两遍,这就是这两个 Recipe 的由来。这样配置后 VS Code 只要按下 Ctrl+S 保存键就会自动使用 PDFLaTeX 的 Recipe 进行项目生成;“-shell-escape”参数对应的是 \write18 TeX 命令,对很多包的编译都至关重要,如果这样配置后你的 LaTeX 在编译过程中仍然报了与 -shell-escape 或 \write18 的错误,请仔细查找到底是什么其他地方产生了错误,不必怀疑自己是不是配置得有问题了。

上述配置同时已经指定了 VS Code LaTeX 默认使用外部的 PDF 查看器为 SumatraPDF,并且为 SumatraPDF 的反向搜索做好了准备。接下来只需打开 SumatraPDF,左上角三道杠->设置(S)->高级选项(A)...打开 SumatraPDF-setting.txt 记事本文件。参考Customizing SumatraPDF 3.2 (sumatrapdfreader.org)https://www.sumatrapdfreader.org/settings/settings

虽然该文件末尾写着:

# Settings after this line have not been recognized by the current version

但对应上述文档可发现在“RememberOpenedFiles = true”和“EnableTeXEnhancements = true”中漏了一条可设置的选项

pattern used to launch the LaTeX editor when doing inverse search
InverseSearchCmdLine =

于是在上述两行中间插入(见下图):

InverseSearchCmdLine = "E:\\Program Files\\Microsoft VS Code\\Code.exe" -r -g "%f:%l"

注意:该项的值同时就是 latex-workshop.view.pdf.external.synctex.args 中的第 6 条参数,只不过 VS Code 的设置中要将该值加双引号,所以里面的双引号都加了反斜杠转义。同样记得将 VS Code 的路径改为你自己的安装路径,保存该记事本文件,然后反向搜索就即时成功启用了。

更新日志 ChangeLog

2022 年 3 月 31 日

SumatraPDF 更新至 3.3.3 版本后在其左上角三道杠->设置(S)->选项(O)...中取消了“设置反向搜索命令行”,故改为在高级选项中手动添加该设置。

2020 年 11 月 29 日

添加 LuaLaTeX 支持。

2020 年 10 月 7 日

根据 LaTeX Workshop Issue #637,将 InverseSearchCmdLine 和 "latex-workshop.view.pdf.external.synctex.args" 添加 -r 参数。

VS Code + Tex Live + SumatraPDF配置LaTeX反向搜索(持续更新)相关推荐

  1. 如何在SumatraPDF中设置反向搜索Latex命令行

    如何在SumatraPDF中设置反向搜索Latex命令行 非常简单,在SumatraPDF菜单栏,设置-选项,输入 "D:\CTEX\WinEdt\WinEdt.exe" &quo ...

  2. 【Latex】TexLive+VScode+SumatraPDF 配置LaTex编辑环境

    前往我的博客阅读体验更佳:本文链接 安装Texlive 下载镜像文件,可以使用[清华镜像]或者[中科大镜像],下载texlive.iso文件,这是最新的texlive版本. 打开镜像文件,运行inst ...

  3. SumatraPDF与VSCode反向搜索配置

    在设置->选项->高级设置中修改 "C:\Users\XXX\AppData\Local\Programs\Microsoft VS Code\Code.exe" &q ...

  4. windows下安装Sublime+Miktex+Sumatrapdf配置LATEX环境

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/crazy_scott/article/details/79401421 </div>&l ...

  5. datastage配置jdbc_DataStage 错误集(持续更新)

    标签: DataStage序列文章 1 执行dsadmin命令时报错 $ dsadmin exec(): 0509-036 Cannot load program dsadmin because of ...

  6. 一些有用的Latex模板(持续更新)

    最近搜集的一些Latex模板,希望各位写作的时候能派上用场. 1) 一些我搜集的Latex网站: LaTex Templates 中科大论文格式的模板 2)以下这些来自人大经济论坛的帖子. 一.国内部 ...

  7. Latex技巧(持续更新)(\newcommand{}{})

    自定义一个新命令 \newcommand{\tcr}{\textcolor{red}} 为了方便设置文本颜色为红色而定义的简化命令. code: \documentclass{article}\use ...

  8. STM32配置一般过程(持续更新中)

    1.外设配置顺序 RCC时钟→GPIO→其他外设 2.外设具体配置过程 ①配置函数首先声明PPP_InitTypeDef结构体变量. 例:GPIO_InitTypeDef  GPIO_InitStru ...

  9. Linux下配置JavaWeb环境(持续更新其他软件)

    2019独角兽企业重金招聘Python工程师标准>>> 在JavaWeb开发中,JDK,Tomcat,Maven,Mysql等都是必不可少的.接下来我对在Linux上安装JDK,To ...

  10. latex数学符号(持续更新)

    公式符号 小于等于\leq ≤\leq≤ 正比于\propto ∝\propto∝ 波浪线\sim ∼\sim∼ 换行 quad空格 a\qquad b aba\qquad bab quad空格 a\ ...

最新文章

  1. 【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )
  2. python性能分析
  3. 金谷诺亚携华人文交所 经信研究·李刚:打造元宇宙数字商城
  4. 几个主流的Java连接池整理
  5. 捕获计算机屏幕++方法,如何在Windows 10计算机上录制屏幕以及如何捕获计算机的音频...
  6. 10.31T2 点双联通分量+预处理前缀+二分答案
  7. 云服务器带宽如何计算,云服务器怎么选择带宽
  8. PCL学习(4)——octree
  9. IO、NIO、AIO
  10. 20. 顺时针打印矩阵
  11. Pytorch和caffe对maxpool模式ceil比较
  12. 常见的嵌入式linux学习和如何选择ARM芯片问答
  13. 编译原理实验1——词法分析器设计
  14. word更新目录页码
  15. 多重中介效应的示例数据(内附STATA代码)
  16. 机器学习必备知识点 之 样本方差与实际方差
  17. 企鹅号快速赚钱方法?企鹅号收益情况?
  18. 【转】HTML5斯诺克桌球俱乐部【译】
  19. Java塈百日而求新,念三番未发,其一
  20. 人工智能?AI?都是什么 四句话就让你彻底明白

热门文章

  1. 如何用微信小程序,每天给自己赚个鸡腿?
  2. 使用ToUpperInvariant避免使用ToUpper
  3. 秘笈大公开 | 魏泓手把手教你利用无菌动物,提高国自然中标率!
  4. 半导体的PN结及其基本特性
  5. 如何用Flutter实现跨平台移动开发
  6. 02C++对C的增强
  7. 安卓修改Airpods的双击功能,改“播放暂停”————下一首
  8. 动态规划-背包问题求解过程【代码 from eason】
  9. 天大、中南、中山、北师、中科院地图学与地理信息系统GIS及遥感RS专业推免夏令营面试经历与题目汇总
  10. web开发中移动端适配