VS Code 上的 LaTeX:pdf 查看器无法更新,并且只能运行文件夹中的一个文件

VS Code 上的 LaTeX:pdf 查看器无法更新,并且只能运行文件夹中的一个文件

我正在尝试在 Windows 10 x64 上使用 VS Code 来LaTeX Workshop 8.7.2编译 LaTeX 文档。

我面临三个问题:

  1. 当我打开 PDF 查看器后再次编译文档时,VS Code 中选项卡中显示的 PDF 查看器不再更新。使用其他程序打开 PDF 文件显示它已更新,因此只是 VS Code 中的查看器在编译时没有更新。我必须关闭选项卡并再次打开它(LaTeX Workshop: View LaTeX PDF file in VSCode tab)才能显示最新版本的 PDF 文件。

  2. 我想要编译的文件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%")。

  1. 我还想在 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及其页码(refpageref)和 仅为问号。

相关内容