Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

02 Aug '14, 22:09

cfeuersaenger's gravatar image

cfeuersaenger
3.7k23

Das ist entweder ein bug oder zumindest eine Schwaeche in der External lib. Ich schreibe das als bug report fuer die Bibliothek auf, vielleicht kann ich es beheben. ---------- Details: Wie schon in den Kommentaren richtig vermutet, hat es etwas mit mehrfachausfuehrung und Externalisierung zu tun. Hier etwas genauer: _ohne_ externalisierung klappt es erst nach dem zweiten Kompile vorgang, d.h. nach pdflatex Diplomarbeit pdflatex Diplomarbeit _Mit_ externalisierung ist das ganz aehnlich - das _Bild_ muss zweimal uebersetzt werden. Genauer: pdflatex -shell-escape Diplomarbeit pdflatex -shell-escape Diplomarbeit schlaegt fehl (denn das _Bild_ wurde nur einmal waehrend des ersten vorgangs externalisiert und wird danach nicht mehr gelesen). Wenn man aber pdflatex -shell-escape Diplomarbeit pdflatex -shell-escape -halt-on-error -interaction=batchmode -jobname "BF+WA-sTE+KFsNoLI90" "\def\tikzexternalrealjob{Diplomarbeit}\input{Diplomarbeit}" pdflatex -shell-escape Diplomarbeit eingibt, klappt es. Der kryptische Befehl stammt dabei aus dem LaTeX `.log` file, da steht naemlich ===== 'mode=convert with system call': Invoking 'pdflatex -shell-escape -halt-on-error -interaction=batchmode -jobname "BF+WA-sTE+KFsNoLI90" "\def\tikzexternalrealjob{Diplomarbeit}\input{Diplomarbeit}"' ======== This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013) Vermutlich sollte das Bild zweimal externalisiert werden. Falls Du Linux verwendest, koennte \tikzexternalize[mode=list and make] helfen. Dann muesstest Du es mit pdflatex Diplomarbeit make -f Diplomarbeit.makefile make -f Diplomarbeit.makefile pdflatex Diplomarbeit uebersetzen. Interessanterweise bekommt der naemlich mit, dass die Referenzen nicht ordentlich gesetzt sind. Ich denke, die `external` lib sollte auch fuer den standardmodus pruefen, ob Referenzen noch zu beheben sind und ggf. neu externalisieren... Fuer diesen konkreten Fall koennte man auch ueberlegen, warum man fuer eine Vorwaertsreferenz denn _ueberhaupt_ zweimal kompilieren muss.muss. -------- ***Achtung: Nicht-verwandte Best-practise:*** Beim Bearbeiten Deines Codes ist mir aufgefallen, dass Du \tikzexternalize[prefix=figures/]{Diplomarbeit} schreibst. Damit hast Du den Namen der Hauptdatei explizit nochmal in der Hauptdatei referenziert; wenn Du jemals mal die Datei als Vorlage fuer eine Neue nehmen willst, beisst Dich das. Leider war das so in der ersten Version der external lib notwendig; mitlerweile kannst Du aber einfach \tikzexternalize[prefix=figures/] schreiben, und es funktioniert unabhaengig vom Namen der Hauptdatei richtig. Letzteres ist deshalb zu verwenden.
Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

02 Aug '14, 22:05

cfeuersaenger's gravatar image

cfeuersaenger
3.7k23

Das ist entweder ein bug oder zumindest eine Schwaeche in der External lib. Ich schreibe das als bug report fuer die Bibliothek auf, vielleicht kann ich es beheben. ---------- Details: Wie schon in den Kommentaren richtig vermutet, hat es etwas mit mehrfachausfuehrung und Externalisierung zu tun. Hier etwas genauer: _ohne_ externalisierung klappt es erst nach dem zweiten Kompile vorgang, d.h. nach pdflatex Diplomarbeit pdflatex Diplomarbeit _Mit_ externalisierung ist das ganz aehnlich - das _Bild_ muss zweimal uebersetzt werden. Genauer: pdflatex -shell-escape Diplomarbeit pdflatex -shell-escape Diplomarbeit schlaegt fehl (denn das _Bild_ wurde nur einmal waehrend des ersten vorgangs externalisiert und wird danach nicht mehr gelesen). Wenn man aber pdflatex -shell-escape Diplomarbeit pdflatex -shell-escape -halt-on-error -interaction=batchmode -jobname "BF+WA-sTE+KFsNoLI90" "\def\tikzexternalrealjob{Diplomarbeit}\input{Diplomarbeit}" pdflatex -shell-escape Diplomarbeit eingibt, klappt es. Der kryptische Befehl stammt dabei aus dem LaTeX `.log` file, da steht naemlich ===== 'mode=convert with system call': Invoking 'pdflatex -shell-escape -halt-on-error -interaction=batchmode -jobname "BF+WA-sTE+KFsNoLI90" "\def\tikzexternalrealjob{Diplomarbeit}\input{Diplomarbeit}"' ======== This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013) Vermutlich sollte das Bild zweimal externalisiert werden. Falls Du Linux verwendest, koennte \tikzexternalize[mode=list and make] helfen. Dann muesstest Du es mit pdflatex Diplomarbeit make -f Diplomarbeit.makefile make -f Diplomarbeit.makefile pdflatex Diplomarbeit uebersetzen. Interessanterweise bekommt der naemlich mit, dass die Referenzen nicht ordentlich gesetzt sind. Ich denke, die `external` lib sollte auch fuer den standardmodus pruefen, ob Referenzen noch zu beheben sind und ggf. neu externalisieren... Fuer diesen konkreten Fall koennte man auch ueberlegen, warum man fuer eine Vorwaertsreferenz denn _ueberhaupt_ zweimal kompilieren muss.