0

I'm trying to use vim / nvim as text editor in a (long) .tex file containing both minted and dsfont package. Here is an example:

% !TeX document-id = {f2e9e8a7-1386-4a73-9989-55350ce6c529}
% !TeX TXS-program:compile = txs:///xelatex/[--shell-escape]
%\documentclass[a4paper, 12pt]{book}
\documentclass{scrreprt}
%\usepackage{fontspec}
%\usepackage{pmboxdraw}
\usepackage{amssymb, amsmath, float, framed, geometry, listings, lmodern, mathtools,multirow,parskip, paralist,pgfplots, ragged2e,setspace,tcolorbox, threeparttable, upquote, url, tikz, enumitem}
\usepackage{bbm}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{xurl}
\usepackage{minted}
\usepackage{dsfont} 
\usepackage{multirow}
\usepackage{tabto}
\usepackage{tabu}
\usepackage[english]{babel}
\usepackage{newtxmath}
\usetikzlibrary{positioning}
\usepackage{xcolor}
\definecolor{mypink1}{RGB}{0, 170, 0}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\fancyhf{}
\pagestyle{fancy}
\rfoot{Page \thepage}
\usepackage[LGR]{fontenc}
\usepackage[T1]{fontenc}
\usepackage[colorlinks]{hyperref}
\hypersetup{
    colorlinks,
    linkcolor=blue,
    filecolor=magenta,
    citecolor=mypink1,      
    urlcolor=cyan,
}
\geometry{
    a4paper,
    total={170mm,257mm},
    left=20mm,
    top=20mm,
}
\usepackage{caption}
%\usepackage{calrsfs}
%\DeclareMathAlphabet{\pazocal}{OMS}{zplm}{m}{n}
\begin{document}
blabla
\begin{minted}{Python}
    print(“Hello world”)
\end{minted}
\end{document}

I can compile the document with both Texstudio and pdflatex in the terminal without problems. However trying to view it with :LLPStartPreview gives me a Failed to compile message and a the following message in the .log file:

l.13 \usepackage
                {dsfont}
Pass the -shell-escape flag to LaTeX. Refer to the minted.sty documentation for
 more information.

I had a look at the minted doc but couldn't find the solution to the problem What am I doing wrong?

Edit1

After having checked this other answer, I also tried to replace the line

% !TeX TXS-program:compile = txs:///xelatex/[--shell-escape]

by

% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]

and

% !TeX TXS-program:pdflatex = pdflatex -synctex=1 -interaction=nonstopmode --shell-escape %.tex

but it didn't solve the problem

Edit 2 I try to insert (in .vimrc file)

let g:vimtex_compiler_latexmk.options += ['-shell-escape']
let g:vimtex_compiler_method = 'latexmk'

and

let g:vimtex_compiler_latexmk.options += ['-shell-escape']
let g:vimtex_compiler_method = 'latexmk'

but it didn't solve the problem

Edit 3 I tried (sequentially) to add the following command in the .vimrc file but it didn't solve the problem:

  • let g:livepreview_engine = 'evince' . [-shell-escape]
  • let g:livepreview_engine = 'evince' . ['-shell-escape']
  • let g:livepreview_engine = 'evince' . '[-shell-escape]'
  • let g:livepreview_engine =. ' -shell-escape'

Edit 4 I tried also to add the following line in my .vimrc without success let g:livepreview_engine = 'pdflatex' . '[-shell-escape]'

The problem didn't appear when I used :LLPStartPreview with the following code: (where the following lines where commented out):


...
\usepackage{minted}
...
\begin{minted}{Python}
    print(“Hello world”)
\end{minted}
% !TeX document-id = {f2e9e8a7-1386-4a73-9989-55350ce6c529}
% !TeX TXS-program:pdflatex = pdflatex -synctex=1 -interaction=nonstopmode --shell-escape %.tex
%\documentclass[a4paper, 12pt]{book}
\documentclass{scrreprt}
%\usepackage{fontspec}
%\usepackage{pmboxdraw}
\usepackage{amssymb, amsmath, float, framed, geometry, listings, lmodern, mathtools,multirow,parskip, paralist,pgfplots, ragged2e,setspace,tcolorbox, threeparttable, upquote, url, tikz, enumitem}
\usepackage{bbm}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{xurl}
%\usepackage{minted}
\usepackage{dsfont} 
\usepackage{multirow}
\usepackage{tabto}
\usepackage{tabu}
\usepackage[english]{babel}
\usepackage{newtxmath}
\usetikzlibrary{positioning}
\usepackage{xcolor}
\definecolor{mypink1}{RGB}{0, 170, 0}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\fancyhf{}
\pagestyle{fancy}
\rfoot{Page \thepage}
\usepackage[LGR]{fontenc}
\usepackage[T1]{fontenc}
\usepackage[colorlinks]{hyperref}
\hypersetup{
    colorlinks,
    linkcolor=blue,
    filecolor=magenta,
    citecolor=mypink1,      
    urlcolor=cyan,
}
\geometry{
    a4paper,
    total={170mm,257mm},
    left=20mm,
    top=20mm,
}
\usepackage{caption}
%\usepackage{calrsfs}
%\DeclareMathAlphabet{\pazocal}{OMS}{zplm}{m}{n}
\begin{document}
blabla
%\begin{minted}{Python}
%   print(“Hello world”)
%\end{minted}
\end{document}
ecjb
  • 883
  • 1
    dsfont has nothing to do with this. You need to enable shell-escape for processing documents relying on minted. See https://tex.stackexchange.com/q/99475/4427 – egreg Feb 02 '20 at 16:26
  • Thank you for your comment @egreg. I checked the linked and tried to modify the .tex file accordingly but it didn't solve the problem (when trying to use specificall :LLPStartPreview although it works in texstudio). I edited the question accordingly – ecjb Feb 02 '20 at 16:33
  • let g:livepreview_engine = 'evince' . [-shell-escape] requires the pdfengine, ie. something like latexmk or pdflatex, not evince. Evince is a pdfviewer – DG' Feb 03 '20 at 09:05

