Я также публикую свое решение. Пожалуйста, сэкономьте свое время и энергию на этом вопросе!
Я столкнулся со странным поведением после обновления 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}