PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : shell escape aus latex für gnuplot??



normi
26-05-2008, 20:21
Hallo!!

Ich würde gerne bzw. benutze schon Gnuplot zum erstellen von Diagrammen. Zurzeit mache ich das so:




\usepackage[noshell]{gnuplottex}

\begin{figure}[htbp]
\centering
\begin{gnuplot}[terminal=latex]
set datafile separator ','
set xrange [0:25]
set yrange [0:1.6]
set title 'Vorversuche'
set ylabel 'Absetzhöhe [m]'
set xlabel 'Zeit [h]'
plot \
'Vorversuche.csv' using 1:2 ti 'Braunschweig 7,5 g/L' with linespoints,\
\end{gnuplot}
\caption{bla}
\label{tab:bla}
\end{figure}

Allerdings muss ich dann immer erst compilieren, aus latex raus, gnuplot öffnen, die erstellte .gnuplot ausführen, dann wird die .tex erstellt und dann wieder compilieren... Das geht zwar vom aufwand, wird allerdings nervig wenn man sich das Diagramm öfters anschauen will um verbersserungen vorzunhmen. Bin leider noch icht so fit mit gnuplot dass ich den code immer gleich runterschreiben kann.

ich weiß dass es einen shell escape gibt, allerdings hab ich das bis jetzt nur auf einer Linux Maschine gesehen. Bei Winows klappt das nicht bei mir.

Hat jemand von euch ne Ahnung wie das geht oder geht das einfach nicht. Wäre super wenn mir einer helfen könnte.

MFG Norman

