Загрузка TikZ3+PSTricks одновременно

Загрузка TikZ3+PSTricks одновременно

Я также публикую свое решение. Пожалуйста, сэкономьте свое время и энергию на этом вопросе!

Я столкнулся со странным поведением после обновления TikZ 2 до TikZ 3 при загрузке и использовании пакетов TikZ и PSTricks (через auto-pst-pdf) одновременно. Пожалуйста, рассмотрите эту ситуацию генерации штрихкодов.

%! 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 появилось это сообщение об ошибке.

Ошибка: /typecheck в --div--

Стек операндов:

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 - Авторские права (c) 2002-2012 принадлежат Хайко Обердику.

==> 2 страницы написано на `bug0001-problem-pics.pdf'.

Я все еще отслеживаю проблему, с которой столкнулся в реальном проекте: у меня вообще нет штрихкодов. Файл realproject.pdfбыл пуст и, следовательно, pdfcropгенерировал ошибку, и не было обрезанной версии файла PDF. Мой проект огромен, поэтому я пока не смог сымитировать свою реальную ситуацию в небольшом масштабе. Если я это сделаю, я расширю этот вопрос. Тем не менее, я не мог передать код TeX, генерирующий такую ​​ошибку, TeXисту/издателю, потому что я не мог скрыть его с помощью \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 3, потому что мой код работает с TikZ 2. Пакет auto-pst-pdfвызывает пакет pst-pdf, а он вызывает системную оболочку ( latex->dvips->ps2pdf->pdfcrop). Я в основном ограничил загрузку пакета TikZ 3 при генерации вывода DVI, обернув команду \usepackage{tikz}в \ifpdf ... \fiили, альтернативно, например, в lualatex. \ifcsname directlua\endcsname ... \fiЕсли мы генерируем файл PDF (фактический набор текста), пакет TikZ 3 загружается, если мы генерируем файл DVI (генерируем штрихкоды в системной оболочке), мы пропускаем эту загрузку. Тогда нет сообщения об ошибке:

PDFCROP 1.38, 2012/11/02 - Авторские права (c) 2002-2012 принадлежат Хайко Обердику.

==> 2 страницы написано на `bug0001-solution-pics.pdf'.

Прилагаю свое решение и предварительный просмотр страницы.

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

решение

Связанный контент