解决vscode编译latex的两个小困扰
在vscode中编译LaTeX时,时常会遇到几个小问题。
今天我尝试将这些小问题与copilot进行交流,没想到它很快给出了比较专业准确的回答,经过几轮对话,最终问题也都得到了解决。最后我把copilot的回答总结了一下得到了这篇文档,文中的解决办法全部来自copilot,因此个别细节的正确性还有待考证。
LaTeX Workshop扩展的报错弹窗
问题描述
每次在写.tex
文件时使用Ctrl+S
来保存当前完成的工作,扩展LaTeX Workshop都会默认会编译一遍,但是这样编译肯定是会报错的,因为我设置的默认编译器是pdflatex,而一般写中文文档时需要用xelatex编译,有时还有bibtex,因此每次按下Ctrl+S
后LaTeX Workshop扩展都给我弹窗提示报错1
Recipe terminated with error. Retry building the project.
那么有没有什么解决办法呢?比如让Ctrl+S
变为单纯的保存功能而不自动进行编译,或者隐藏LaTeX Workshop扩展的弹窗提示报错?
在此之前我已经设置了常用编译链
xelatex -> bibtex -> xelatex*2
的快捷键为Alt+X
,因此我希望取消这个保存(Ctrl+S
)后自动用pdflatex编译的功能。
解决办法
在 VS Code 中,可以通过修改设置来禁止 LaTeX Workshop 扩展在保存文件时自动编译 LaTeX 文件。以下是具体步骤:
- 打开 VS Code 的设置。你可以通过顶部菜单的
文件
->首选项
->设置
,或者使用快捷键Ctrl+,
来打开。 - 在设置中,找到
LaTeX Workshop
部分。 - 在
LaTeX Workshop
设置中,找到latex.autoBuild.onSave.enabled
选项,它默认是onFileChange
,现在选择never
。
现在,当你保存 LaTeX 文件时,VS Code 不会自动编译它。
补充一
至于隐藏 LaTeX Workshop 扩展的弹窗提示报错,copilot没有找到直接的设置选项。但是,你可以尝试在设置中找到 latex.recipe.default
选项,然后将其设置为一个不会产生错误的编译命令,这可能可以避免弹窗提示报错。
补充二
这个设置决定了 LaTeX Workshop 扩展何时自动编译 LaTeX 项目。
onSave
:在保存.tex
文件时编译项目。也就是说,每当你在 VS Code 中保存 LaTeX 文件时,VS Code 将自动编译你的 LaTeX 项目。onFileChange
:在检测到任何依赖文件的变化时编译项目,即使这些变化是由其他应用程序引起的。
latexmk编译命令绑定快捷键
问题描述
每次用latexmk命令编译时,都需要在内置终端输入latexmk main.tex
,虽然只是一段短短的字符,但是在vscode中怎么能不用快捷键呢?因此我决定把这个命令和Ctrl+D
绑定一下,这样和保存Ctrl+S
就可以一起丝滑操作了,先保存再编译,而且也没有报错弹窗了,非常nice!
解决办法
在 VS Code 中,你可以通过创建一个任务(task)来运行
latexmk
命令,然后将这个任务绑定到快捷键Ctrl+S
。以下是具体步骤:- 在 VS Code 中,打开你的工作区的
.vscode
目录(如果没有,你需要创建一个) - 在
.vscode
目录中,创建一个名为tasks.json
的文件 - 在
tasks.json
文件中,添加以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15{
"version": "2.0.0",
"tasks": [
{
"label": "build latex",
"type": "shell",
"command": "latexmk",
"args": ["main.tex"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}这将创建一个名为 "build latex" 的任务,它会运行
latexmk main.tex
命令。- 打开 VS Code 的键盘快捷键设置。你可以通过顶部菜单的
文件
->首选项
->键盘快捷键
,或者使用快捷键Ctrl+K Ctrl+S
来打开。 - 在键盘快捷键设置中,找到
任务:运行生成任务
这一项,然后将其快捷键设置为Ctrl+D
。
现在,每次你按
Ctrl+D
,VS Code 就会运行 "build latex" 任务,即运行latexmk main.tex
命令。- 在 VS Code 中,打开你的工作区的
其他问答:latexmk是什么
latexmk
是一个用于自动编译 LaTeX 文档的工具。它可以自动运行 LaTeX 编译器,以及其他必要的工具(如 bibtex 或 biber),以生成最终的文档。
基本的 latexmk
命令如下:1
latexmk [选项] [文件...]
其中,[选项]
是可选的命令行选项,[文件...]
是一个或多个要编译的 LaTeX 文件。
一些常用的 latexmk
选项包括:
-pdf
:生成 PDF 文件(使用 pdflatex)。-bibtex
:运行 bibtex 或 biber(如果需要)。-c
:清理所有非日志文件。-C
:清理所有生成的文件,包括 PDF 文件。
例如,如果你有一个名为 main.tex
的 LaTeX 文件,你可以使用以下命令来编译它:1
latexmk -pdf -bibtex main.tex
这将使用 pdflatex 和 bibtex(如果需要)来编译 main.tex
,并生成一个 PDF 文件。