LaTeX в VS Code: средство просмотра PDF-файлов не обновляется и может запустить только один файл в папке

LaTeX в VS Code: средство просмотра PDF-файлов не обновляется и может запустить только один файл в папке

Я пытаюсь использовать VS Code на Windows 10 x64 для 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) вот так

введите описание изображения здесь

Что мне нужно сделать, чтобы запустить MakeIndexVS 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

Я наконец создал issue на странице 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) представляют собой только вопросительные знаки.

Связанный контент