Seite 1 von 1

pgfplots externe pdf wird nicht erzeugt

Verfasst: Do 16. Feb 2017, 12:39
von Johannes M.
Hallo,

ich habe ein Problem mit der Erstellung externer pgfplots.
Hier ist ein Minimalbeispiel dazu.
 %Test.tex
\documentclass [
	ngerman,
	]{scrreprt}
	
\usepackage{ngerman}
\usepackage[ngerman]{babel}

\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ae} % "schöneres" ß
\usepackage{eurosym}
\usepackage{lmodern}
	
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}

\usepgfplotslibrary{external}
\tikzexternalize[shell escape=-enable-write18]

\begin{document}

\begin{figure}[htp]
	\begin{tikzpicture}
		\begin{axis}[
		title=\textbf{Frequenzspektrum von 10 Hz bis 7 GHz},
		xlabel={f [GHz]},
		ylabel={P [dBm]},
		width=\textwidth,
		]
		
		\addplot [blue, no markers] table{Spiralantenne_Stoersignale.txt};
		
		\end{axis}
	\end{tikzpicture}

\caption[Frequenzspektrum einer Breitbandantenne]{Frequenzspektrum der aufgenommenen Signale einer Breitbandantenne zwischen 10 Hz – 7 GHz}
\label{fig:Spec_Antenna}
\end{figure}

\begin{figure}[htp]
	\begin{tikzpicture}
		\begin{axis}[
		title=\textbf{Übertragungsfunktion einer Bandsperre mit 1,8 GHz},
		xlabel={f [GHz]},
		ylabel={P [dBm]},
		width=\textwidth,
			%xmin=0, xmax=7,
			%ymin=0, ymax=-100,
		]
		\addplot [blue, no markers] table{GF_1_8GHz_8GHz.txt};
		\end{axis}
	\end{tikzpicture}

\caption[Übertragungsfunktion einer Bandsperre mit Grenzfrequenz 1,8 GHz]{Übertragungsfunktion einer Bandsperre mit Grenzfrequenz 1,8 GHz}
\label{fig:Filter_1_8}
\end{figure}

\end{document}
Ich verwende Miktex 2.9 mit Texnic Center

Der erste externe Plot wird problemlos erstellt der zweite nicht.
Es erscheint die Fehlermeldung:

! Package tikz Error: Sorry, the system call 'pdflatex -enable-write18 -halt-on-error -interaction=batchmode -jobname "Test-figure1" "\def\tikzexternalrealjob{Test}"' did NOT result in a usable output file 'Test-figure1' (expected one of .pdf:.jpg:.jpeg:.png:). Please verify that you have enabled system calls. For pdflatex, this is 'pdflatex -shell-escape'. Sometimes it is also named 'write 18' or something like that. Or maybe the command simply failed? Error messages can be found in 'Test-figure1.log'. If you continue now, I'll try to typeset the picture.

In der PDF mit dem gesamten Dokument ist der plot allerdings enthalten

Ich freue mich, wenn mir jemand helfen kann.

Grüße
Johannes

Verfasst: Do 16. Feb 2017, 22:06
von Johannes M.
Sorry, ich habe heute Mittag in der Eile die Textdateien vergessen, die ich in dem Programm einlesen will. Ich füge sie mal noch hinzu, dass ihr das ganze auch testen könnt.

Verfasst: Fr 17. Feb 2017, 07:37
von Gast
Was ist denn mit Test-figure1.log. Darauf wird ja in der Fehlermeldung aus gutem Grund verwiesen. Wenn es die nicht gibt, hast du übrigens das Aktivieren von -shell-escape versäumt. Auch darauf wird in der Fehlermeldung aus gutem Grund hingewiesen.

Ansonsten gibt es die Schnellsuche nach "external" oder "externalize" Auskunft über diverse Gründe, warum das schief gehen kann.

Nein, ich habe keine 100er-KByte an Daten runtergeladen. Von mini kann man da nicht mehr reden.

Verfasst: Fr 17. Feb 2017, 10:45
von u_fischer
16000 Datenpunkte sind ja schon eine Menge. Versuche es mit
\tikzset{external/system call={pdflatex
        \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode --extra-mem-top=3000000
        -jobname "\image" "\texsource"}}

(Relevant ist extra-mem-top=3000000 um dem externen Lauf mehr Speicher zu geben).

Verfasst: Fr 17. Feb 2017, 11:25
von Gast
Warum nicht gleich lualatex verwenden? Das kümmert sich selbst um den benötigten Speicher und wird für pgfplots ohnehin empfohlen.

Ist compat=1.5 wirklich eine gute Wahl? Aktuell ist AFAIK pgfplots 1.14. In den Jahren seit 1.5 sind einige Verbesserungen entstanden.

Das Paket ae ist total veraltet. Das hat auch wenig mit einem schöneren ß zu tun. Wenn man danach lmodern lädt, ist es ohnehin überflüssig.

Die Pakete ngerman und babel sollte man nicht kombinieren. Also \usepackage{ngerman} am besten entfernen.

Kein aktueller LaTeX-Editor verwendet in der Voreinstellung mehr ansinew als Eingabecodierung. Die sind eigentlich alle auf utf8 vorkonfiguriert (und das ist auch gut so).

Ich vermute mal, dass die ganzen Kritikpunkte aus einer total veralteten LaTeX-Vorlage stammen. Solche erweisen sich für Anfänger oftmals als Bumerang: Erst scheinen eine gewisse Mühe durch sie davon zu fliegen. Irgendwann kommt die Arbeit aber mit großem Schwung zurück, knallt einem gegen den Kopf und hinterlässt üble Kopfschmerzen.

Verfasst: Sa 18. Feb 2017, 11:41
von Johannes M.
Vielen Dank für die vielen Ratschläge

Folgendes hat letztendlich funktioniert:
u_fischer hat geschrieben:
\tikzset{external/system call={pdflatex
        \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode --extra-mem-top=3000000
        -jobname "\image" "\texsource"}}
(Relevant ist extra-mem-top=3000000 um dem externen Lauf mehr Speicher zu geben).
Wenn jemand mal das selbe Problem haben sollte, es ist wichtig den Befehl in das Dokument zu setzen. Hat bei mir eine Weile gedauert das raus zu finden, da ich nirgends einen Hinweis finden konnte, wo der Befehl zu setzen ist.

Vielen Dank für die Hilfe