Carregando TikZ3 + PSTricks ao mesmo tempo

Carregando TikZ3 + PSTricks ao mesmo tempo

Também estou postando minha solução. Por favor, economize seu tempo e energia nesta pergunta!

Eu experimentei um comportamento estranho após atualizar o TikZ 2 para o TikZ 3 ao carregar e usar os pacotes TikZ e PSTricks (via auto-pst-pdf) ao mesmo tempo. Por favor, considere esta situação de geração de 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}

Não tive problemas ao usar o TikZ 2, mas recebi esta mensagem de erro com o TikZ 3.

Erro: /typecheck em --div--

Pilha de operandos:

1 2 0,0 TeXcolorcinza 65781,8

Pilha de execução:

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

Pilha de dicionário:

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

O modo de alocação atual é local

A posição atual do arquivo é 601489

GPL Ghostscript 9.10: erro irrecuperável, código de saída 1

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

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

Ainda estou rastreando o problema que tive em um projeto real: não tenho nenhum código de barras. O realproject.pdfarquivo estava vazio e, portanto, pdfcropgerou um erro e não havia versão recortada do arquivo PDF. Meu projeto é enorme, então ainda não consegui emular minha situação real em pequena escala. Se o fizer, estenderei esta pergunta. Ainda assim, não pude entregar o código TeX que gerava esse tipo de erro para um TeXist/editor, porque não consegui ocultá-lo com \batchmodeou \nonstopmode.

Minha pergunta é: como consertar quando o TikZ 3 é carregado para não receber nenhuma mensagem de erro desse tipo como no TikZ 2?

Responder1

Execute-o compdflatex --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}

ou execute-o com xelatexe

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

Responder2

É melhor não saber quanto tempo gastei neste em um projeto real com prazo, pois não recebi nenhum código de barras após atualizar a distribuição TeX Live/TikZ. Claro, eu poderia usar um arquivo TeX separado apenas para os códigos de barras, bem, eu queria resolver isso.

O problema está causando o TikZ 3 com certeza, porque meu código está rodando com o TikZ 2. O auto-pst-pdfpacote está chamando o pst-pdfpacote e chama o shell do sistema ( latex->dvips->ps2pdf->pdfcrop). Basicamente, limitei o carregamento do pacote TikZ 3 ao gerar a saída DVI agrupando o \usepackage{tikz}comando by \ifpdf ... \fiou, alternativamente, por exemplo, em lualatexby \ifcsname directlua\endcsname ... \fi. Se gerarmos um arquivo PDF (a composição propriamente dita) o pacote TikZ 3 é carregado, se gerarmos um arquivo DVI (gerando os códigos de barras no shell do sistema) ignoramos esse carregamento. Então não há mensagem de erro:

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

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

Incluo minha solução e uma visualização da 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}

uma solução

informação relacionada