localghost
26-05-2008, 20:31
[...] ich weiß dass es einen shell escape gibt, allerdings hab ich das bis jetzt nur auf einer Linux Maschine gesehen. Bei Winows klappt das nicht bei mir. [...]
Dann schau dir mal ganz genau Abschnitt 3 (Usage) der Anleitung von gnuplottex (http://dante.ctan.org/CTAN/help/Catalogue/entries/gnuplottex.html) an.


MfG
Thorsten¹

normi
26-05-2008, 21:18
Hey...

Ja... habe die optionen [miktex] und [shell] natürlich schonmal ausprobiert.. Dann kommt allerdings die Warnung:


Package gnuplottex warning:Please convert bla.gnuplot manually

Und den Abschnitt mit \include und includegraphic aus der Doku versteh ich nicht ganz, bzw, weiß nicht wo ich den befehlt einbinden soll, falls ich das überhaupt muss :confused:

Oder stell ich mich grad ein bisschen doof an?

Norman

localghost
26-05-2008, 21:39
Du musst natürlich auch den Shell Escape beim jeweiligen Compiler (latex oder pdflatex) aktivieren. Bei einem auf Web2c basierenden System (wie TeX Live unter Linux) fügst Du beim Aufruf von latex das Argument -shell-escape ein ...

latex -src -interaction=nonstopmode -shell-escape dateiname.tex
... und bei MiKTeX halt --enable-write18.

latex --src -interaction=nonstopmode --enable-write18 dateiname.tex
Im Falle von MiKeX das Paket dann mit der Option miktex einbinden. Die Option noshell darfst Du natürlich nicht verwenden, wenn Du die Warnung vermeiden willst.

normi
26-05-2008, 22:10
Ok, das hört sich recht logisch an..

Aber ich hab leider keine Ahnung wo ich das Argument hinschreiben soll. Könntest du mir vielleicht ein kleines Beispiel posten?? Das wäre echt nett... ich benutze Miktex. Hier nochmal mein Diagramm das ich bis jetzt manuell einbinden muss.




\usepackage[miktex]{gnuplottex}

\begin{figure}[htbp]
\centering
\begin{gnuplot}[terminal=latex]
set datafile separator ','
set style line 1 lt 1 lw 1 pt 7 lc 8 ps 0.7
set style line 2 lt 1 lw 1 pt 5 lc 8 ps 0.7
set style line 3 lt 1 lw 1 pt 9 lc 8 ps 0.7
set style line 4 lt 1 lw 1 pt 13 lc 8 ps 0.7
set xrange [0:25]
set yrange [0:1.6]
set title 'Vorversuche'
set xlabel 'Zeit [h]'
plot \
'Vorversuche.csv'using 1:3 ti '2,5 g/L' w linespoints linestyle 1,\
'Vorversuche.csv'using 1:5 ti '5,0 g/L'with linespoints linestyle 2,\
'Vorversuche.csv'using 1:2 ti '7,5 g/L' with linespoints linestyle 3,\
'Vorversuche.csv'using 1:4 ti '10,0 g/L' with linespoints linestyle 4
\end{gnuplot}
\caption{df}
\label{sdffsd}
\end{figure}

Vielen dank im Vorraus

Norman

Und: Gruß an Braunschweig...

normi
27-05-2008, 00:08
Hallo, nach ein bisschen googeln hab ich rausgefunden wo ich das Argument einfügen soll. [Alt+F7] in Profile "Argumente die an den Compiler übergeben werden sollen" Das folgende steht nun zur Zeit drin.. klappt natürlich leider nicht.


latex --src -interaction=nonstopmode --enable-write18 vor.tex "%Wm"

du hattest mir folgendes geschrieben:


latex --src -interaction=nonstopmode --enable-write18 dateiname.tex

Ich hab ein bisschen rumgespielt und verschiedene Varianaten versucht, aber bei keiner Variante hats geklappt. Irgendwas mach ich wohl falsch. Und es kommen immer mind 53 fehler.

Der erste lautet:


Latex must be made using an initex with no format preloaded.

Hier ein paar fragen:
Was ist das "%Wm"?
Wieso muss ich einen Dateinamen angeben? Muss ich dann für jeden shell escape einen neuen namen eintragen?

Vielen dank für die Hilfe

Norms

Donalduck
27-05-2008, 00:46
Bei mir persönlich steht das drinnen (MikTex+Texniccenter):
Pfad:


E:\MiKTeX 2.7\miktex\bin\pdflatex.exe

Argumente...:


-shell-escape -interaction=nonstopmode "%pm"

normi
27-05-2008, 01:30
@Donald

Hab mal bei mir das Argument in deine Version geändert, aber geht immer noch nicht. Komischerweiße erstellt mir latex eine .gunuplot und eine .ps obwohl ich das terminal auf latex gestellt habe. Wo die herkommt weiß ich auch nicht. Latex sagt immer noch ich soll die .gnuplot manuell öffnen. Das Audgabedokument ist weiß and der Stelle wo das Diagramm sein soll.

Übrigens benutzte ich Latex->PS->pdf, weiß allerdings nicht ob das nen einfluß hat.

@all

Noch was. wenn ich den manuellen weg gehe, ist die erstellte .tex anders wenn ich den code dirket in gnuplot eingebe und mir die Graphik anschaue. Die linien ändern sich (z.B. von durchgehend auf gestrichelt), sowie die Punkte auf den linien (statt dreick kreis); die eingestellten styles stimmen also nicht. Weiß jemand woran das liegt?

funktioniert also immer noch nicht. Hat jemand noch ne idee??

Norman

localghost
27-05-2008, 09:14
[…] Noch was. wenn ich den manuellen weg gehe, ist die erstellte .tex anders wenn ich den code dirket in gnuplot eingebe und mir die Graphik anschaue. Die linien ändern sich (z.B. von durchgehend auf gestrichelt), sowie die Punkte auf den linien (statt dreick kreis); die eingestellten styles stimmen also nicht. Weiß jemand woran das liegt? […]
Das mag an deinem gewählten Terminal (latex) liegen. In diesem Fall gibt GnuPlot LaTeX-Code aus, der nur die sehr begrenzten Möglichkeiten der picture-Umgebung aus Standard LaTeX nutzen kann. Ein anderes Terminal wäre also angesagt. Angesichts deiner Bearbeitungsroute würde ich das Terminal postscript vorschlagen. Näheres verrät die Anleitung zu GnuPlot (http://www.gnuplot.info).

[…] funktioniert also immer noch nicht. Hat jemand noch ne idee?? […]
Während die Sache unter Linux ganz reibungslos funktioniert, musst Du unter Windows und bei MiKTeX ein paar Vorarbeiten leisten. Die Ergänzung der Argumente für die Kommandozeile des Compilers hast Du ja schon erfolgreich vorgenommen. Jetzt kommen noch zwei weitere Schritte hinzu. Beide setzen voraus, dass Du dein Betriebssystem zumindest ein bisschen kennst.

Zunächst einmal muss die ausführbare EXE-Datei von GnuPlot den richtigen Namen erhalten. Bei mir musste ich den Namen von wgnuplot.exe demnach in gnuplot.exe ändern. Nicht weiter kompliziert, wenn Du noch weißt, wohin Du einst das Programmarchiv entpackt hast (denn es gibt ja keinen Installer).
Der zweite Schritt ist etwas komplizierter, aber auch machbar. Ich habe das ZIP-Archiv von Gnuplot damals in den Standardpfad für Programme entpackt.

C:\Programme\GnuPlot
Dort befindet sich noch ein Unterverzeichnis mit den ausführbaren Dateien. Bei mir habe ich nun diesen Pfad der Umgebungsvariable PATH hinzufügt (und weil die Einträge für andere Programme bei mir auch so gestaltet sind).

C:\Programme\GnuPlot\bin
Zu den Umgebungsvariablen gelangst Du über die Eigenschaften von "Arbeitsplatz" auf dem Reiter "Erweitert" (unten im Dialog-Fenster). Nach einem Klick darauf siehst Du unten die Liste für die Systemvariablen. Dort suchst Du die Variable PATH und klickst auf "Bearbeiten". Sie enthält schon mehrere Einträge, die durch ein Semikolon getrennt werden (unter anderem auch den Pfad zu den ausführbaren MiKTeX-Dateien). Dort hängst Du den Pfad für die ausführbaren Dateien von Gnuplot an (der bei dir natürlich anders aussehen kann). Bei mir war das System erst ein bisschen zickig. Nach einem Neustart sollte das System die Änderung aber erkennen. Prüfen kannst Du das, indem Du eine Konsole (Eingabeaufforderung) öffnest und dort gnuplot eingibst. Startet das Programm, wird auch der Aufruf durch den LaTeX-Compiler gelingen.

Das alles sollte für dich nicht allzu schwer sein. Ich selbst habe das im Zuge deiner Anfrage auch zum ersten Mal gemacht. Hatte halt bisher auch keinen Bedarf dafür. Und wenn ich das schaffe, schaffst Du das wohl auch. Und es funktioniert bestens. Jetzt gibt es auch für mich keinen Grund mehr, das veraltete egplot (http://dante.ctan.org/CTAN/help/Catalogue/entries/egplot.html) zu benutzen.

Nachtrag:

[...] Hier ein paar fragen:
Was ist das "%Wm"?
Wieso muss ich einen Dateinamen angeben? Muss ich dann für jeden shell escape einen neuen namen eintragen? [...]
"%Wm" ist eine Variable für das TeXnicCenter. Da steht der Dateiname oder sogar der komplette Pfad drin. Die genaue Bedeutung kannst Du in dem Dialog für die Ausgabeprofile rauskriegen. Natürlich musst Du nicht immer einen neuen Namen eingeben. Das war nur ein Beispiel von mir, um dir die Verwendung der Argumente für die Kommandozeile zu zeigen. Trage im TeXnicCenter als Parameter für die Kommandozeile das ein, was ich schon weiter oben geschrieben habe.

--src -interaction=nonstopmode --enable-write18 "%Wm"
Eigentlich sollte jetzt alles reibungslos laufen. Bei mir tut es das.

normi
27-05-2008, 19:19
@localghost

Ja super sache das!! Klappt alles vorzüglich nun! Ich bedanke mich recht herzlich und empfehle allen gnuplottlatex usern das ganze mal auszuprobieren!!

Vielen dank auch für die ausführliche Anleitung. War gar kein Problem, hat alles beim ersten mal geklappt! Selbst ich, der eigentlich nicht so der durchblicker ist, hat das hinbekommen!!

@all
ausprobieren!!

Mr.Beaker
16-12-2012, 15:30
Hallo miteinander,

diese Thema ist zwar schon "bisschen" älter, aber wohl immer noch aktuell. Ich muss dazu sagen, dass ich neu bin in der Thematik.
Benutze Texmaker und habe alle Vorgaben so ausgeführt, wie es localghost beschrieben hat:
1. Umgebungsvariable gesetzt (Starten von Gnuplot aus der Konsole heraus funzt)
2. Optionen in den Konfigurationen wie folgt gesetzt:
pdflatex -synctex=1 --enable-write18 -interaction=nonstopmode %.tex

Bekomme aber nach wie vor die Warnung: Shell escape not enabled.
Benutze:
MikTex 2.9
Texmaker 3.5.2
PDFLaTex

Für Hilfe wäre ich sehr dankbar.

Mr.Beaker
16-12-2012, 17:00
kleines Update: Nachdem ich jetzt alles in eine tikz-Umgebung gepackt habe funktionierts soweit. Hab ebenfalls rausgefunden, dass PSTricks und Tikz nicht miteinander zu tun haben. Anscheinend war Tikz früher im 3D Bereich relativ schwach, was sich aber mit dem tikz 3D Plot Paket geändert hat. Da ich bis jetzt noch nichts nachteiliges gefunden habe und Tikz ganz gut funktioniert werde ich wohl dabei bleiben. Ich hoffe einfach mal, dass in näherer Zukunft kein böses erwachen kommt und ich besser auf PSTricks gesetzt hätte.

Für Meinungen bin ich aber nach wie vor dankbar.

bobmalaria
16-12-2012, 18:49
hi,

richtig, pstricks und tikz sind zwei paar schuhe. bei pstricks steht das PS im namen für Post Script, folglich kann man nicht direkt aus dem latex code in ein pdf kompilieren, sondern muss den umweg über eine *.ps datei gehen. es gib ein paar tools die diese konvertierungen für einen übernehmen und dann klappt es wiederum doch pstricks code in einem mit pdflatex erstellten dokument zu verwenden.
die stärke von pstricks ist, dass es eben die ps-programmiersprache verwendet. es ist dadurch bei mathematischen berechnungen sehr mächtig und auch schnell.

tikz funktioniert direkt mit pdflatex und mit einem paket wie z.b. pgfplots, kann man sehr gut 2D und auch 3D plots erstellen. allerdings kommt man bei plots mit vielen datenpunkten schnell an die grenzen von pdflatex und man bekommt ein "tex capacity exceeded" fehler. da hilft dann nur datenpunkte reduzieren oder mit lualatex kompilieren.
wenn man funktionen berechnet, dann kann man über z.b. pgfplots gnuplot aufrufen. gnuplot nimmt dann die berechnung vor und erstellt daraus eine punktetabelle die dann wiederum eingelesen und geplottet wird.

beim plotten mit tikz sollte man auf jeden fall einen blick auf die externalize library werfen. sie bewirkt, dass tikz-bilder als pdf bild gespeichert werden. so wird nicht bei jedem kompilieren neu berechnet, sondern ein einmalig berechnetes und dann gespeichertes bild eingebunden. das fürht zu sehr viel schnelleren kompilierzeiten was bei vielen plots im dokument deutlich spürbar ist.

persönlich habe ich mich nie in pstricks reingefuchst und pgfplots bietet mit in der Regel alles was ich brauche mit einem sehr anschaulichen manual mit vielen beispielen

josephine
15-08-2013, 13:47
Habe mein unten beschriebenes Problem gerade selbst gelöst und zwar durch folgende Frage, die man sich immer selbst stellen sollte:

"Have you tried turning it off and on again?"

Sorry, falls sich hier jemand unnötig Gedanken gemacht haben sollte.

Hi,

bei mir klappt es leider nicht. Ich erhalte sowohl über Latex als auch pdfLatex die Fehlermeldung

Der Befehl "gnuplot" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

Ich habe den entsprechenden Pfad in den Umgebungsvariablen eingetragen, die enable-write18 und auch die shell-escape Option angegeben und überprüft, ob die gnuplot Datei auch wirklich gnuplot.exe heißt -- das tut sie. Weiter weiß ich leider nicht mehr.

Ich arbeite mit Windows 7, TexMakerX, MikTex.

Vielen Dank.

Hier mein Code:


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

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[domain=0:4]
\draw[very thin,color=gray] (-0.1,-1.1) grid (3.9,3.9);
\draw[->] (-0.2,0) -- (4.2,0) node[right] {$x$};
\draw[->] (0,-1.2) -- (0,4.2) node[above] {$f(x)$};

\draw[color=red] plot[id=x] function{x} node[right] {$f(x) =x$};
\draw[color=blue] plot[id=sin] function{sin(x)} node[right] {$f(x) = \sin x$};
\draw[color=orange] plot[id=exp] function{0.05*exp(x)} node[right] {$f(x) = \frac{1}{20} \mathrm e^x$};
\end{tikzpicture}

\end{document}