PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : draft-Modus in pgfplot ausschalten



dim
29-01-2011, 23:15
Hallo zusammen,

ich verwende das pgfplots-Paket für die Erstellung der Grafiken in meiner wiss. Arbeit. Das Dokument erstelle ich im draft-Modus. Das hat einige Vorteile, z.B. einige Seiten/Kapitel werden nicht eingebunden und somit das Dokument schneller erstellt wird. In den meisten Paketen (graphicx,listings) lässt sich der draft-Modus ausschalten, indem man das Paket mit der "final"-Einstellung einbindet.
z.B. \usepackage[final]{graphicx}

Leider hat pgfplot-Paket eine solche Einstellung nicht, und die Bilder, die mit dem Befehl "tikzexternalize" als PDF gespeichert wurden, werden nur als leeres Viereck mit dem Text "pgflastimage" angezeigt (S. main.pdf im Anhang)



\documentclass[draft]{scrreprt}

\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

\begin{figure}
\begin{tikzpicture}
\begin{axis}
\addplot {x^2};
\end{axis}
\end{tikzpicture}
\caption{Our first external graphics example}
\end{figure}

\begin{figure}
\begin{tikzpicture}
\begin{axis}
\addplot {x^3};
\end{axis}
\end{tikzpicture}
\caption{A second graphics}
\end{figure}

\end{document}


Wie kann ich es umgehen? Gibt's vllt. dafür eine Lösung?

rais
30-01-2011, 11:04
Moin moin,


ich verwende das pgfplots-Paket für die Erstellung der Grafiken in meiner wiss. Arbeit. Das Dokument erstelle ich im draft-Modus. Das hat einige Vorteile, z.B. einige Seiten/Kapitel werden nicht eingebunden und somit das Dokument schneller erstellt wird. In den meisten Paketen (graphicx,listings) lässt sich der draft-Modus ausschalten, indem man das Paket mit der "final"-Einstellung einbindet.
z.B. \usepackage[final]{graphicx}

Leider hat pgfplot-Paket eine solche Einstellung nicht, und die Bilder, die mit dem Befehl "tikzexternalize" als PDF gespeichert wurden, werden nur als leeres Viereck mit dem Text "pgflastimage" angezeigt (S. main.pdf im Anhang)

versuch es mit


\documentclass[draft=true]{scrreprt}

MfG

dim
30-01-2011, 14:22
Hallo rais,

danke sehr für deinen Vorschlag.
Leider wird die Einstellung "draft=true" oder "draft=false" vom scrreprt-Paket nicht unterstützt, d.h. wenn ich es so eingebe, dann wird das Dokument im final-Modus ausgeführt (s. Anhang).



\documentclass[draft=true]{scrreprt}

\usepackage{ifdraft}

\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

\ifdraft{draft-Modus}{final-Modus}

\begin{figure}
\begin{tikzpicture}
\begin{axis}
\addplot {x^2};
\end{axis}
\end{tikzpicture}
\caption{Our first external graphics example}
\end{figure}

\begin{figure}
\begin{tikzpicture}
\begin{axis}
\addplot {x^3};
\end{axis}
\end{tikzpicture}
\caption{A second graphics}
\end{figure}

\end{document}

nixversteh
30-01-2011, 14:58
Hallo zusammen,

ich verwende das pgfplots-Paket für die Erstellung der Grafiken in meiner wiss. Arbeit. Das Dokument erstelle ich im draft-Modus. Das hat einige Vorteile, z.B. einige Seiten/Kapitel werden nicht eingebunden und somit das Dokument schneller erstellt wird. In den meisten Paketen (graphicx,listings) lässt sich der draft-Modus ausschalten, indem man das Paket mit der "final"-Einstellung einbindet.
z.B. \usepackage[final]{graphicx}

Leider hat pgfplot-Paket eine solche Einstellung nicht, und die Bilder, die mit dem Befehl "tikzexternalize" als PDF gespeichert wurden, werden nur als leeres Viereck mit dem Text "pgflastimage" angezeigt (S. main.pdf im Anhang)



\documentclass[draft]{scrreprt}

\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

\begin{figure}
\begin{tikzpicture}
\begin{axis}
\addplot {x^2};
\end{axis}
\end{tikzpicture}
\caption{Our first external graphics example}
\end{figure}

