TikZ3+PSTricksを同時にロードする

TikZ3+PSTricksを同時にロードする

私の解決策も投稿します。この質問に時間と労力を費やさないでください。

auto-pst-pdfTikZ 2 を TikZ 3 にアップグレードした後、TikZ と PSTricks パッケージ (経由) を同時にロードして使用すると、奇妙な動作が発生しました。バーコードを生成するこの状況を考慮してください。

%! 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}

TikZ 2 を使用したときは問題なかったのですが、TikZ 3 ではこのエラー メッセージが表示されました。

エラー: --div-- 内の /typecheck

オペランドスタック:

1 2 0.0 TeXcolorgray 65781.8

実行スタック:

%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--

辞書スタック:

--dict:1180/1684(ro)(G)-- --dict:0/20(G)-- --dict:126/200(L)-- --dict:179/300(L)--

現在の割り当てモードはローカルです

現在のファイル位置は601489です

GPL Ghostscript 9.10: 回復不能なエラー、終了コード 1

PDFCROP 1.38、2012/11/02 - Copyright (c) 2002-2012 Heiko Oberdiek。

==> `bug0001-problem-pics.pdf' に 2 ページ書かれています。

実際のプロジェクトで経験した問題をまだ追跡中です。バーコードがまったく取得されていません。ファイルはrealproject.pdf空だったためエラーが発生し、PDF ファイルの切り取りバージョンはありませんでした。私のプロジェクトは大規模なので、実際の状況を小規模でエミュレートすることはまだできませんでした。エミュレートできたら、この質問を拡張します。それでも、この種のエラーを生成する TeX コードを TeXist/発行者に渡すことはできませんでした。またはpdfcropでそれを非表示にできなかったためです。\batchmode\nonstopmode

私の質問は、TikZ 3 がロードされたときに、TikZ 2 のようなこの種のエラー メッセージが表示されないようにするにはどうすればいいかということです。

答え1

実行するpdflatex --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}

またはxelatex

\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{pst-barcode}
\usepackage{tikz}
\begin{document}
[...]

答え2

TeX Live ディストリビューション/TikZ をアップグレードした後、バーコードが表示されなくなったため、期限のある実際のプロジェクトでこれにどれだけの時間を費やしたかは知らない方がよいでしょう。もちろん、バーコード専用の別の TeX ファイルを使用することもできますが、とにかく、それを解決したかったのです。

私のコードは TikZ 2 で実行されているため、この問題は確実に TikZ 3 で発生しています。パッケージはパッケージauto-pst-pdfを呼び出しておりpst-pdf、パッケージはシステム シェル ( ) を呼び出しています。基本的に、コマンドを でラップするか、代わりに でラップすることlatex->dvips->ps2pdf->pdfcropで、DVI 出力を生成するときに TikZ 3 パッケージの読み込みを制限しました。PDF ファイル (実際のタイプセット) を生成する場合は TikZ 3 パッケージが読み込まれ、DVI ファイル (システム シェルでバーコードを生成) を生成する場合はその読み込みをスキップします。すると、エラー メッセージは表示されません。\usepackage{tikz}\ifpdf ... \filualatex\ifcsname directlua\endcsname ... \fi

PDFCROP 1.38、2012/11/02 - Copyright (c) 2002-2012 Heiko Oberdiek。

==> `bug0001-solution-pics.pdf' に 2 ページが書かれています。

私の解決策とページのプレビューを同封します。

%! 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}

解決策

関連情報