LaTeX no VS Code: o visualizador de PDF não atualiza e só pode executar um arquivo em uma pasta

LaTeX no VS Code: o visualizador de PDF não atualiza e só pode executar um arquivo em uma pasta

Estou tentando usar o VS Code no Windows 10 x64 para LaTeX Workshop 8.7.2compilar documentos em LaTeX.

Estou enfrentando três problemas:

  1. O visualizador de PDF exibido em uma guia no VS Code não é mais atualizado quando eu compilo o documento novamente após abrir o visualizador de PDF. Abrir o arquivo PDF com outro programa mostra que ele foi atualizado, portanto, é apenas o visualizador no VS Code que não é atualizado na compilação. Tenho que fechar a aba e abri-la novamente ( LaTeX Workshop: View LaTeX PDF file in VSCode tab) para exibir a versão mais recente, ou seja, a versão atual do arquivo PDF.

  2. O arquivo tasks.jsonque está na subpasta .vscodeda pasta onde está meu myfilename.texarquivo que desejo compilar contém a linha "myfilename.tex". Vejo em vários lugares online (como a resposta aceita aqui ou aqui) que aparentemente deveria ser %DOC%.texou %DOC%(embora no primeiro link eles estejam se referindo ao settings.jsonarquivo, que se parece com o abaixo para mim, ou seja, completamente diferente. Quando compilo isso com %DOC%.texou apenas %DOC%, recebo:

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

Esse problema significa que se eu quiser compilar dois .texarquivos na mesma pasta, preciso substituir manualmente o nome do arquivo no tasks.jsonarquivo a cada vez. O que eu também tentei, sem sucesso, foi (seguindohttps://github.com/James-Yu/LaTeX-Workshop/issues/384) "%DOCFILE%.tex"e "%DOCFILE%").

  1. Quero também criar um índice dentro do arquivo PDF. No TeXWorks, que usei antes, usei MakeIndexassim:

insira a descrição da imagem aqui

ou (de preferência, combinado com pdfLaTeX) assim

insira a descrição da imagem aqui

O que eu teria que fazer para executar MakeIndexusando o VS Code?


Aqui estão meus arquivos: tarefas.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": []
        }
    ]
}

configurações.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"
          ]
        },
      ]
}

Responder1

Finalmente criei um problema na página do Github de LaTeX-Workshop.

Você não deveria usartarefaspara compilação. Não me lembro agora onde aprendi isso, mas não foi a coisa boa a fazer.

O que funcionou agora, em um computador, foi alterar o settings.json-file da seguinte maneira:

{
    "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
}

e executando com ctrl + alt + b.

Em particular, isso funcionou em um novo PC (também com Windows 10, MikTeX e TeXWorks instalados do meu uso anterior), no qual simplesmente baixei e instalei o VS Code (1.44.0) e a extensão LaTeX Workshop (8.8.0) . Em seguida, ajustei o settings.jsonprocedimento acima e todos os problemas foram resolvidos (exceto que o visualizador de PDF não é atualizado automaticamente durante a compilação, pelo menos não regularmente; ainda estou tentando identificar o problema, mas isso é menor).

No entanto,em outro computador, não tenho perlinstalado, e usando o acima settings.json, obtenho o erro:

latexmk: The script engine could not be found
latexmk: Data: scriptEngine="perl.exe", scriptName="latexmk"

quando descomentei a receita latexmkno arquivo de configurações, isso resultou em:

  • O documento é compilado sem erros
  • O PDF não é atualizado na guia, o ícone precisa ser clicado novamente para ver as alterações
  • O índice permanece vazio após várias compilações
  • São referenciados labels de seções e seus números de página ( ref, pageref) e são apenas pontos de interrogação.

informação relacionada