Hallo zusammen,

ich versuche gerade meiner Abbildungen gemäß dem "Manual for Package pgfplots 2D/3D Plots in LATEX, Version 1.8" zu externalisieren. Dazu habe ich versucht, die Anleitungen im Manuel in Abschnitt "7.1 Export to pdf/eps" umzusetzen. Über die external library und pdflatex ist mir das lediglich über

\usepgfplotslibrary{external} und \tikzexternalize

auch gelungen. Ich würde allerdings gerne auch die Option über eps, d.h. Latex statt pdfLatex nutzen. Dazu sind im Manuel folgende Schritte gemäß den Seiten 410--411 nötig:

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

\tikzexternalize[shell escape=-enable-write18]

Beide Befehle habe ich in meiner Präambel aufgenommen, was auch zu einer fehlerlosen Kompil. führt. Allerdings enthält die kompilierte Datei keine Abbildung.

Ich poste nachfolgend mal zwei Codes. Der erste enthält die nach Manuel notwendigen Befehle zur Kompilierung mittels pdfLatex. Dieser Code funktioniert bei mir. Der zweite Code enthält die Befehle zur Kompilierung mittels latex. Dieser Code enthält bei mir -- wie beschrieben -- keinen Plot. Woran könnte das liegen? Mir ist aufgefallen, dass die Kompilierung zwar fehlerlos durchläuft, aber keine eps-Datei erzeugt wird. Ich weiß auch nicht wo diese herkommen sollte, den in \tikzset wird ja schließlich auch nur "... -o "\image".ps "\image".dvi" angegeben. Das Hinzufügen von "\image".eps hat übrigens keinen Effekt. Ich hoffe, ihr habt vielleicht eine Idee.

Vielen Dank schonmal.

Code über pdflatex

\documentclass{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}

\usepackage{subfig}

% Begrenzungen oben und unten bei Abbildungen   
        \newcommand*{\framerule}{\vskip-\parskip\vskip-\ht\strutbox\noindent\rule{\linewidth}{\fboxrule}\par}
        \newcommand*{\frametoprule}{\framerule\vskip\fboxsep}
        \newcommand*{\framebottomrule}{\vskip\fboxsep\framerule}

% pgfplots
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepgfplotslibrary{external}

% TikZ Beginn Adjustments -----------------------------------------------------------------------------------------------------------------------------
    \usepackage{tikz}
    \usetikzlibrary{intersections,positioning,arrows,calc,patterns,shapes.multipart,fit,backgrounds,decorations.pathreplacing}

\tikzexternalize                                % für Kompilierung mit pdfLatex in Verbindung mit \usepgfplotslibrary{external}
%\tikzexternalize[shell escape=-enable-write18] % für Kompilierung mit latex in Verbindung mit \usepgfplotslibrary{external} und \tikzset{external/system call...}

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

\begin{document}
\begin{figure}
\centering
\frametoprule

\begin{tikzpicture}
\begin{axis}[width=0.45\textwidth,height=0.3\textheight,xlabel=\textbf{Beispielbeschriftung},ylabel=y]
\addplot[no markers,color=black,solid] coordinates{
(0,0)
(1,1)
(2,1)
(2,2)};
\end{axis}
\end{tikzpicture}

\vskip 3mm
\framebottomrule

\end{figure}

\end{document}

Code über latex:

\documentclass{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}

\usepackage{subfig}

% Begrenzungen oben und unten bei Abbildungen   
        \newcommand*{\framerule}{\vskip-\parskip\vskip-\ht\strutbox\noindent\rule{\linewidth}{\fboxrule}\par}
        \newcommand*{\frametoprule}{\framerule\vskip\fboxsep}
        \newcommand*{\framebottomrule}{\vskip\fboxsep\framerule}

% pgfplots
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepgfplotslibrary{external}

% TikZ Beginn Adjustments -----------------------------------------------------------------------------------------------------------------------------
    \usepackage{tikz}
    \usetikzlibrary{intersections,positioning,arrows,calc,patterns,shapes.multipart,fit,backgrounds,decorations.pathreplacing}

%\tikzexternalize                               % für Kompilierung mit pdfLatex in Verbindung mit \usepgfplotslibrary{external}
\tikzexternalize[shell escape=-enable-write18]  % für Kompilierung mit latex in Verbindung mit \usepgfplotslibrary{external} und \tikzset{external/system call...}

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

\begin{document}
\begin{figure}
\centering
\frametoprule

