通过 includegraphics 包含 pdf 会破坏 pstricks/auto-pst-pdf

通过 includegraphics 包含 pdf 会破坏 pstricks/auto-pst-pdf

编辑:问题来自于 Opensuse 上 texlive 的破坏性安装(某些软件包未更新,因此 texlive 是 2017 和 2021 的混合)。

似乎较新版本的 pstricks 和/或 (pdf)latex 在通过 includegraphics 和使用 pstricks 代码包含 pdf 时会中断,除非 includegraphics 隐藏在 \ifpdf ... \fi 块内。在我最近更新 texlive 之前,这一直有效。

这是一个简单的例子:

\documentclass[10pt]{article}
\usepackage{ifpdf}
\usepackage{pst-all}
\usepackage[on]{auto-pst-pdf}
\begin{document}

%\ifpdf
\includegraphics[height=3.5cm]{some_pdf_file.pdf}
%\fi

\begin{postscript}
\begin{pspicture}(0,0)(18,10)
\pspolygon[fillstyle=solid,fillcolor=lightgray,linewidth=0](0,3)(0,0)(3,0)(3,3)
\end{pspicture}
\end{postscript}
\end{document}

使用 pdflatex --shell-escape 编译会产生以下错误:

Error: /undefined in obj
Operand stack:
   1   0
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1974   1   3   %oparray_pop   1973   1   3   %oparray_pop   1961   1   3   %oparray_pop   1817   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--
Dictionary stack:
   --dict:736/1123(ro)(G)--   --dict:0/20(G)--   --dict:191/200(L)--   --dict:97/300(L)--   --dict:45/200(L)--
Current allocation mode is local
Current file position is 146540
GPL Ghostscript 9.52: Unrecoverable error, exit code 1
system returned with code 256
PDFCROP 1.40, 2020/06/06 - Copyright (c) 2002-2020 by Heiko Oberdiek, Oberdiek Package Support Group.

!!! Warning: Empty Bounding Box is returned by Ghostscript!
!!!   Page 1: 0 0 0 0
!!! Either there is a problem with the page or with Ghostscript.
!!! Recovery is tried by embedding the page in its original size.

而取消注释 \ifpdf 和 \fi 后错误消失。

答案1

我没有问题

\documentclass[10pt]{article}
\usepackage{pst-all}
\usepackage[pspdf={-dNOSAFER -dALLOWPSTRANSPARENCY}]{auto-pst-pdf}
\begin{document}

\includegraphics[height=3.5cm]{tiger.pdf}

\begin{pspicture}(0,0)(18,10)
\pspolygon[fillstyle=solid,fillcolor=lightgray,linewidth=0](0,3)(0,0)(3,0)(3,3)
\end{pspicture}
\end{document}

但是,使用它lualatex(需要最新的 TeX 发行版)可以让生活变得更轻松......

\RequirePackage{pdfmanagement-testphase}% needed for transparency
\DeclareDocumentMetadata{}
\documentclass[10pt]{article}
\usepackage{pst-all,graphicx}
\begin{document}

\includegraphics[height=3.5cm]{tiger.pdf}

\begin{pspicture}(0,0)(3,3)
\pspolygon[fillstyle=solid,fillcolor=lightgray,linewidth=0](0,3)(0,0)(3,0)(3,3)
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容