Postscript 后记语法困难

Postscript 后记语法困难,postscript,Postscript,在尝试创建一个postscript文件时遇到困难,该文件将根据开头的字符串以不同的方式输出。我可以执行以下操作并创建有效的postscript文件: /x (string) def /Times-Roman findfont 12 scalefont setfont newpath 100 200 moveto (sdbc) show 然后,我试着用if语句来包装它 /x (string) def x (string) eq { /Times-Roman fin

在尝试创建一个postscript文件时遇到困难,该文件将根据开头的字符串以不同的方式输出。我可以执行以下操作并创建有效的postscript文件:

/x (string) def

  /Times-Roman findfont
  12 scalefont
  setfont
  newpath
  100 200 moveto
  (sdbc) show
然后,我试着用if语句来包装它

/x (string) def

x (string) eq {
  /Times-Roman findfont
  12 scalefont
  setfont
  newpath
  100 200 moveto
  (sdbc) show } if
这将创建一个无效的postscript文件。任何关于postscript语法的提示都将不胜感激

我在ubuntu上使用Document Viewer,我相信它被用作解释器。

字符串(和其他复合)对象只有在它们是相同对象时才是相同的,而不是在它们的内容相同时。在C语言中,只有当它们是同一个指针时,它们才是等价的

因此:

y等于x,z既不等于x也不等于y。如果要测试字符串的内容是否相同,则需要使用get运算符单独检查每个位置的字符,没有strcmp或类似运算符


复合对象的行为是PostScript中一个重要且经常被忽略的点。

它是ubuntu的文档查看器,非常敏感。如果遇到此问题,请尝试使用ghostscript。

在Mac OS X上,这两个文件都可以正常工作(并提供相同的输出)。您会收到什么错误消息?事实上,代码没有任何(*)错误*大多数情况下,您不需要
newpath
。这是一种偏执的风格。我发现是翻译。我最终使用了ghostscript,一切都很好。不过谢谢你的建议。字符串与数组或dict不同,用于比较
gsnd-c'(abc)(abc)eq='
打印
true
。此处不严格相关,但字符串的不同之处在于其内容不受
save
restore
的影响(但不受其存在的影响)。但是字符串在特定的环境中有一个独特的行为,这并不是直接从它们的复合性质中产生的。。。。你的最后一句话绝对正确。但其余的都是错误的概括。
/x (string) def
/y x def
/Z (string) def