有没有办法知道 PSTricks 包中使用的名称和我们自己的定义在 PostScript 级别的名称冲突?

有没有办法知道 PSTricks 包中使用的名称和我们自己的定义在 PostScript 级别的名称冲突?
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pstricks-add}

\begin{document}

\begin{pspicture}[showgrid=bottom](4,2)
\pstVerb
{
    /a 2 def
    /bb 1 def
}%
\rput(!a bb){First Page}
\end{pspicture}

\end{document}

我的a默认覆盖了 PSTricks 的定义。我需要一种方法来了解这种默认替换。有没有办法知道 PSTricks 包中使用的名称与我们自己的定义在 PostScript 级别上的名称冲突?

答案1

我认为正确的做法是始终在私人词典中做出本地定义以避免出现此问题,但此附言解决了所提出的问题:

序列

 dup where {pop == (already defined) ==} {3 def} ifelse

如果未定义,则将前一个标记定义为 3,如果已定义,则保持不变并发出警告。

测试结果显示 /a 定义为 2,/b 未定义

GS>/a 2 def
GS>/a dup where {pop == (already defined) ==} {3 def} ifelse
/a
(already defined)
GS>a ==
2
GS>/b dup where {pop == (already defined) ==} {3 def} ifelse
GS> b ==
3

a 剩余为 2 但 b 被定义为 3。

答案2

\documentclass{article}
\usepackage{pstricks}\SpecialCoor
\begin{document}

\begin{pspicture}[showgrid=bottom](4,2)
\pstVerb
{  userdict begin
    /a 2 def
    /bb 1 def
  end }
\rput(! userdict begin a bb end){First Page}
\end{pspicture}

\end{document}

相关内容