当前位置: 首页 > article >正文

使用VSCode编写LaTeX(latex+vscode+SumatraPDF

许多人都是用 texstudio 或者 winedt 配合 texlive 编写文档很长一段时间内 texstudio 是我唯一的编辑器然而颜控的我受不了那原始的界面于是我看上了 VSCode。漂亮、免费、开源是我选择 VSCode 的主要原因。网上有很多介绍 VSCode 的文章不过在配置外部阅读器的介绍稍微有点少我在网上找了很久才在 LaTeX Workshop 作者的 github 主页上找到方法同时也萌发了写一篇教程的想法。本文主要介绍使用 VSCode 编写简单的文档以及设置外部PDF阅读器的方法。如果你已经安装好了 texlive、VSCode 和 SumatraPDF并且不想看完整篇文章只想快点上手请翻到文章末尾的附录将代码全部复制到 VSCode 的设置里然后再根据第5节设置一下反向搜索就可以使用了。1. 安装 texlive加载 texlive 2019 的 iso 文件右键 install-tl-windows单击以管理员身份运行进入安装界面。可以点击“Advanced”进入高级安装来取消你不需要安装的宏包。高级安装界面点击“Customize”来取消勾选不需要的宏包。很多宏包和功能我个人并不需要因此我在这里取消勾选大家可以根据需要勾选自己需要的功能如果嫌麻烦全部安装也可以并不消耗多少空间。设置完安装路径等选项之后点击“安装”之后静坐 20 分钟等待安装完成。2. 安装 VSCode 上的插件与此同时下载 VSCode 并安装VSCode 的安装很简单这里就不唠叨了。VSCode 安装完成之后在扩展商店安装 LaTeX Workshop 插件。安装完成后随便打开一个 tex 源文件可以看到代码已经被高亮显示。3. 配置 VSCode 的插件将以下代码放入 VSCode 的设置区内。latex-workshop.latex.tools: [ { // 编译工具和命令 name: xelatex, command: xelatex, args: [ -synctex1, -interactionnonstopmode, -file-line-error, -pdf, %DOCFILE% ] }, { name: pdflatex, command: pdflatex, args: [ -synctex1, -interactionnonstopmode, -file-line-error, %DOCFILE% ] }, { name: bibtex, command: bibtex, args: [ %DOCFILE% ] } ],LaTeX Workshop 默认的编译工具是 latexmk大家根据需要修改所需的工具和命令我不需要用到 latexmk因此我把其修改为中文环境常用的 xelatex大家根据需要自行修改。感谢huan Yu将 tools 中的%DOC%替换成%DOCFILE%就可以支持中文路径下的文件了latex-workshop.latex.recipes: [ { name: xelatex, tools: [ xelatex ] }, { name: xe-bib-xe-xe, tools: [ xelatex, bibtex, xelatex, xelatex ] } ],用于配置编译链同样地放入设置区。第一个 recipe 为默认的编译工具如需要使用 bibtex 可在编译时单击 VSCode 界面左下角的小勾单击“Build LaTeX project”选择“xe-bib-xe-xe”另外的方法是使用右侧栏或者直接将“xe-bib-xe-xe”的Recipe 放到第一位就可以作为默认 Recipe 编译了但因为编译次数比较多速度会比较慢。大家可以根据需要自行按照格式添加自己需要的编译链。要使用 pdflatex只需在 tex 文档首加入以下代码%!TEX program pdflatex要使用 SumatraPDF 预览编译好的PDF文件添加以下代码进入设置区。latex-workshop.view.pdf.viewer: external, latex-workshop.view.pdf.external.command: { command: E:/Programs/SumatraPDF/SumatraPDF.exe, args: [ %PDF% ] },“viewer”设置阅读器为外置阅读器“command”为 SumatraPDF.exe 的路径根据具体情况修改。现在就可以使用 VSCode 编译 tex 文件并以 SumatraPDF 为阅读器预览了。插件经过几次更新之后已经去掉了右键菜单选项选项被移动到了右侧栏。点击右侧栏的图标再点击你所想要使用的Recipe就可以编译了如果用快捷键则默认使用第一条 Recipe 编译。或者也可以使用快捷键 CtrlAltV。单击右上角的按钮即可打开 SumatraPDF 并预览。4. 配置正向搜索latex-workshop.view.pdf.external.synctex: { command: E:/Programs/SumatraPDF/SumatraPDF.exe, args: [ -forward-search, %TEX%, %LINE%, %PDF% ] },添加代码进入设置区以配置正向搜索。“command”依旧是 SumatraPDF.exe 的存放位置根据具体情况修改。单击“SyncTeX from cursor”即可正向搜索。可以看到光标所在的行的内容在 PDF 中高亮显示。5. 配置反向搜索打开 SumatraPDF进入设置-选项-设置反向搜索命令行添加以下命令Code.exe resources\app\out\cli.js -g %f:%l根据 VSCode 具体的安装位置将“Code.exe”和“resources\app\out\cli.js”换成 VSCode 在自己的电脑上的安装位置例如C:\Users\Marvey\AppData\Local\Programs\Microsoft VS Code\Code.exe C:\Users\Marvey\AppData\Local\Programs\Microsoft VS Code\resources\app\out\cli.js -g %f:%l感谢Macrofuns指出如果不加双引号在文件路径有空格的情况下会导致无法反向搜索双击 PDF 中的任意一处即可跳转到 VSCode 中所对应的内容的源代码处。这样 VSCode texlive 就完全配置好了。最好不要清理 xelatex 生成的 gz 后缀的临时文件否则就不能进行正向和反向搜索之前的文章中我提到了从 VSCode 预览按钮启动 SumatraPDF 会无法反向搜索的问题现在已经解决解决方法是在反向搜索命令中添加resources\app\out\cli.js解决方案来源Synctex inverse search doesnt work half the time (and How I got forward search to work for SumatraPDF) · Issue #637 · James-Yu/LaTeX-Workshop​github.com​编辑6. 其他设置LaTeX Workshop 默认保存的时候自动编译如果不喜欢这个设置可以添加以下代码进入设置区latex-workshop.latex.autoBuild.run: never,附录// LaTeX latex-workshop.latex.tools: [ { name: xelatex, command: xelatex, args: [ -synctex1, -interactionnonstopmode, -file-line-error, -pdf, %DOCFILE% ] }, { name: pdflatex, command: pdflatex, args: [ -synctex1, -interactionnonstopmode, -file-line-error, %DOCFILE% ] }, { name: bibtex, command: bibtex, args: [ %DOCFILE% ] } ], latex-workshop.latex.recipes: [ { name: xelatex, tools: [ xelatex ] }, { name: xe-bib-xe-xe, tools: [ xelatex, bibtex, xelatex, xelatex ] }, { name: pdflatex, tools: [ pdflatex ] } ], latex-workshop.view.pdf.viewer: external, latex-workshop.view.pdf.external.command: { // ********** command: C:/Program Files/SumatraPDF/SumatraPDF.exe, // 注意修改路径 args: [ // ********** %PDF% ] }, latex-workshop.view.pdf.external.synctex: { // ********** command: C:/Program Files/SumatraPDF/SumatraPDF.exe, // 注意修改路径 args: [ // ********** -forward-search, %TEX%, %LINE%, %PDF% ] },问题描述vscode更新1.111.0后之前配置的latex workshop和Sumatra PDF不能反向搜索了从pdf定位到tex。上网搜索尝试了诸多方法无果至少效果不完美。有的必须单独打开Sumatra不能从vs打开被视作vs子进程无法反向搜索有的在反向定位时会出现1秒左右的命令行黑框影响观感。解决方法总共3步latex workshop配置也需不用改Sumatra PDF根目录下创建vbs脚本修改Sumatra PDF的反向搜索命令行。latex workshop配置我当前的配置如下仅供参考(注意按照本地路径填写)//使用 SumatraPDF 预览编译好的PDF文件 // 设置VScode内部查看生成的pdf文件 latex-workshop.view.pdf.viewer: external, //可改为tab : 使用 vscode 内置 pdf 查看器 // PDF查看器用于在\ref上的[View on PDF]链接 latex-workshop.view.pdf.ref.viewer:auto, // 使用外部查看器时要执行的命令。此功能不受官方支持。 latex-workshop.view.pdf.external.viewer.command: D:/somesoftware/SumatraPDF/SumatraPDF.exe, // 注意修改路径 // 使用外部查看器时latex-workshop.view.pdf.external.view .command的参数。此功能不受官方支持。%PDF%是用于生成PDF文件的绝对路径的占位符。 latex-workshop.view.pdf.external.viewer.args: [ -reuse-instance, %PDF% ], // 将synctex转发到外部查看器时要执行的命令。此功能不受官方支持。 latex-workshop.view.pdf.external.synctex.command: D:/somesoftware/SumatraPDF/SumatraPDF.exe, // 注意修改路径 // latex-workshop.view.pdf.external.synctex的参数。当同步到外部查看器时。%LINE%是行号%PDF%是生成PDF文件的绝对路径的占位符%TEX%是触发syncTeX的扩展名为.tex的LaTeX文件路径。 latex-workshop.view.pdf.external.synctex.args: [ -forward-search, %TEX%, %LINE%, -reuse-instance, %PDF%, ],2. Sumatra PDF根目录下创建vbs脚本脚本内容如下Set WshShell CreateObject(WScript.Shell) If WScript.Arguments.Count 2 Then file WScript.Arguments(0) line WScript.Arguments(1) 0 代表隐藏窗口后台运行完美消除黑框 cmd cmd.exe /c code.cmd -r -g file : line WshShell.Run cmd, 0, False End If脚本命名为silent_code.vbs3. 修改Sumatra PDF的反向搜索命令行点开Sumatra PDF左上角3道横杠选择“设置”再选择“选项”打开后在“设置反向搜索命令行”的编辑框中输入如下内容(注意按照本地路径填写)wscript D:\somesoftware\SumatraPDF\silent_code.vbs %f %l

相关文章:

使用VSCode编写LaTeX(latex+vscode+SumatraPDF

许多人都是用 texstudio 或者 winedt 配合 texlive 编写 文档,很长一段时间内 texstudio 是我唯一的编辑器,然而,颜控的我受不了那原始的界面,于是我看上了 VSCode。漂亮、免费、开源是我选择 VSCode 的主要原因。 网上有很多介绍…...

win10下驱动进程保护

网上可以查到很多WIN7下的驱动后台进程保护代码,而那些代码在WIN10下并不适用,故写此篇来文章来总结我在编写WIN10下后台进程保护驱动程序的过程与经验,因为源码文件结构比较杂乱,在此文章里我粘部分代码,在最后再给出完整项目的g…...

PyCharm测试功能太烦人?3种方法彻底关闭自动检测(附避坑指南)

PyCharm测试功能太烦人?3种方法彻底关闭自动检测(附避坑指南) 如果你正在使用PyCharm进行Python开发,可能会遇到一个令人头疼的问题:每当你的代码中包含test_开头的文件时,PyCharm就会自动将其识别为测试文…...

LIN总线帧结构:从字节域到完整报文解析

1. LIN总线帧结构入门:从字节域说起 第一次接触LIN总线时,我被它的"字节域"概念卡住了好几天。当时在调试一个车窗控制模块,明明示波器上能看到波形,但从机就是没反应。后来才发现是没吃透这个最基础的数据单元。字节域…...

「开源者行」开源社高校宣讲:复旦大学站

由开源社及上海复旦大学计算机学院研究生团学联共同主办的高校巡回宣讲活动-「开源者行」#06 复旦大学站将在11月27日(周四)晚18:00 - 20:30 于复旦大学张江校区软件楼105室开启沙龙。 第六站沙龙得到了上海复旦大学计算机学院研究生团学联的…...

腾讯纯文本LLM训视觉encoder,拿捏图表长视频,达到开源小模型SOTA!

Penguin-VL团队 投稿量子位 | 公众号 QbitAI打破多模态视觉语言拼接套路!腾讯开源Penguin-VL,直接用纯文本LLM训视觉编码器。这项研究跳出了先有传统视觉 backbone,再接语言模型的常规路径,直接从text-only LLM初始化vision encod…...

Java并发编程终极指南:RedSpider社区concurrent项目深度解析 [特殊字符]

Java并发编程终极指南:RedSpider社区concurrent项目深度解析 🚀 【免费下载链接】concurrent 这是RedSpider社区成员原创与维护的Java多线程系列文章。 项目地址: https://gitcode.com/gh_mirrors/co/concurrent 想要掌握Java并发编程的核心原理吗…...

优质学术论文平台推荐:六大权威站点提供智能降重与自然语言处理功能,有效规避查重标红问题

开头总结工具对比(技能4) �� 为帮助学生们快速选出最适合的AI论文工具,我从处理速度、降重效果和核心优势三个维度,对比了6款热门网站,数据基于实际使用案例: 工具名称 处理速度 降…...

龙虾的应用商店挂牌了!北大开源MagicSkills,让Agent Skill可自由安装组合同步

Narwhal-lab 投稿量子位 | 公众号 QbitAIAI Agent世界的npm来了!最近,北京大学Narwhal-Lab的开源项目MagicSkills,通过把AI Agent所需的技能(Skill)统一管理、安装、组合和同步,实现了“写一次、到处用”的…...

探索 Awesome GPT Agents:解锁AI助手在网络安全领域的无限可能

探索 Awesome GPT Agents:解锁AI助手在网络安全领域的无限可能 【免费下载链接】Awesome-GPT-Agents A curated list of GPT agents for cybersecurity 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-GPT-Agents Awesome GPT Agents 是一个精心…...

如何快速突破微信网页版限制:wechat-need-web完整解决方案指南

如何快速突破微信网页版限制:wechat-need-web完整解决方案指南 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 在远程办公和跨平台协作日益…...

稳定扩散WebUI本地化中文版安装与使用教程

稳定扩散WebUI本地化中文版安装与使用教程 【免费下载链接】stable-diffusion-webui-localization-zh_CN Simplified Chinese translation extension for AUTOMATIC1111s stable diffusion webui 项目地址: https://gitcode.com/gh_mirrors/st/stable-diffusion-webui-locali…...

【亲测免费】 smartParsePro 项目快速入门教程

smartParsePro 项目快速入门教程 【免费下载链接】smartParsePro 地址智能识别Pro(支持省市区街道/电话/邮编/姓名/身份证号识别) 项目地址: https://gitcode.com/gh_mirrors/smar/smartParsePro 1. 项目目录结构及介绍 smartParsePro/ ├── s…...

StructBERT语义相似度工具5分钟部署:一键解决中文句子匹配难题

StructBERT语义相似度工具5分钟部署:一键解决中文句子匹配难题 1. 项目简介:你的中文句子“找不同”神器 想象一下这个场景:你正在审核用户提交的客服对话记录,需要快速判断“我的订单怎么还没发货?”和“请问我的包…...

测试 Elasticsearch,现在变得更简单了

作者:来自 Elastic Piotr Przybyl 解释由于 Elasticsearch 9.x、现代 Java 客户端以及 Testcontainers 2.x 的改进,Elasticsearch 集成测试如何变得更加简单。 上手体验 Elasticsearch:深入了解我们在 Elasticsearch Labs 仓库中的示例 noteb…...

30-seconds-of-python 项目教程:掌握Python高效编程的终极秘籍

30-seconds-of-python 项目教程:掌握Python高效编程的终极秘籍 【免费下载链接】30-seconds-of-python 项目地址: https://gitcode.com/gh_mirrors/30s/30-seconds-of-python 30-seconds-of-python 是一个专为Python开发者打造的实用代码片段库,…...

计算机毕业设计springboot基于的洗衣店服务管理系统 SpringBoot驱动的智能洗衣服务平台设计与实现 基于Java微服务架构的衣物洗护订单管理系统

计算机毕业设计springboot基于的洗衣店服务管理系统0oc89212 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着都市生活节奏的不断加快,人们对便捷服务的需求日益…...

华为:智慧交管感知解决方案及产品手册 2023

这份华为 2023 年智慧交管感知解决方案及产品手册,聚焦城市道路交通管理中的各类痛点,依托云计算、大模型、AI、机器视觉等技术,推出全场景的智慧交管感知产品与解决方案,通过环保化、高清化、智能化的技术升级,解决交…...

采购订单增强避坑指南:二代增强MM06E005 vs 三代增强ME_GUI_PO_CUST如何选?

采购订单增强技术选型实战:二代增强与三代增强深度对比 在SAP系统实施过程中,采购订单(Purchase Order)作为企业采购流程的核心单据,其定制化需求层出不穷。当标准功能无法满足业务需求时,增强(Enhancement)便成为开发人员的首选方…...

uboot之do_bootm_linux启动内核函数源码解析

当配置了CONFIG_PPC时将调用common/cmd_bootm.c中的do_bootm_linux。本处是调用libarm/armlinux.c中的。 u-boot.h中 static struct tag params; typedef struct bd_info { int bi_baudrate; / serial console baudrate /波特率 unsigned long bi_ip_addr; / IP Address /即服务…...

头歌平台实战:如何通过预防性维护避免斐波那契数列计算的性能陷阱

头歌平台实战:斐波那契数列计算的性能优化与预防性维护 在编程学习与算法实践中,斐波那契数列计算是一个经典案例。它不仅帮助我们理解递归与迭代的区别,更是性能优化和代码维护的绝佳教材。本文将从头歌平台的实际任务出发,深入探…...

**开源项目教程:探索`awesome-campus-expert`**

开源项目教程:探索awesome-campus-expert 【免费下载链接】awesome-campus-expert 🕶 An awesome list of resources for campus experts! 🕶 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-campus-expert 1. 项目目录结构及介…...

Invest模型年产水量计算:从数据获取到结果导出的全流程实战

1. Invest模型年产水量计算入门指南 刚接触Invest模型的朋友们可能对这个强大的生态系统服务评估工具既好奇又困惑。作为一款由斯坦福大学自然资本项目组开发的免费开源工具,Invest模型能够帮助我们量化生态系统的各项服务价值,其中年产水量计算是最基础…...

GitHub_Trending/we/WeChatMsg常见错误排查:导出失败解决方案

GitHub_Trending/we/WeChatMsg常见错误排查:导出失败解决方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/w…...

明道云Webhook与ERP双向同步:手把手教你实现发货状态实时更新

明道云与ERP系统深度集成:Webhook双向同步实战指南 在数字化转型浪潮中,企业系统间的数据孤岛问题日益凸显。明道云作为国内领先的低代码平台,与ERP系统的无缝对接成为众多企业提升运营效率的关键需求。本文将聚焦发货状态实时同步这一典型场…...

PC-DMIS最佳拟合坐标系实战:四种算法选择与避坑指南

PC-DMIS最佳拟合坐标系实战:四种算法选择与避坑指南 在精密制造领域,三坐标测量机(CMM)的测量精度直接影响产品质量控制的有效性。而坐标系作为测量的基准框架,其建立的准确性更是重中之重。当面对复杂零件或存在装配关系的特征组时&#xff…...

运用长尾关键词提升SEO效果与关键词优化策略解析

本文将深入探讨长尾关键词在提升SEO效果和关键词优化策略中的重要性。长尾关键词不仅帮助网站更好地匹配用户的搜索意图,还能在竞争激烈的市场中脱颖而出。我们会分析当前最佳实践,让您了解到如何高效地挖掘与应用这些关键词,从而提升您的内容…...

uboot网络配置避坑指南:为什么你的tftpserver总是ping不通?

U-Boot网络配置深度解析:从Ping不通到高效TFTP传输的终极指南 在嵌入式开发的世界里,U-Boot作为系统启动的"第一道门",其网络配置的稳定性直接影响着开发效率。当你在深夜加班调试,准备通过TFTP快速加载内核镜像时&…...

K3s容器健康检查配置:确保应用高可用性的完整指南 [特殊字符]

K3s容器健康检查配置:确保应用高可用性的完整指南 🚀 【免费下载链接】k3s K3s 是一个轻量级的 Kubernetes 发行版,用于在资源受限的环境和物联网设备上部署 Kubernetes 群集。 * 轻量级的 Kubernetes 发行版、在资源受限的环境和物联网设备上…...

【Autosar Can Sample】第二章之Ecuc模块配置实战:从PDU管理到硬件交互

1. Ecuc模块配置的核心逻辑 第一次接触Autosar的Ecuc模块时,我完全被它复杂的配置项搞懵了。直到在实际项目中踩过几次坑才明白,Ecuc本质上就是个"交通警察",负责协调各个模块间的数据流动。举个例子,就像城市交通系统中…...