我想使用 xelatex 编译一个 tex 文档LaTeX 工作坊Visual Studio Code 中的扩展。如何将编译器从默认编译器更改为 xetex?我将当前的 setting.json 文件放在下面。
{
"latex-workshop.latex.tools": [
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOC%"
],
"env": {}
},
{
"name": "lualatexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-lualatex",
"-outdir=%OUTDIR%",
"%DOC%"
],
"env": {}
},
{
"name": "latexmk_rconly",
"command": "latexmk",
"args": [
"%DOC%"
],
"env": {}
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
],
"env": {}
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
],
"env": {}
},
{
"name": "rnw2tex",
"command": "Rscript",
"args": [
"-e",
"knitr::opts_knit$set(concordance = TRUE); knitr::knit('%DOCFILE_EXT%')"
],
"env": {}
},
{
"name": "jnw2tex",
"command": "julia",
"args": [
"-e",
"using Weave; weave(\"%DOC_EXT%\", doctype=\"tex\")"
],
"env": {}
},
{
"name": "jnw2texmintex",
"command": "julia",
"args": [
"-e",
"using Weave; weave(\"%DOC_EXT%\", doctype=\"texminted\")"
],
"env": {}
}
]
}
答案1
也许您正在寻找的是:
{
"latex-workshop.latex.recipe.default": "name of recipe",
}
它设置了 LaTeX-Workshop 的默认构建配方。但是当我试图弄清楚如何使用 xelatex 构建我的文件时,我遇到了这个问题,现在我已经弄清楚了:
我使用带有 -xelatex 选项的 latexmk,它是通过 MiKTeX 安装在 Windows 上的。我使用项目文件夹中的命令行来查找哪些参数可以得到我想要的结果。就我而言,下面的方法奏效了:
D:\path\to\project>latexmk -xelatex -outdir=out file.tex
由于这个结果通常是针对某个项目而固定的,所以我只需覆盖工具和配方即可。
D:\path\to\project\.vscode\settings.json:
{
"latex-workshop.latex.recipe.default": "latexmk (xelatex)",
"latex-workshop.latex.tools": [
{
"name": "xelatexmk",
"command": "latexmk",
"args": [
"-xelatex",
"-outdir=out",
"file.tex"
]
}
],
"latex-workshop.latex.recipes": [
{
"name": "latexmk (xelatex)",
"tools": [
"xelatexmk"
]
}
]
}
我选择在工具中对根文件和输出目录进行硬编码,但你也可以使用占位符。
答案2
方法 1
以下是如何使用占位符添加而不指定file.tex
,遵循@mbockstael的回答。我个人%DOCFILE%
最喜欢,但使用类似的东西"%DOC%.tex"
也可以。
无论是在全局设置中settings.json
还是在工作区设置中的.vscode
目录下,首先添加工具,
"latex-workshop.latex.tools": [
{
"name": "xelatexmk",
"command": "latexmk",
"args": [
"-xelatex",
"-outdir=%OUTDIR%",
"%DOCFILE%"
]
},
]
然后,在食谱中,只需添加xelatexmk
"latex-workshop.latex.recipes": [
{
"name": "latexmk
答案3
这是 @wolfrevo 答案的简化版本。从 LaTeX VS Code 扩展中设置默认配方就足以设置xelatex
。由于所有选项都存在,因此无需xelatex
再次从 VS Code 设置中定义。我们所要做的就是选择我们想要使用的那个。
"latex-workshop.latex.recipe.default": "latexmk (xelatex)",
答案4
在 VS Code 扩展 LaTex Workshop 中,您需要设置三个相互关联的设置:
latex-workshop.latex.tools
latex-workshop.latex.recipes
(指其中之一latex-workshop.latex.tools
)latex-workshop.latex.recipe.default
(指其中之一latex-workshop.latex.recipes
)
LaTeX Workshop
将为您添加:
如果您进入“设置”并搜索并单击“在 settings.json 中编辑”,则会显示“工具”列表
latex-workshop.latex.tools
。其中之一是xelatexmk
(调用latexmk -xelatex ...
):"latex-workshop.latex.tools": [ ... { "name": "xelatexmk", "command": "latexmk", "args": [ "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "-xelatex", "-outdir=%OUTDIR%", "%DOC%" ], "env": {} }, ... ],
如果您进入“设置”并搜索并单击“在 settings.json 中编辑”,则会显示“配方”列表
latex-workshop.latex.recipes
。其中之一是latexmk (xelatex)
(指的是上面提到的工具名称xelatexmk
):"latex-workshop.latex.recipes": [ ... { "name": "latexmk (xelatex)", "tools": [ "xelatexmk" ] }, ... ],
然后您需要设置默认配方。
进入设置,搜索latex-workshop.latex.recipe.default
并输入上面提到的食谱名称latexmk (xelatex)
。或者将其添加到你的 settings.json 中:
"latex-workshop.latex.recipe.default": "latexmk (xelatex)",
此外,您可以(a)配置传递给您的工具的参数和环境和/或(b)如果您不需要所有其他工具和配方,则删除它们。
重要的:在设置对话框中进行更改之前,请确保保存 settings.json 文件。否则,保存 settings.json 时会覆盖它们!