Seite 1 von 2

Problem mit pgfplots+gnuplot

Verfasst: Do 14. Mär 2013, 16:29
von Thomas01
Vorab: Ich benutze Windows 7, TeXstudio und MiKTeX

Ich wollte mich heute mit Graphen in Latex beschäftigen und habe mich für das pgfplots-Package entschieden. Anhand des Manuals machte ich die ersten Graphen, stieß jedoch recht bald auf ein Problem: In dem Manual wird einem die Installation von "gnuplot" ans Herz gelegt, weil es diverse Vorteile hat (faster, uses radians for trigonometric functions while plot expression has degrees, ...).
Soweit so gut, ich habe die neueste Version von gnuplot installiert, und wollte folgendes Beispiel aus dem Manual erstellen (Ich hoffe, das hier ist ein korrektes Minimalbeispiel):
\documentclass[paper=a4, fontsize=11pt]{scrartcl} 
\usepackage[utf8]{inputenc} 
\usepackage[ngerman]{babel}

\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
\begin{axis}[xlabel=$x$,ylabel=$\sin(x)$]
% invoke external gnuplot as calculator:
\addplot gnuplot[id=sin]{sin(x)};
\end{axis}
\end{tikzpicture}
\end{document}
Leider bekomme ich dann folgende Fehlermeldung:
! Package pgfplots Error: Sorry, the gnuplot-result file 'Minimalbeispiel.sin.t
able' could not be found. Maybe you need to enable the shell-escape feature? Fo
r pdflatex, this is '>> pdflatex -shell-escape'. You can also invoke '>> gnuplo
t <file>.gnuplot' manually on the respective gnuplot file..

See the pgfplots package documentation for explanation.
Habe mich daraufhin im Manual/Internet informiert und bin zu dem Schluss gekommen, dass TeXstudio nicht auf das gnuplot-Programm zugreifen kann. Dazu müsse man den Ausdruck --shell-escape oder --enable-write18 in die Pdf-LaTeX-Leiste setzen.

Habe daraufhin alles Mögliche ausprobiert:
pdflatex.exe -synctex=1 -interaction=nonstopmode --enable-write18 %.tex
pdflatex.exe -synctex=1 -interaction=nonstopmode -enable-write18 %.tex
pdflatex.exe -synctex=1 -interaction=nonstopmode --shell-escape %.tex
pdflatex.exe -synctex=1 -interaction=nonstopmode --shell-escape %.tex
Natürlich hat nichts funktioniert und es kommt nach wie vor dieselbe Fehlermeldung.
Ich habe mittlerweile 2 Stunden lang sämtliche Foren über die Google-Suchfunktion durchkämmt, um irgendwo die Lösung dieses (anscheinend häufiger auftretenden Problems) zu finden, werde aber nicht schlau.

Ich kann gnuplot.exe über den Ausführen-Befehl durchaus (Win+R) aufrufen, der Pfad lautet dann
C:\Program Files\gnuplot\bin\gnuplot.exe
Hat jemand vielleicht eine Idee, warum das Ganze nicht hinhaut?

Beste Grüße,
Thomas

Verfasst: Do 14. Mär 2013, 17:29
von u_fischer
Nun, dein Dokument ist korrekt und "--shell-escape" ist auch richtig. Also ist wahrscheinlich einfach gnuplot nicht im Pfad.

Was passiert, wenn du in der Eingabeaufforderung oder im Ausführen-Befehl nur "gnuplot" eingibst. Wird es gefunden?

Wenn nicht gib mal im Suchfenster von win7 "umgebungsvariable" ein. Das sollte dich zur Stelle in der Systemsteuerung führen, wo du die PATH-Variable ergänzen kannst.

Verfasst: Do 14. Mär 2013, 17:59
von Thomas01
Wenn ich im Ausführen-Fenster "gnuplot" eingebe, öffnet sich ein Fenster namens gnuplot.exe (Dateipfad: C:\Program Files\gnuplot\bin\gnuplot.exe), ein einfaches Fenster mit weißen Buchstaben auf schwarzem Hintergrund.

Das scheint mir allerdings etwas anderes zu sein als das eigentliche gnuplot-Programm, dieses ist ja ein weißes Fenster, mit allen möglichen Optionen in der oberen Leiste (File, Plot, Expressions, Functions, ...)

Zu der Variablen-Geschichte:

Ich bin in einem Fenster der Systemsteuerung gelandet, das "Umgebungsvariablen für dieses Konto bearbeiten" heißt. Da gibt es eine Variable namens "Path", diese hat den Wert
C:\Users\*Mein Name*\AppData\Roaming\MiKTeX\2.9\miktex\bin\
Jedoch ist mir nicht klar, was du mit "PATH-Variable ergänzen" meinst bzw. was ich jetzt zu tun habe. (Entschuldige, ich bin nicht der Schnellste, wenn es um Sachen am Computer geht, die sich jenseits von Internet und Microsoft Word abspielen :lol:)

Vielen Dank für deine Antwort schonmal,
Thomas

