17

I am working on a .tex file inside Visual Studio Code with the Latex Workshop extension installed. I get following error message when I want Latex to compile .svg files for me, following this post

You didn't enable `shell escape' (or `write18')

I tried to add '--shell-escape', '-shell-escape', '-enable-write18' to the arguments that are passed to the pdflatex tool in my settings.json with no effect...

"latex-workshop.latex.tools": [
    {
        "name": "pdflatex",
        "command": "pdflatex",
        "args": [
            "-synctex=1",
            "-interaction=nonstopmode",
            "-file-line-error",
            "%DOC%",
            "--shell-escape"
        ],
        "env": {}
    },
    {
        "name": "bibtex",
        "command": "bibtex",
        "args": [
            "%DOCFILE%"
        ],
        "env": {}
    }
]
shintobi
  • 171

2 Answers2

29

I got it working by modifying latexmk task which seems to be invoked by default (auto-update on file edit).

See the LaTeX Workshop extension FAQ for more info.

  1. Open settings.json (e.g. cmd/ctrl + shift + P, type Preferences: Open Settings (JSON) in the command box)
  2. Find the entry corresponding to latex-workshop.latex.tools. If it's not visible, start typing it as a new entry and VSCode will unhide it.
  3. Add "-shell-escape", to the args.

Example:

    "latex-workshop.latex.tools": [
        ...
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-shell-escape",              // <---- added this line
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "-outdir=%OUTDIR%",
                "%DOC%"
            ],
            "env": {}
        },
        ...
    ]
1

If the output is created using the AutoBuild feature (build upon file change), the Workshop extension is using a default recipe. This is by default the first recipe in latex-workshop.latex.recipes and set to latexmk upon installation.

To change this to pdflatex and have the changes to the pdflatex command in latex-workshop.latex.tools applied when saving the Latex file the next time, you can create a new recipe and move it to the top of latex-workshop.latex.recipes.

    {
        "name": "create pdf",
        "tools": [
            "pdflatex"
        ]
    },