VS Code + Tex Live + SumatraPDF配置LaTeX反向搜索(持续更新)
本文配置最初参考 【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反向搜索(持续更新)相关推荐
- 如何在SumatraPDF中设置反向搜索Latex命令行
如何在SumatraPDF中设置反向搜索Latex命令行 非常简单,在SumatraPDF菜单栏,设置-选项,输入 "D:\CTEX\WinEdt\WinEdt.exe" &quo ...
- 【Latex】TexLive+VScode+SumatraPDF 配置LaTex编辑环境
前往我的博客阅读体验更佳:本文链接 安装Texlive 下载镜像文件,可以使用[清华镜像]或者[中科大镜像],下载texlive.iso文件,这是最新的texlive版本. 打开镜像文件,运行inst ...
- SumatraPDF与VSCode反向搜索配置
在设置->选项->高级设置中修改 "C:\Users\XXX\AppData\Local\Programs\Microsoft VS Code\Code.exe" &q ...
- windows下安装Sublime+Miktex+Sumatrapdf配置LATEX环境
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/crazy_scott/article/details/79401421 </div>&l ...
- datastage配置jdbc_DataStage 错误集(持续更新)
标签: DataStage序列文章 1 执行dsadmin命令时报错 $ dsadmin exec(): 0509-036 Cannot load program dsadmin because of ...
- 一些有用的Latex模板(持续更新)
最近搜集的一些Latex模板,希望各位写作的时候能派上用场. 1) 一些我搜集的Latex网站: LaTex Templates 中科大论文格式的模板 2)以下这些来自人大经济论坛的帖子. 一.国内部 ...
- Latex技巧(持续更新)(\newcommand{}{})
自定义一个新命令 \newcommand{\tcr}{\textcolor{red}} 为了方便设置文本颜色为红色而定义的简化命令. code: \documentclass{article}\use ...
- STM32配置一般过程(持续更新中)
1.外设配置顺序 RCC时钟→GPIO→其他外设 2.外设具体配置过程 ①配置函数首先声明PPP_InitTypeDef结构体变量. 例:GPIO_InitTypeDef GPIO_InitStru ...
- Linux下配置JavaWeb环境(持续更新其他软件)
2019独角兽企业重金招聘Python工程师标准>>> 在JavaWeb开发中,JDK,Tomcat,Maven,Mysql等都是必不可少的.接下来我对在Linux上安装JDK,To ...
- latex数学符号(持续更新)
公式符号 小于等于\leq ≤\leq≤ 正比于\propto ∝\propto∝ 波浪线\sim ∼\sim∼ 换行 quad空格 a\qquad b aba\qquad bab quad空格 a\ ...
最新文章
- 【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )
- python性能分析
- 金谷诺亚携华人文交所 经信研究·李刚:打造元宇宙数字商城
- 几个主流的Java连接池整理
- 捕获计算机屏幕++方法,如何在Windows 10计算机上录制屏幕以及如何捕获计算机的音频...
- 10.31T2 点双联通分量+预处理前缀+二分答案
- 云服务器带宽如何计算,云服务器怎么选择带宽
- PCL学习(4)——octree
- IO、NIO、AIO
- 20. 顺时针打印矩阵
- Pytorch和caffe对maxpool模式ceil比较
- 常见的嵌入式linux学习和如何选择ARM芯片问答
- 编译原理实验1——词法分析器设计
- word更新目录页码
- 多重中介效应的示例数据(内附STATA代码)
- 机器学习必备知识点 之 样本方差与实际方差
- 企鹅号快速赚钱方法?企鹅号收益情况?
- 【转】HTML5斯诺克桌球俱乐部【译】
- Java塈百日而求新,念三番未发,其一
- 人工智能?AI?都是什么 四句话就让你彻底明白