0

I want to use the externalize option for tikz pictures to save up compilation time. Because of the need for psfrag, I want to compile via latex, i.e. dvi-->ps-->pdf.

I use texStudio. My Latex specs are MikTex 2.9, I use Windows 7 (shame on me), my latex command line reads

latex.exe -src -synctex=1  -interaction=nonstopmode -shell-escape %.tex

My minimal example sort of works, however there are some problems related to the result I achieve so far.

I want to include figures - for simplicity's sake, a circle in this MWE. Originally, mySphere1 and mySphere2 are included from two seperate files with identical content, but different names.

For some reason, in the original problem where I include mySphere2 from a file, the corresponding figure does not show in the result while its title does - I do not receive any compilation error message for this one.

The second issue is: Why does each figure occupy a new page? Is there any workaround here?

\documentclass{article}

\usepackage[english]{babel}             


\usepackage{pgfplots}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\usetikzlibrary{shapes.geometric}

\usetikzlibrary{pgfplots.groupplots}
\usepgfplotslibrary{external}
\tikzexternalize[shell escape=-enable-write18] 
\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource" & dvips -o "\image".ps "\image".dvi}}



\begin{document}

This is a simple test.

\begin{figure}[h!]
    \centering
    \newlength\figureheight         % define length \figureheight
    \newlength\figurewidth          % define length \figurewidth
    \setlength\figureheight{6cm}    % set \figureheight
    \setlength\figurewidth{6cm}     % set \figurewidth
    \tikzsetnextfilename{mySphere1}
      \begin{tikzpicture}
        \draw[blue] (0,0) circle [radius=1];
      \end{tikzpicture} 
\end{figure}

Next page


\begin{figure}[h!]
    \centering
    \newlength\figuregheight        % define length \figureheight
    \newlength\figuregwidth             % define length \figurewidth
    \setlength\figuregheight{6cm}   % set \figureheight
    \setlength\figuregwidth{6cm}        % set \figurewidth
    \tikzsetnextfilename{mySphere2}
      \begin{tikzpicture}
        \draw[blue] (0,0) circle [radius=1];
      \end{tikzpicture} 
\end{figure}

And now for something completely different: a sawtooth.

\begin{figure}[!htb]
\centering
\tikzsetnextfilename{force1}
  \begin{tikzpicture}
    \draw[blue] (0,0) circle [radius=1];
  \end{tikzpicture} 
\caption{y-direction}
\end{figure}

The sawtooth.

\begin{figure}[!htb]
\centering
\tikzsetnextfilename{force2}
  \begin{tikzpicture}
    \draw[blue] (0,0) circle [radius=1];
  \end{tikzpicture} 
\caption{x-direction}
\end{figure}

\end{document}

2 Answers 2

1

I think you need to update your version of MikTeX.

I had been struggling with similar issues using TeXstudio and MikTex 2.9.4xxx. Upgrading to the latest version (2.9.5840) fixed my issues. I just tried compiling your tex file (with the latest MikTex) and it works for me.

1

Call your exmaple with

pdflatex -shell-escape --extra-mem-bot=10000000 --synctex=1 %A%.Tex

replace your line

\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource" & dvips -o "\image".ps "\image".dvi}}

to

\tikzset{external/system call={pdflatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"}}

your external call seems to be wrong (to me).

Compilig that way I can compile without errors.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .