给定一个 arara 编译命令列表,我应该在哪个步骤使用“shell:yes”选项?

给定一个 arara 编译命令列表,我应该在哪个步骤使用“shell:yes”选项?

如果您需要使用 运行复杂的编译命令列表arara,我知道synctex: yes只需要在最后一步,例如:

% arara: pdflatex
% arara: frontespizio
% arara: biber
% arara: pdflatex
% arara: pdflatex: { synctex: yes }

但是如果我需要该shell : yes选项,例如因为我正在使用tikzexternalize,我应该把它放在哪个位置?

这里有一个mwe:

% arara: pdflatex: { shell : yes }
% arara: biber
% arara: pdflatex: { shell : yes }
% arara: pdflatex: { shell : yes , synctex: yes }
\documentclass[11pt,openright]{book}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage[british]{babel} 

\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix={Figures/}] % activate!

\usepackage[style=authoryear-icomp, backend=biber,hyperref=true]{biblatex} 
\usepackage{csquotes} 
\usepackage{hyperref} 

\addbibresource{biblatex-examples.bib} 

\begin{document}

    \begin{tikzpicture}
        \fill[green] (0,0) rectangle (1,1);
    \end{tikzpicture}

    \cite{aristotle:rhetoric}
    \printbibliography

\end{document}

答案1

我将您的文件保存为test.tex(并删除了图形文件的前缀,但这并不相关)。

然后我就跑了

pdflatex -shell-escape test
pdflatex test

没有任何问题。第二次运行发出消息

===== Image 'test-figure0' is up-to-date. ======

这证实了我的说法。

因此我得出结论,shell: yes只需要第一批运行,从而

% arara: pdflatex { shell: yes }
% arara: frontespizio
% arara: biber
% arara: pdflatex
% arara: pdflatex: { synctex: yes }

如果某些 TikZ 图片包含\ref\cite,您可能会遇到问题,但这与 无关,arara并且始终pdflatex使用该-shell-escape选项运行无法解决问题。

另一方面,其他需要的包-shell-escape可能会有不同的行为,所以恐怕没有一般的规则。

相关内容