包括一个postscript文件到另一个?

时间:2011-09-28 17:53:17

标签: include preprocessor postscript

我想知道是否有一种标准方法可以包含 postscript 文件到另一个文件。 例如,假设我有第三方程序生成的一个数据文件:

%!PS
\mydata [ 1 2 3 4 5 6       
(...)
1098098
1098099
] def

我希望将其纳入主PS文档

%PS
\processData
{
mydata { (..) } foreach
}

(...)

(data.ps) include %<=== ???

由于

3 个答案:

答案 0 :(得分:3)

您想要的运营商是run

  

字符串运行 -   执行命名文件的内容

不幸的是,如果解释器设置了SAFER选项,则不允许run

编辑:*数学插图的作者Bill Casselman有一个名为psinc的Perl脚本,您可以使用它来“预处理”你的postscript文件,内联所有(...) run个文件

答案 1 :(得分:3)

包含PostScript的标准方法是使代码包含在EPS(Encapsulated PostScript)文件中。有关如何创建封装的PostScript以及如何包含它的规则。请参阅Adobe技术说明5002“封装的PostScript文件格式规范”

简单地在PostScript文件上执行'run'可能会有效,但也可能会导致问题。许多PostScript文件(尤其是第三方生成的文件)将包含可能与您自己的名称冲突的过程定义,并且所包含的程序可能使解释器处于与执行包含文件时不同的状态。至少你应该围绕通过'run'包含的代码执行保存/恢复对。

答案 2 :(得分:3)

我建议使用元解决方案:使用C预处理器或M4预处理器。它们是强大的工具,它们的功能也可以通过其他方式使用,而不仅仅是文件包含。虽然没有问过,但使用Makefile将是自动化整个工作流程的明智之举。通过组合使用预处理器和Makefile,您可以优雅地自动执行复杂的包含处理等。

C预处理器

包含文件:

#include "other.ps"

预处理命令行:

cpp -P main.pps main.ps

M4预处理器

包含文件:

include(other.ps)

预处理命令行:

m4 main.pps > main.ps