Cargando TikZ3+PSTricks al mismo tiempo

Cargando TikZ3+PSTricks al mismo tiempo

También estoy publicando mi solución. ¡Ahorre tiempo y energía en esta pregunta!

Experimenté un comportamiento extraño después de actualizar TikZ 2 a TikZ 3 al cargar y usar los paquetes TikZ y PSTricks (a través de auto-pst-pdf) al mismo tiempo. Considere esta situación de generar códigos de barras.

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

No tuve ningún problema al usar TikZ 2, pero recibí este mensaje de error con TikZ 3.

Error: /typecheck en --div--

Pila de operandos:

1 2 0.0 TeXcolorgris 65781.8

Pila de ejecución:

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

Pila de diccionario:

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

El modo de asignación actual es local.

La posición actual del archivo es 601489

GPL Ghostscript 9.10: error irrecuperable, código de salida 1

PDFCROP 1.38, 02/11/2012 - Copyright (c) 2002-2012 de Heiko Oberdiek.

==> 2 páginas escritas en `bug0001-problem-pics.pdf'.

Todavía estoy rastreando el problema que experimenté en un proyecto real: no tengo ningún código de barras. El realproject.pdfarchivo estaba vacío y por lo tanto pdfcropgeneró un error y no había una versión recortada del archivo PDF. Mi proyecto es enorme, por lo que todavía no pude emular mi situación real a pequeña escala. Si lo hago, ampliaré esta pregunta. Aún así, no pude entregar el código TeX que genera este tipo de error a un TeXist/editor, porque no pude ocultarlo mediante \batchmodeo \nonstopmode.

Mi pregunta es: ¿Cómo solucionarlo cuando se carga TikZ 3 para que no aparezca ningún mensaje de error de este tipo como en TikZ 2?

Respuesta1

Ejecutarlo conpdflatex --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}

o ejecutarlo con xelatexy

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

Respuesta2

Es mejor no saber cuánto tiempo dediqué a este en un proyecto real con fecha límite, ya que no recibía códigos de barras después de actualizar la distribución TeX Live/TikZ. Por supuesto, podría usar un archivo TeX separado solo para los códigos de barras, bueno, quería resolverlo.

El problema seguramente está causando TikZ 3, porque mi código se ejecuta con TikZ 2. El auto-pst-pdfpaquete llama al pst-pdfpaquete y solicita el shell del sistema ( latex->dvips->ps2pdf->pdfcrop). Básicamente, limité la carga del paquete TikZ 3 al generar la salida DVI envolviendo el \usepackage{tikz}comando en \ifpdf ... \fio, alternativamente, por ejemplo, lualatexen \ifcsname directlua\endcsname ... \fi. Si generamos un archivo PDF (la composición tipográfica real) se carga el paquete TikZ 3, si generamos un archivo DVI (generando los códigos de barras en el shell del sistema) nos saltamos esa carga. Entonces no hay ningún mensaje de error:

PDFCROP 1.38, 02/11/2012 - Copyright (c) 2002-2012 de Heiko Oberdiek.

==> 2 páginas escritas en `bug0001-solution-pics.pdf'.

Adjunto mi solución y una vista previa de la página.

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

una solución

información relacionada