定义具有全局范围的 Postscript 程序

定义具有全局范围的 Postscript 程序

如何定义一个 Postscript 过程,其定义不受分页限制,即具有全局范围?这是一个简单示例,其中转换\newpage期间失败后的过程调用ps2pdf

\documentclass{article}
\usepackage{pstricks}

\begin{document}
test
\pstVerb{/printany {256 string cvs print (\string\n) print} def}

\pstVerb{12345 printany}  % works
\pstVerb{(john) printany} % works

\newpage
test
\pstVerb{12345 printany}  % printany undefined
\pstVerb{(john) printany} % --"--

\end{document}

答案1

您可以将带有环境的定义写入filecontents外部文件,然后通过 读取它\pstheader{file}

http://tug.org/mailman/htdig/pstricks/2006/004226.html举个例子

答案2

我找到了一种方法,可以在文档的任何地方对简单或复合的 Postscript 对象(例如过程和数组)进行全局定义。这样,Postscript 变量的内容(例如保存计算结果的内容)可以在文档的后面使用:

\documentclass{article}
\usepackage{pstricks}
\pstVerb{%
  true setglobal    % global allocation mode for PS objects
  globaldict begin  % following definitions being put in the global dictionary
    /printany {256 string cvs print (\string\n) print} def
%   more definitions to follow
  end
  false setglobal
}

\begin{document}
test
\pstVerb{12345 printany}

\pstVerb{ %global definition of array variable
  true setglobal
  globaldict /somearray [(john) (linda) (albert) 5678] put
  false setglobal
}
\pstVerb{somearray 1 get printany} % linda

\newpage
test
\pstVerb{somearray 3 get printany} % 5678

\end{document}

相关内容