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我要編譯的 my 文件所在.vscode資料夾的子資料夾中的文件myfilename.tex包含行"myfilename.tex".我在網路上的多個地方看到(就像這裡接受的答案一樣 或這裡)這看起來應該是%DOC%.texor %DOC%(儘管在第一個鏈接中,它們指的是該settings.json文件,對我來說如下所示,即完全不同。當我用%DOC%.texor 只是編譯它時%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

你不應該使用任務用於編譯。我現在不記得我從哪裡得到的,但這不是一件好事。

現在在一台電腦上有效的方法是更改​​ -file,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.

特別是,這在一台新 PC 上運行(也安裝了我以前使用過的 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) 僅是問號。

相關內容