Solange, bis die `external` Bibliothek für TikZ selbst eine Möglichkeit bietet, zwei statt nur einem externen Aufruf zu tätigen, kann man genau das mit folgendem Patch erreichen:
\usepackage{etoolbox}
\makeatletter
\newif\if@twoexternalruns
\newcommand*{\nextwithtwoexternalruns}{\@twoexternalrunstrue}
\renewcommand*{\@twoexternalrunsfalse}{\global\let\if@twoexternalruns\iffalse}
\patchcmd\tikzexternal@externalizefig@systemcall@@
{\immediate\write18{\pgf@tempa}}%
{\immediate\write18{\pgf@tempa}%
\if@twoexternalruns\@twoexternalrunsfalse\immediate\write18{\pgf@tempa}\fi}%
{}{\patchFailed}
\makeatother
Nun kann man unmittelbar vor `\begin{tikzpicture}` mit `\nextwithtwoexternalruns` dafür sorgen, dass für genau diese nächste Umgebung automatisch zwei externe Aufrufe statt nur einem durchgeführt werden. Insgesamt sähe das dann also beispielsweise so aus:
\RequirePackage{filecontents}
\begin{filecontents}{\jobname Data.asc}
2 224694229071385000 8.97 8.72 3.275
5 561735572678462000 8.25 5.25 4.91
10 1123471145356920000 8.5 4.92 4.92
30 3370413436070770000 7.75 3.5 6.19
60 6740826872141550000 7.09 4.5 5.82
120 13481653744283100000 6.85 4.75 6.06
\end{filecontents}
\documentclass{article}
\usepackage{scrlfile}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\usepackage{siunitx}
\usepgfplotslibrary{external}
\tikzexternalize
\tikzsetexternalprefix{external_figs/}
\usepackage{etoolbox}
\makeatletter
\newif\if@twoexternalruns
\newcommand*{\nextwithtwoexternalruns}{\@twoexternalrunstrue}
\renewcommand*{\@twoexternalrunsfalse}{\global\let\if@twoexternalruns\iffalse}
\patchcmd\tikzexternal@externalizefig@systemcall@@
{\immediate\write18{\pgf@tempa}}%
{\immediate\write18{\pgf@tempa}%
\if@twoexternalruns\@twoexternalrunsfalse\immediate\write18{\pgf@tempa}\fi}%
{}{\patchFailed}
\makeatother
\begin{document}
\nextwithtwoexternalruns
\begin{tikzpicture}
\begin{axis}[
xlabel = {xlabel},
ylabel = {ylabel 1},
smooth,
axis y line*=left,
xmin = -2e18,
xmax = 1.6e19,
scaled x ticks=false,
xticklabel={\pgfmathprintnumber[sci,sci generic={mantissa sep=\times,exponent={10^{##1}}}]{\tick}},
xtick = {0,5e18,1e19,1.5e19},
legend style={draw=none},
]
\addplot[black, mark =x] table [x index = 1, y index = 2] {\jobname Data.asc};
\label{1}
\addplot[red, mark =x] table [x index = 1, y index = 3] {\jobname Data.asc};
\label{2}
\end{axis}
\begin{axis}[
ylabel = {ylabel 2},
smooth,
axis y line*=right,
xmin = -2e18,
xmax = 1.6e19,
ymin = 2.9,
ymax = 7.2,
%ytick ={3,4,...,9},
xmajorticks=false,
scaled x ticks=false,
legend style={draw=none},
]
\addlegendimage{/pgfplots/refstyle=1}\addlegendentry{\scriptsize{name 1}};
\addlegendimage{/pgfplots/refstyle=2}\addlegendentry{\scriptsize{name 2}};
\addplot[green, mark =x] table [x index = 1, y index = 4] {\jobname Data.asc};
\addlegendentry{\scriptsize{name 3}};
\end{axis}
\end{tikzpicture}
\end{document}
Das schöne daran ist: Da genau der eine Aufruf der `external` Bibliothek verdoppelt wird, müsste es vollkommen unabhängig von Betriebssystem funktionieren.
Ich erhalte auf diesem Weg direkt:
![Ergebnis nach dem ersten Lauf][1]
In der `log`-Datei ist zu erkennen, dass auch tatsächlich zwei `pdflatex`-Aufrufe von `external` durchgeführt werden:
`===== <pre>`===== 'mode=convert with system call': Invoking 'pdflatex -shell-escape -halt-o
n-error -interaction=batchmode -jobname "external_figs/test-figure0" "\def\tikz
externalrealjob{test}\input{test}"' ========
\openout3 = `test.auxlock'.
runsystem(pdflatex -shell-escape -halt-on-error -interaction=batchmode -jobname
"external_figs/test-figure0" "\def\tikzexternalrealjob{test}\input{test}")...e
xecuted.
runsystem(pdflatex -shell-escape -halt-on-error -interaction=batchmode -jobname
"external_figs/test-figure0" "\def\tikzexternalrealjob{test}\input{test}")...e
xecuted.
\openout3 = `test.auxlock'.`
`test.auxlock'.`</pre>
Beim nächsten Lauf erkennt `external` außerdem, dass nichts zu tun ist, so dass *beide* Aufrufe entfallen.
Nachteil ist, dass bei Fehlern im TikZ-Code trotzdem zwei Aufrufe stattfinden, der Fehler also zweimal auftritt.
[1]: http://texwelt.de/wissen/upfiles/test13.png