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.pdf
arquivo estava vazio e, portanto, pdfcrop
gerou 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 \batchmode
ou \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 xelatex
e
\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-pdf
pacote está chamando o pst-pdf
pacote 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 ... \fi
ou, alternativamente, por exemplo, em lualatex
by \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}