1 Answers1

1

EDIT: After DG' pointed out a major misconception I had it looks like what has to be altered is not the compilation route of vimtex but the route of vim-latex-live-preview. According to its README, the compilation can be controlled by setting g:livepreview_engine. To add the -shell-escape option to it one could do

:let g:livepreview_engine .= ' -shell-escape'

Unfortunately I don't use vim-latex-live-preview so can't test this.


Original answer

Note: I don't use vimtex personally, so I can't verify whether the following really works. But I include the way one could find the information necessary for all this and think that it should work (it's what I'd try).

vimtex is not TeXstudio and doesn't parse for TeXstudio's magic comments, afaik.

If in vim (or nvim for what it's worth) you can get help on most things by typing :help <thing> and hitting enter. In particular you can get help about vimtex by typing :help vimtex. There you'll find information on the used compilation method and how to customize it. (For others who don't have vimtex installed, the help file can be found here)

By default vimtex uses latexmk. You should/could change the options passed to latexmk by changing the g:vimtex_compiler_latexmk dictionary, more specifically change the options field of that dictionary. For that you can type the following in normal mode:

:let g:vimtex_compiler_latexmk.options += ['-shell-escape']

Hit enter. Now for the current vim session you'll compile with -shell-escape allowed and minted should work out.

Alternatively you could also configure vimtex to use another compile route. vimtex supports:

  • latexmk
  • latexrun
  • tectonic
  • arara

You can choose among these by setting g:vimtex_compiler_method like so (example uses arara):

:let g:vimtex_compiler_method = 'arara'

The example above uses arara because you can configure arara by using magic comments, but I'm no expert for arara either, so either search for information about it or consult its pretty documentation.

Skillmon
  • 60,462
  • many thanks for your answer @Skillmonlikestopanswers.xyz. I tried to modify the .vimrc file accordingly (see Edit 2 in my question) but it didn't solve the problem – ecjb Feb 02 '20 at 23:46
  • @ecjb have you resourced your rc? Also did you insert that after vimtex gets loaded? As an aside, I don't recommend generally allowing -shell-escape in your .vimrc for every LaTeX project and would only allow that per session with the code above! Did you try using that with an already started vim, like suggested in my answer? As I said, I can't test this at all, so I'm a bit in the dark here and can only guess. – Skillmon Feb 02 '20 at 23:54
  • 1
    FWIW: The OP claims to be unsing vimtex but the command LLPStartPreview is provided by vim-latex-live-preview, which is configured with: let g:livepreview_engine = 'your_engine' . ' [options]' – DG' Feb 03 '20 at 00:03
  • @Skillmonlikestopanswers.xyz: So I removed the let g:vimtex_compiler_latexmk.options += ['-shell-escape'] as you advised and tried to enter it during the session. That unfortunately didn't help. By "resource my rc", do you mean restart the terminal (I'm on MacOS) ==> If yes, I restarted the terminal after editing the .vimrc but it didn't solve the probelm. Finally "after vimtex gets loaded: you mean after loading a .tex file with vim? ==> if yes, that didn't solve the problem. But many thanks for your comments! – ecjb Feb 03 '20 at 00:05
  • Maybe also relevant: https://github.com/lervag/vimtex/issues/305 – DG' Feb 03 '20 at 00:06
  • many thanks for your comment @DG. So in my .vimrc file there is already currently a line let g:livepreview_previewer = 'evince'. Shall I add something? – ecjb Feb 03 '20 at 00:07
  • @DG' thanks, that might explain a lot! – Skillmon Feb 03 '20 at 00:07
  • @ecjb from the README of the link to vim-latex-live-preview it looks like you have to alter the variable g:livepreview_engine, you could do something like :let g:livepreview_engine .= ' -shell-escape' with an already running vim which has already loaded the tex file. – Skillmon Feb 03 '20 at 00:12
  • Thanks again for the support @Skillmonlikestopanswers.xyz. I tried to implement your advice and edited the question accordingly, but it unfortunately still didn't work – ecjb Feb 03 '20 at 08:58
  • what I should also add, is that. There are no problem with other .tex file – ecjb Feb 03 '20 at 09:05
  • @ecjb Read here: https://github.com/xuhdev/vim-latex-live-preview – DG' Feb 03 '20 at 09:08