\begin{tikzpicture}
\begin{axis}[width=0.45\textwidth,height=0.3\textheight,xlabel=\textbf{Beispielbeschriftung},ylabel=y]
\addplot[no markers,color=black,solid] coordinates{
(0,0)
(1,1)
(2,1)
(2,2)};
\end{axis}
\end{tikzpicture}

\vskip 3mm
\framebottomrule

\end{figure}

\end{document}

gefragt 17 Aug '13, 10:21

josephine's gravatar image

josephine
944253035
Akzeptiert-Rate: 0%

bearbeitet 17 Aug '13, 11:09

cgnieder's gravatar image

cgnieder
22.1k253463


In TeXLive funktioniert der LaTeX-Code (wenn ich --shell-escape benutze) tadellos. In MiKTeX wird zwar das Bild erstellt, MiKTeX hat aber Probleme es anschließend einzubinden. Ursache des MiKTeX-Problems sind anscheinend einige veraltete .pro-Dateien: wenn ich special.pro und tex.pro aus TL13 nach MiKTeX kopiere, funktioniert es auch dort.

Permanenter link

beantwortet 17 Aug '13, 17:32

Ulrike%20Fischer's gravatar image

Ulrike Fischer
3.6k23
Akzeptiert-Rate: 52%

bearbeitet 17 Aug '13, 19:05

cgnieder's gravatar image

cgnieder
22.1k253463

Vielen Dank. Dann liegt es ja zumindest nicht an mir;) Ich werde wahrscheinlich die Option über pdflatex nutzen, dann löst sich das Problem von alleine.

(20 Aug '13, 09:28) josephine

Ich habe vor ein paar Minuten in PGF einen Fehler gefunden und behoben, der genau die in der Frage beschriebene Charakteristik aufweist.

Mit anderen Worten: dieses Problem wird mit der naechsten Version der external library behoben sein.

Permanenter link

beantwortet 09 Jul '14, 16:35

cfeuersaenger's gravatar image

cfeuersaenger
3.7k23
Akzeptiert-Rate: 34%

Bei Verwendung von latex mit --enable-write18 funktioniert das in der Zwischenzeit auch mit MiKTeX 2.9, ohne dass man sich vorher Dateien von TL13 holt.

Open in writeLaTeX
\documentclass[parskip=full]{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\usepgfplotslibrary{external}

\tikzexternalize[shell escape=-enable-write18]  % für Kompilierung mit latex in Verbindung mit \usepgfplotslibrary{external} und \tikzset{external/system call...}

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

%\tikzset{external/force remake} % erzwingen der Neuerstellung der externen Bilder

\begin{document}

\begin{tikzpicture}
\begin{axis}[xlabel=\textbf{Beispielbeschriftung},ylabel=y]
  \addplot[no markers,red] coordinates{(0,0) (1,1) (2,1) (2,2)};
\end{axis}
\end{tikzpicture}

Hier wird die Zeichnung noch einmal kleiner eingebunden:

\includegraphics[scale=0.5]{\jobname-figure0}

\end{document}

liefert als dvi

alt text

Das Einbinden der erzeugten <Dateiname>-figure0.ps Datei klappt also wie erwartet. Die erzeugte ps-Datei ist einseitig und enthält die Informationen zur Bounding Box, weshalb sie, zumindest soweit ich das verstehe, eigentlich wie eine eps-Datei verwendet werden kann.

Mit dem Programm ghostscript und dem Viewer gsview kann man die ausgelagerten Abbildungen aber auch in richtige eps Dateien umwandeln. Dazu muss man die jeweilige ps-Datei mit gsview öffnen und im Menü File den Eintrag PS to EPS auswählen.

alt text

Anschließend kann man sich unter Help noch Infos anschauen oder mit einem Klick auf Yes die Umwandlung durchführen.

alt text

Der Name der zu erzeugenden eps Datei kann dann noch frei gewählt werden. Allerdings muss die Endung .eps mit angegeben werden, da sie nicht automatisch ergänzt wird.

Vielleicht gibt es aber noch effektivere Wege. Die scheinbar einfachste Möglichkeit - Angabe von dvips -E -o "\image".eps im Code, um direkt eps Dateien zu erhalten - liefert bei mir leider eine Datei mit falsch angegebener Bounding Box.

Permanenter link

beantwortet 21 Feb '14, 16:05

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×731
×298

gestellte Frage: 17 Aug '13, 10:21

Frage wurde gesehen: 15,664 Mal

zuletzt geändert: 09 Jul '14, 16:35