同时使用 pst-rputover 和 tcolorbox 时 Ghostscript 出现错误

同时使用 pst-rputover 和 tcolorbox 时 Ghostscript 出现错误


我可以使用 latex 和 pdflatex <-shell-escape> 在 TL-2019(linux)上编译(无错误)以下 MWE(file.tex) :

\documentclass{article}% 
%
\usepackage[on]{pstricks-pdf}% 
\usepackage{lipsum,pst-rputover,tcolorbox}% 
%
\begin{document} 
\lipsum[1]
\par\bigskip
\begin{tcolorbox}[center,colback=gray!20]%
\begin{pspicture*}(-4.5,-1.25)(4.5,2.5)%
\pspolygon[fillstyle=solid,fillcolor=yellow!20](-2,2)(0,0)(4,0)%
\psline[linewidth=1.2pt](-2,2)(0,0)%
\psline[linewidth=1.2pt](-2,2)(4,0)%
\psline[linewidth=1.2pt](0,0)(4,0)%
\psline[linecolor=blue](-2,2)(2,0)% AM
\psdots[linecolor=blue,dotsize=2pt 0](2,0)%
\rput[tl](1.8,-0.15){$M$}%
\psdots[linecolor=blue,dotstyle=*](4,0)%
\rput[bl](3.87,-0.4){$\mathbf{C}$} %
\psdots[linecolor=blue,dotstyle=*](0,0)%
\rput[bl](-0.14,-0.4){$\mathbf{B}$}%
\psdots[dotstyle=*,linecolor=blue](-2,2)%
\rput[bl](-2.15,2.15){$\mathbf{A}$}%
\pnode(0,-0.75){U}%
\pnode(2,-0.75){V}%
\pnode(4,-0.75){X}%
%
\rputover(U)(V){$m$}%
\rputover(V)(X){$n$}%
\coverable{%
\pcline[linewidth=0.2pt,tbarsize=5pt]{|-}(U)(V)%
\pcline[linewidth=0.2pt,tbarsize=5pt]{|-|}(V)(X)%
}%
%%  uncoverable version
%\pcline[linewidth=0.2pt,tbarsize=5pt]{|-}(U)(V)\ncput*{$m$}%
%\pcline[linewidth=0.2pt,tbarsize=5pt]{|-|}(V)(X)\ncput*{$n$}%
%
\end{pspicture*}%
\end{tcolorbox}%
\par\bigskip
\lipsum[2]
\end{document}

evince file.pdf 和 xpdf file.pdf 都显示完美的输出。

gv file.ps 显示损坏的输出:
错误:恢复时进行类型检查
...
Ghostscript 9.26:无法恢复的错误,退出代码 1
(显示第一段和图片,第二段消失;
evince file.ps 显示空白页)

注释掉%begin{tcolorbox}...%\end{tcolorbox}

%\coverable{% 
... 
%}%

将会消除该错误,但输出会有所不同,如 file.pdf 中所示。

有人能重现这种错误并告诉我们发生了什么吗?

蒂亚,埃德。

答案1

dvips的驱动程序有TikZ缺陷。使用总是 pdflatex --shell-escape或者xelatex使用自己的框架宏:

\documentclass{article}% 
\usepackage{auto-pst-pdf}% 
\usepackage{lipsum,pst-rputover,tcolorbox}% 
\def\PBox#1{%
  \psframebox[fillcolor=gray!20,fillstyle=solid,framearc=0.1,linewidth=2pt,linecolor=black!60]{%
    \makebox[\dimexpr\linewidth-2\psframesep-4pt]{#1}}}

\begin{document} 
    \lipsum[1]
    \par\bigskip\noindent
    \PBox{%
        \begin{pspicture*}(-4.5,-1.25)(4.5,2.5)%
        \pspolygon[fillstyle=solid,fillcolor=yellow!20](-2,2)(0,0)(4,0)%
        \psline[linewidth=1.2pt](-2,2)(0,0)%
        \psline[linewidth=1.2pt](-2,2)(4,0)%
        \psline[linewidth=1.2pt](0,0)(4,0)%
        \psline[linecolor=blue](-2,2)(2,0)% AM
        \psdots[linecolor=blue,dotsize=2pt 0](2,0)%
        \rput[tl](1.8,-0.15){$M$}%
        \psdots[linecolor=blue,dotstyle=*](4,0)%
        \rput[bl](3.87,-0.4){$\mathbf{C}$} %
        \psdots[linecolor=blue,dotstyle=*](0,0)%
        \rput[bl](-0.14,-0.4){$\mathbf{B}$}%
        \psdots[dotstyle=*,linecolor=blue](-2,2)%
        \rput[bl](-2.15,2.15){$\mathbf{A}$}%
        \pnode(0,-0.75){U}%
        \pnode(2,-0.75){V}%
        \pnode(4,-0.75){X}%
        %
        \rputover(U)(V){$m$}%
        \rputover(V)(X){$n$}%
        \coverable{%
            \pcline[linewidth=0.2pt,tbarsize=5pt]{|-}(U)(V)%
            \pcline[linewidth=0.2pt,tbarsize=5pt]{|-|}(V)(X)%
        %%  uncoverable version
        %\pcline[linewidth=0.2pt,tbarsize=5pt]{|-}(U)(V)\ncput*{$m$}%
        %\pcline[linewidth=0.2pt,tbarsize=5pt]{|-|}(V)(X)\ncput*{$n$}%
        %
    }
        \end{pspicture*}%
    }%
    \par\bigskip
    \lipsum[2]
\end{document}

在此处输入图片描述

相关内容