\begin{figure}
\begin{tikzpicture}
\begin{axis}
\addplot {x^3};
\end{axis}
\end{tikzpicture}
\caption{A second graphics}
\end{figure}

\end{document}


Wie kann ich es umgehen? Gibt's vllt. dafür eine Lösung?

Hallo dim,

weiß jetzt nicht genau was du meinst, willst du die Grafiken angezeigt bekommen?

Bei mir (Win 7, Texmaker, texlive 2010) werden die Grafiken angezeigt, wenn ich diese Zeile rausnehme:
\tikzexternalize


Wie gesagt, weiß nicht genau was du haben willst ...

Gruß

Martin

dim
30-01-2011, 15:31
Hi Martin,

Danke für deine Antwort.



weiß jetzt nicht genau was du meinst, willst du die Grafiken angezeigt bekommen?

Bei mir (Win 7, Texmaker, texlive 2010) werden die Grafiken angezeigt, wenn ich diese Zeile rausnehme:
\tikzexternalize


Wie gesagt, weiß nicht genau was du haben willst ...


Ich schreibe eine wiss. Arbeit mit LaTeX und verwende für die Erstellung der Grafiken das pgfplots-Paket. Viele Grafiken werden aus großen Tabellen erstellt, d.h. die Daten werden zur Laufzeit aus den Tabellen (zB data.txt) geladen und gezeichnet. Das hat zwar einen Vorteil, dass ich somit flexibel bleibe und alle Änderungen in den Tabellen beim Erstellen des Dokumentes berücksichtigt werden, ohne dass ich mich darüber extra kümmern soll. Ein Nachteil ist aber, dass die Erstellung des Dokumentes sehr lange dauert (> 60-80 Sekunden). Das kann man auch beheben in dem man im Präambel schreibt:

\usepgfplotslibrary{external}
\tikzexternalize

Dann soll man einmalig (und nach jeder Änderung in den Tabellen) das Dokument mit dem folgenden Befehl starten:

pdflatex -shell-escape main.tex

Damit werden alle Tikz/pgfplots-Grafiken als externe PDF-Dateien gespeichert.
Wenn man dann das Dokument mit "pdflatex main.tex" erstellt, werden einfach die exportierte Grafiken (im pdf-Format) eingebunden ohne sie neue zu erstellen.

Als Ergebnis: das Dokument wird ziemlich schnell "kompiliert" (ca. 20 Sekunden).

Leider übernimmt das pgfplots-Paket direkt den Modus des Dokumentes und ich habe nicht herausgefunden, wie ich den Modus des Paketes beeinflussen kann, so dass es, unabhängig vom Modus des Dokumentes, immer im final-Modus arbeitet.

rais
30-01-2011, 17:32
Moin moin,


Leider übernimmt das pgfplots-Paket direkt den Modus des Dokumentes und ich habe nicht herausgefunden, wie ich den Modus des Paketes beeinflussen kann, so dass es, unabhängig vom Modus des Dokumentes, immer im final-Modus arbeitet.
deshalb ja gerade `draft=true', weil diese Schreibweise nur von der von Dir verwendeten Dokumentklasse unterstützt wird, nicht aber von (zumindest den meisten) Paketen, zu denen dummerweise auch ifdraft -- das Paket kannte ich noch gar nicht -- gehört. Vermutlich hat Heiko sein Paket seinerzeit mit einer KOMA-Script-Klasse getestet, bei der `nur' die Varianten draft/final definiert waren, weise ihn darauf hin oder frage diesbezüglich auf (d)ctt nochmal nach, da liest er mit.


\documentclass[draft=true]{scrreprt}

\usepackage{ifdraft}

\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

\ifdraft{draft-Modus}{final-Modus}

\mbox{und doch wird eine zu lange Zeile als ``Overfull hbox'' entsprechend markiert, siehe hier:}
\end{document}

Eine Alternative wäre vllt zu testen, ob \overfullrule größer Null (draft) oder eben Null (final) gesetzt ist. Aber ob das hier der Weisheit letzter Schluß ist?

MfG

dim
30-01-2011, 19:42
Moin moin,

