TikZ3+PSTricks 동시에 로드

TikZ3+PSTricks 동시에 로드

나는 또한 내 솔루션을 게시하고 있습니다. 이 질문에 시간과 에너지를 절약하십시오!

auto-pst-pdfTikZ 및 PSTricks 패키지( 를 통해 )를 동시에 로드하고 사용할 때 TikZ 2를 TikZ 3으로 업그레이드한 후 이상한 동작을 경험했습니다 . 바코드 생성 상황을 고려해 보시기 바랍니다.

%! 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 TeXcolor회색 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 - Heiko Oberdiek의 저작권 (c) 2002-2012.

==> `bug0001-problem-pics.pdf'에 2페이지가 작성되었습니다.

실제 프로젝트에서 겪었던 문제를 계속 추적하고 있습니다. 바코드가 전혀 없습니다. 파일 realproject.pdf이 비어 있어서 pdfcrop오류가 발생했으며 PDF 파일의 잘린 버전이 없습니다. 제 프로젝트는 규모가 커서 아직은 소규모로 실제 상황을 에뮬레이션할 수 없었습니다. 그렇다면 이 질문을 확장하겠습니다. 그럼에도 불구하고 나는 이런 종류의 오류를 생성하는 TeX 코드를 TeXist/출판자에게 넘겨줄 수 없었습니다. 왜냐하면 나는 그것을 \batchmode또는 로 숨길 수 없었기 때문입니다 \nonstopmode.

내 질문은: TikZ 2에서와 같이 이런 종류의 오류 메시지가 표시되지 않도록 TikZ 3가 로드될 때 문제를 해결하는 방법은 무엇입니까?

답변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)을 호출합니다. 기본적으로 \usepackage{tikz}명령을 by \ifpdf ... \fi또는 lualatexby 로 래핑하여 DVI 출력을 생성할 때 TikZ 3 패키지의 로딩을 제한했습니다 \ifcsname directlua\endcsname ... \fi. PDF 파일(실제 조판)을 생성하면 TikZ 3 패키지가 로드되고, DVI 파일(시스템 셸에서 바코드 생성)을 생성하면 해당 로딩을 건너뜁니다. 그러면 오류 메시지가 없습니다.

PDFCROP 1.38, 2012/11/02 - Heiko Oberdiek의 저작권 (c) 2002-2012.

==> `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}

해결책

관련 정보