給定 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可能會有不同的行為,所以恐怕沒有一般規則。

相關內容