deshalb ja gerade `draft=true', weil diese Schreibweise nur von der von Dir verwendeten Dokumentklasse unterstützt wird, nicht aber von (zumindest den meisten) Paketen, zu denen dummerweise auch ifdraft -- das Paket kannte ich noch gar nicht -- gehört. Vermutlich hat Heiko sein Paket seinerzeit mit einer KOMA-Script-Klasse getestet, bei der `nur' die Varianten draft/final definiert waren, weise ihn darauf hin oder frage diesbezüglich auf (d)ctt nochmal nach, da liest er mit.

Eine Alternative wäre vllt zu testen, ob \overfullrule größer Null (draft) oder eben Null (final) gesetzt ist. Aber ob das hier der Weisheit letzter Schluß ist?

MfG

Hallo rais,

danke für den Hinweis!

Ich habe mir die Dokumentation von ifdraft-Paket angeschaut (www.bakoma-tex.com/doc/latex/oberdiek/ifdraft.pdf) und es liegt wirklich an dem ifdraft-Paket. Es versteht nur die Optionen "draft" oder "final". Die Einstellung "draft=true" der scrreprt-Klasse wird vermutlich nicht unterstützt.

Gibt es vllt. eine Alternative zu dem ifdraft-Paket für die scrreprt-Klasse?
Wie kann ich überprüfen welchen Modus das Dokument gerade hat?

rais
30-01-2011, 21:42
Moin moin,


Gibt es vllt. eine Alternative zu dem ifdraft-Paket für die scrreprt-Klasse?
Wie kann ich überprüfen welchen Modus das Dokument gerade hat?
wie gesagt, ob das der Weisheit letzter Schluß ist, weiß ich nicht ...


\documentclass[draft=true]{scrreprt}
\newcommand*\iffdraft[2]{%
\ifdim\overfullrule>0pt
#1%
\else
#2%
\fi
}
\begin{document}
\iffdraft{draft-Modus}{final-Modus}
\end{document}


iff -- das fällt mir jetzt erst auf -- wird meist als `if, and only if' verwendet, das ist hier in dieser Form nicht beabsichtigt.

MfG

dim
31-01-2011, 00:42
Hi rais,

danke sehr für deine ausführliche Hilfe! Damit funktioniert es prima!

Eine Frage noch, die mit dem Thema eigentlich nichts zu tun hat.
Ich habe sehr oft in den, meistens low-level, LaTeX-Funktionen gesehen,
dass man am Ende der Zeile noch die "%"-Zeichen schreibt.
Warum schreibt man sie? Ist es ein Relikt aus alten Zeiten?

Viele Grüße,
dim

rstuby
31-01-2011, 06:52
Die %-Zeichen verhindern, dass der Zeilenumbruch als Leerzeichen gelesen wird. "Signifikante Leerzeichen" können einem ansonsten manchmal das Layout zerschießen.

tral
31-01-2011, 07:23
Hallo,

zum ursprünglichen Problem. Soweit ich es sehe, benutzt tikzexternal ja grpahicx zum Einbinden der einmal erzeugten Bilder. Du müsstest also einfach die Option final dem graphicx-Paket übergeben...

Christian.

dim
31-01-2011, 13:05
@rstuby
Danke für die Erklärung!

@tral


zum ursprünglichen Problem. Soweit ich es sehe, benutzt tikzexternal ja grpahicx zum Einbinden der einmal erzeugten Bilder. Du müsstest also einfach die Option final dem graphicx-Paket übergeben...

... das graphicx-Paket habe ich vom Anfang an mit "final" eingebunden. Und mit der Einstellung "draft=true" hat alles auch wunderbar funktioniert, nur konnte ich es nicht feststellen, weil die Überprüfung des Modus falsch war (ifdraft-Paket versteht nur "draft" und "final" [s. oben]).

Also

(1.1) Dokument funktioniert in einem draft-Modus und die pgfplots-Grafiken werden angezeigt
\documentclass[draft=true]{scrreprt}
...
\tikzexternalize
...

(1.2) Dokument funktioniert in einem final-Modus und die pgfplots-Grafiken werden angezeigt
\documentclass[draft=false]{scrreprt}
...
\tikzexternalize
...

(2.1) Dokument funktioniert in einem draft-Modus und die pgfplots-Grafiken werden nicht angezeigt, statt dessen Platzhalter: "lastimage"
\documentclass[draft]{scrreprt}
...
\tikzexternalize
...

(2.2) Dokument funktioniert in einem final-Modus und die pgfplots-Grafiken werden angezeigt.
\documentclass[final]{scrreprt}
...
\tikzexternalize
...