我正在尝试在 Windows 10 x64 上使用 VS Code 来LaTeX Workshop 8.7.2
编译 LaTeX 文档。
我面临三个问题:
当我打开 PDF 查看器后再次编译文档时,VS Code 中选项卡中显示的 PDF 查看器不再更新。使用其他程序打开 PDF 文件显示它已更新,因此只是 VS Code 中的查看器在编译时没有更新。我必须关闭选项卡并再次打开它(
LaTeX Workshop: View LaTeX PDF file in VSCode tab
)才能显示最新版本的 PDF 文件。我想要编译的文件
tasks.json
所在.vscode
文件夹的子文件夹中的文件包含以下行myfilename.tex
"myfilename.tex"
。我在网上的多个地方看到(就像这里接受的答案一样 或此处)这似乎应该是%DOC%.tex
或%DOC%
(尽管在第一个链接中,他们指的是文件settings.json
,对我来说它看起来如下所示,即完全不同。当我用%DOC%.tex
或只是编译它时%DOC%
,我得到:
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (MiKTeX 2.9.7250 64-bit)
entering extended mode
! Emergency stop.
<*> %DOC%
! ==> Fatal error occurred, no output PDF file produced!
Transcript written on texput.log.
The terminal process terminated with exit code: 1
这个问题意味着,如果我想编译.tex
同一个文件夹中的两个文件,每次我都需要手动替换tasks.json
文件中的文件名。我也尝试过,但无济于事(以下https://github.com/James-Yu/LaTeX-Workshop/issues/384)"%DOCFILE%.tex"
和"%DOCFILE%"
)。
- 我还想在 PDF 文件中创建索引。在我之前使用的 TeXWorks 中,我的用法
MakeIndex
如下:
或者(最好与 结合pdfLaTeX
)像这样
我需要做什么才能MakeIndex
使用 VS Code 运行?
这是我的文件: 任务.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "Run pdflatex",
"type": "shell",
"group": {
"kind": "build"
},
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"myfilename.tex"
]
},
{
"label": "Run bibtex",
"type": "shell",
"group": {
"kind": "test",
"isDefault": true
},
"command": "bibtex",
"args": [
"-terse",
"*.aux"
]
},
// {
// "label": "Run makeindex",
// "command": "makeindex",
// "args": [
// "myfilename.tex.nlo",
// "-s nomencl.ist",
// "-o myfilename.tex.nls%"
// ]
// },
{
"label": "update pdf",
"command": "${command:latex-workshop.refresh-viewer}",
"problemMatcher": []
},
{
"label": "Compile and update",
"group": {
"kind": "build",
"isDefault": true
},
"dependsOrder": "sequence",
"dependsOn": [
// "Run makeindex",
"Run pdflatex",
"update pdf"
],
"problemMatcher": []
}
]
}
设置.json
{
"latex-workshop.message.update.show": false,
"latex-workshop.latex.autoClean.run": "onBuilt",
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.toc",
// "*.blg",
// "*.lof",
// "*.lot",
// "*.out",
// "*.acn",
// "*.acr",
// "*.alg",
// "*.glg",
// "*.glo",
// "*.gls",
// "*.fls",
// "*.log",
// "*.fdb_latexmk",
// "*.snm",
"*.synctex(busy)",
"*.synctex.gz(busy)",
"*.nav"
],
"latex-workshop.view.pdf.ref.viewer": "tabOrBrowser",
"latex-workshop.view.pdf.viewer": "tab",
"latex-workshop.view.pdf.zoom": "page-fit",
"window.zoomLevel": 1,
"latex-workshop.latex.recipes": [
{
"name": "pdflatex ➞ bibtex ➞ pdflatex × 2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
},
]
}
答案1
我最终在 的 Github 页面上创建了一个问题LaTeX-Workshop
。
你不应该使用任务用于编译。我现在不记得我在哪儿学到了这一点,但这不是一件好事。
现在,在一台计算机上,可以settings.json
按照如下方式更改文件:
{
"cSpell.enabled": true,
"editor.cursorBlinking": "solid",
"editor.wordWrap": "on",
"editor.wordWrapColumn": 80,
"editor.wrappingIndent": "same",
"latex-workshop.view.pdf.viewer": "tab",
"latex-workshop.view.pdf.zoom": "page-fit",
"latex-workshop.latex.autoBuild.cleanAndRetry.enabled": true,
"latex-workshop.latex.autoClean.run": "onFailed",
"latex-workshop.latex.clean.subfolder.enabled": true,
"latex-workshop.latex.clean.fileTypes": [ "*.aux"
//, "*.toc",
// "*.ilg",
// "*.blg",
// "*.lof",
// "*.lot",
// "*.out",
// "*.acn",
// "*.acr",
// "*.alg",
// "*.glg",
// "*.glo",
// "*.gls",
// "*.fls",
// "*.log",
// "*.fdb_latexmk",
// "*.snm"
],
"latex-workshop.message.log.show": true,
"latex-workshop.latex.recipes": [
{
"name": "latexmk",
"tools": [
"latexmk"
]
},
{
"name": "pdflatex",
"tools": [
"pdflatex",
// "bibtex",
"makeindex",
// "pdflatex",
"pdflatex"
]
}
],
"latex-workshop.latex.tools":[
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-f",
"-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": "makeindex",
"command": "makeindex",
"args": [
"%DOCFILE%.nlo",
"-s",
"nomencl.ist",
"-o",
"%DOCFILE%.nls"
],
"env": {}
},
{
"name": "rnw2pdf",
"command": "Rscript",
"args": [
"-e",
"knitr::knit2pdf('%DOCFILE%')"
],
"env": {}
}
],
"latex-workshop.message.update.show": false
}
并执行ctrl + alt + b。
具体来说,这在一台新电脑上有效(也安装了我以前使用的 Windows 10、MikTeX 和 TeXWorks),我只需下载并安装 VS Code(1.44.0)和 LaTeX Workshop 扩展(8.8.0)。然后我按上述方法进行了调整settings.json
,所有问题都解决了(除了 PDF 查看器在编译时不会自动更新,至少不会定期更新;我仍在尝试识别问题,但这只是小问题)。
然而,在另一台计算机上,我没有perl
安装,并且使用上述方法settings.json
,我收到错误:
latexmk: The script engine could not be found
latexmk: Data: scriptEngine="perl.exe", scriptName="latexmk"
当我在设置文件中取消注释该配方时latexmk
,结果如下:
- 文档编译无错误
- PDF 未在选项卡中更新,需要再次单击图标才能看到更改
- 多次编译后目录仍为空
- 各章节的引用
label
及其页码(ref
,pageref
)和 仅为问号。