Ich poste auch meine Lösung. Bitte sparen Sie Zeit und Energie für diese Frage!
Ich habe nach dem Upgrade von TikZ 2 auf TikZ 3 ein seltsames Verhalten festgestellt, wenn ich die TikZ- und PSTricks-Pakete (über auto-pst-pdf
) gleichzeitig geladen und verwendet habe. Bitte berücksichtigen Sie diese Situation beim Generieren von Barcodes.
%! latex or pdflatex or xelatex or lualatex
%! with ----shell-escape or --enable-write18
%! bug0001-problem.tex
\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{pst-barcode}
\usepackage{auto-pst-pdf}
\usepackage{tikz}
\begin{document}
My first barcode is:\par
\begin{pspicture}(3,1in)
\psbarcode{978-80-87106-00-6}{includetext guardwhitespace}{isbn}
\end{pspicture}\par
My first QR code is:\par
\begin{pspicture}(1,1in)
\psbarcode{http://www.cstug.cz/}{}{qrcode}
\end{pspicture}\par
\begin{tikzpicture}
\node{Hello World!};
\end{tikzpicture}
\end{document}
Bei der Verwendung von TikZ 2 hatte ich kein Problem, aber bei TikZ 3 erhielt ich diese Fehlermeldung.
Fehler: /typecheck in --div--
Operandenstapel:
1 2 0,0 TeXfarbegrau 65781,8
Ausführungsstapel:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1932 1 3 %oparray_pop 1931 1 3 %oparray_pop 1915 1 3 %oparray_pop 1803 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- --nostringval-- 5 --nostringval-- %repeat_continue --nostringval--
Wörterbuchstapel:
--dict:1180/1684(ro)(G)-- --dict:0/20(G)-- --dict:126/200(L)-- --dict:179/300(L)--
Der aktuelle Zuweisungsmodus ist lokal
Aktuelle Dateiposition ist 601489
GPL Ghostscript 9.10: Nicht behebbarer Fehler, Exitcode 1
PDFCROP 1.38, 02.11.2012 – Copyright (c) 2002-2012 von Heiko Oberdiek.
==> 2 Seiten zu „bug0001-problem-pics.pdf“ geschrieben.
Ich bin immer noch dabei, das Problem zu finden, das ich in einem echten Projekt hatte: Ich habe die Barcodes überhaupt nicht. Die realproject.pdf
Datei war leer und erzeugte daher einen Fehler, und es gab keine zugeschnittene Version der PDF-Datei. Mein Projekt ist riesig, daher konnte ich meine reale Situation noch nicht im kleinen Maßstab emulieren. Wenn ich das tue, werde ich diese Frage erweitern. Trotzdem konnte ich den TeX-Code, der diese Art von Fehler erzeugt, nicht an einen TeXisten/Verlag übergeben, da ich ihn nicht durch oder pdfcrop
verbergen konnte .\batchmode
\nonstopmode
Meine Frage ist: Wie kann ich das Problem beheben, dass beim Laden von TikZ 3 keine Fehlermeldung dieser Art wie bei TikZ 2 angezeigt wird?
Antwort1
Führen Sie es mitpdflatex --shell-escape
\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{pst-barcode}
\usepackage{auto-pst-pdf}
\ifpdf\usepackage{tikz}\fi
\begin{document}
My first barcode is:\par
\begin{pspicture}(3,1in)
\psbarcode{978-80-87106-00-6}{includetext guardwhitespace}{isbn}
\end{pspicture}\par
My first QR code is:\par
\begin{pspicture}(1,1in)
\psbarcode{http://www.cstug.cz/}{}{qrcode}
\end{pspicture}\par
\begin{tikzpicture}
\node{Hello World!};
\end{tikzpicture}
\end{document}
oder führen Sie es mit xelatex
und aus
\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{pst-barcode}
\usepackage{tikz}
\begin{document}
[...]
Antwort2
Es ist besser, nicht zu wissen, wie viel Zeit ich in einem echten Projekt mit Deadline darauf verwendet habe, da ich nach dem Upgrade der TeX Live-Distribution/TikZ keine Barcodes mehr bekam. Natürlich könnte ich eine separate TeX-Datei nur für die Barcodes verwenden, aber ich wollte das Problem lösen.
Das Problem liegt definitiv bei TikZ 3, da mein Code mit TikZ 2 läuft. Das auto-pst-pdf
Paket ruft das pst-pdf
Paket auf und es ruft die System-Shell auf ( latex->dvips->ps2pdf->pdfcrop
). Ich habe das Laden des TikZ 3-Pakets beim Generieren der DVI-Ausgabe grundsätzlich begrenzt, indem ich den \usepackage{tikz}
Befehl mit \ifpdf ... \fi
oder alternativ beispielsweise lualatex
mit umschließe \ifcsname directlua\endcsname ... \fi
. Wenn wir eine PDF-Datei generieren (der eigentliche Satz), wird das TikZ 3-Paket geladen, wenn wir eine DVI-Datei generieren (Generierung der Barcodes in der System-Shell), überspringen wir dieses Laden. Dann gibt es keine Fehlermeldung:
PDFCROP 1.38, 02.11.2012 – Copyright (c) 2002-2012 von Heiko Oberdiek.
==> 2 Seiten zu „bug0001-solution-pics.pdf“ geschrieben.
Anbei meine Lösung und eine Seitenvorschau.
%! pdflatex or xelatex or lualatex
%! with ----shell-escape or --enable-write18
%! bug0001-solution.tex
\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{pst-barcode}
\usepackage{auto-pst-pdf}
\ifpdf
% This is another approach when running lualatex:
% \ifcsname directlua\endcsname
\usepackage{tikz}
% Plus loading tikz libraries...
\else
% Or run \batchmode or \nonstopmode as pst-pdf does...
\newenvironment{tikzpicture}[1]{}{}
\def\tikzset{}
\fi
\begin{document}
My first barcode is:\par
\begin{pspicture}(3,1in)
\psbarcode{978-80-87106-00-6}{includetext guardwhitespace}{isbn}
\end{pspicture}\par
My first QR code is:\par
\begin{pspicture}(1,1in)
\psbarcode{http://www.cstug.cz/}{}{qrcode}
\end{pspicture}\par
\begin{tikzpicture}
\node{Hello World!};
\end{tikzpicture}
\end{document}