ERGÄNZUNG: Das "schwarze Fenster" heißt in meinem Ordner tatsächlich gnuplot, das weiße hingegen wgnuplot. Muss ich da auch noch was umbenennen? Davon hatte ich schon gelesen...

Verfasst: Do 14. Mär 2013, 18:19
von u_fischer
Wenn "gnuplot" ein Fenster öffnet (ob weiß oder schwarz), dann wird es gefunden und sollte daher eigentlich schon im Pfad sein.

Aber du kannst es nochmal prüfen. Gib "cmd" im Ausführendialog ein. Dann öffnet sich die Eingabeaufforderung. Tippe dort "set" ein. Dann erscheinen einige Informationen unter anderem steht dort "Path=" mit einer Ordnerliste. Befindet sich "C:\Program Files\gnuplot\bin\gnuplot.exe" darunter?

Wenn ja, liegt dein Problem woanders.

Kompiliere mal das hier mit --shell-escape:
\documentclass{article} 

\begin{document} 
\immediate\write18{dir}
\end{document}
Schau dann in die log-Datei. Steht dort (gegen Ende):

runsystem(dir)...executed.

oder

runsystem(dir)...disabled (restricted).


[/code]

Verfasst: Do 14. Mär 2013, 18:29
von Thomas01
Wie du richtig vermutest hast, befindet sich "C:\Program Files\gnuplot\bin\gnuplot.exe" nicht in der Liste hinter Path=... !

Dein vorgegebener Code liefert mir im Log runsystem(dir)...executed.

Verfasst: Do 14. Mär 2013, 18:33
von u_fischer
Thomas01 hat geschrieben:Wie du richtig vermutest hast, befindet sich "C:\Program Files\gnuplot\bin\gnuplot.exe" nicht in der Liste hinter Path=... !
Nun, dann geh nochmal zu dem "Umgebungsvariablen für dieses Konto bearbeiten", und hänge den Pfad an den miktex/bin-Pfad dran (durch Semikolon getrennt).

Verfasst: Do 14. Mär 2013, 19:07
von Thomas01
Hmm, ich habe den Dateipfad von gnuplot.exe soweit drangehängt, er wird dann auch in diesem cmd-Fenster hinter Path= angezeigt, leider immer noch dieselbe Fehlermeldung im TeXstudio.

in der gnuplot\binary-file habe ich ja 3 verschiedene gnuplot-Anwendungen: Einmal "gnuplot" (Konsolen-Anwendung), dann "wgnuplot" (Windowsandwendung mit Menü") und noch "wgnuplot_pipes (Windowsanwendung mit Möglichkeit, Programme auszuführen). Diese Information habe ich aus dem Internet...
Macht es irgendeinen Unterschied, dass diese Anwendungen unterschiedliche Namen haben/welche von denen ich lade? Wenn ich gleich das gesamte "C:\Program Files\gnuplot\bin\" lade, funktioniert es auch nicht...

Außerdem habe ich das hier gefunden http://www.cond-mat.physik.uni-mainz.de ... uplot.html, das beschreibt dasselbe wie die Anweisungen, die du mir gibst. Also ich denke mal, dass das Problem fast gelöst ist, vielleicht bin ich zu tollpatschig um den Dateipfad richtig einzugeben und muss noch rumbasteln bis es klappt, auch wenn mir das komisch vorkäme :?:

Verfasst: Do 14. Mär 2013, 19:35
von u_fischer
Geht mal im Windows explorer zum Ordner in dem sich deine test.tex befindet. Drücke die Shift-Taste und klicke gleichzeitig die rechte Maustaste auf den Ordner. Dann müsste eigentlich im Kontextmenu ein Eintrag "Eingabeaufforderung hier öffnen" erscheinen. Klicke drauf.

Dann tippe in der Eingabeaufforderung
pdflatex --shell-escape dateiname-der-tex-datei
Wenn es damit klappt, dann ist texstudio dein Problem.

Verfasst: Do 14. Mär 2013, 19:50
von Thomas01
TeXstudio scheint dann wohl nicht das Problem zu sein :( Das cmd-Fenster spuckt mir am Ende dieselbe Fehlermeldung aus,
"Sorry, the gnuplot-result file "Minimalbeispiel.sin.table could not be found. Maybe you need to enable the shell-escape feature?" usw....

Könnte es sein, dass irgendetwas das Leerzeichen in "Program Files" nicht mag?!

Verfasst: Do 14. Mär 2013, 19:58
von Thomas01
Dieser verehrte Herr scheinte dasselbe Problem zu haben wie ich: http://de.comp.text.tex.narkive.com/hdy ... -gestartet

Nun, ich werde das Thema erstmal ruhen lassen, ich fürchte, es stiehlt mir sonst nur noch mehr Zeit, ohne letztendlich eine Lösung zu haben.

Ich möchte mich trotzdem herzlich für die Hilfe bedanken, durch die es eigentlich hätte funktionieren sollen... shell-escape arbeitet, der Path ist gesetzt, so wie es sein sollte. Naja, manchmal stellt sich der Computer einfach auf stur :?

Sollte ich meinen Fehler doch noch rauskriegen, werde ich posten, an was es gelegen hat.

Viele Grüße,
Thomas