我需要为我的LaTeX文档绘制一些图片,并且我发现手工制作的PostScript似乎很适合(我想以编程方式做东西,需要数学函数等)。我也尝试过TikZ,但看起来过于复杂且很难使用。任何好的postscript绘图库?
但是,使用普通标准PostScript会有点痛苦,因为没有任何绘制图形的标准函数(例如,甚至不是矩形)。
是否有任何PostScript库会包含常见形状的功能并使生活更轻松?在我看来,这个问题应该是相当普遍的。
或者我应该跳过PostScript并转向一些上级系统?哪一个?
我需要为我的LaTeX文档绘制一些图片,并且我发现手工制作的PostScript似乎很适合(我想以编程方式做东西,需要数学函数等)。我也尝试过TikZ,但看起来过于复杂且很难使用。任何好的postscript绘图库?
但是,使用普通标准PostScript会有点痛苦,因为没有任何绘制图形的标准函数(例如,甚至不是矩形)。
是否有任何PostScript库会包含常见形状的功能并使生活更轻松?在我看来,这个问题应该是相当普遍的。
或者我应该跳过PostScript并转向一些上级系统?哪一个?
一些人和许多PostScript驱动程序定义了他们自己的一组绘制形状的过程。 PostScript驱动程序,可以输出下列快捷方式:
/bd{bind def} bind def
/cp{closepath}bd
/gs{gsave}bd
/gr{grestore}bd
/m{moveto}bd
/rm{rmoveto}bd
/l{lineto}bd
/rl(rlineto}bd
/s{stroke}bd
/f{fill}bd
/sf{gs s gr f}bd
/xx{exch}bd
/rect {4 2 roll m 1 index 0 rl 0 xx rl neg 0 rl cp} bd
然后,一个矩形会得出这样的:
0 0 100 100 rect sf
这样做的繁琐确实让的PostScript特别难以对付。 MetaPost如果您的图纸是以编程方式/数学方式生成的,可能会更合适。 MetaPost生成封装的PostScript(您可以将其包含在LaTeX文档中),但它更适合用代数定义绘制图像。
是的,定义我自己的形状函数是我所做的。由于现在必须有成千上万个不同的矩形实现,所以我只是重新发明了轮子。有人会打包自己的功能并将它们提供给其他人是有道理的。 感谢MetaPost上的提示。看起来很有趣,把我引向了Asymptote,它似乎是MetaPost的一个现代版本。 – pafcu 2009-09-11 12:05:10
我喜欢用matplotlib。它可以直接生成postscript和PDF,它是用python编写的,它也可以完成复杂的绘图(因此它的名字)。如果你想直接破解PostScript,你可以在LaTeX中使用psticks,但是你需要通过dvi2ps然后ps2pdf来运行所有的东西来制作PDF文件。你真的想要PostScript或PDF吗?我认为你需要PDF,对吧?
是的,PDF是我的最终目标。我使用PostScript的唯一原因是它是绘图和数学的完美结合。我不确定matplotlib是我在找什么,因为我想要做的是绘制仅部分数学生成的数字。我需要盒子和箭头以及可能任意形状,这可能很难做到用于绘制功能的图书馆?另外,Python代码往往很冗长。不过,我也会仔细看看matplotlib。 – pafcu 2009-09-11 12:09:55
如果你只需要盒子和箭头以及任意形状,你应该使用graphviz并获得自动布局。 – vy32 2009-09-13 01:32:49
我特别需要手动布局。正如其名称所暗示的,Graphviz用于图形。我想画一般的数字。 – pafcu 2009-09-13 12:21:22
好吧,我决定Asymptote是自切片面包以来最好的事情。处理图形和任意图形的处理非常好,并且具有大量的扩展模块(如果您关心的话,包括MetaPost兼容性)。此外,它使用LaTeX排版文本,这非常酷。作为额外的奖励,它甚至直接输出到PDF(或EPS)。
我仍然认为这有点让人难过,尽管如此,仍然没有良好的“PostScript”例程库。
我已经有了很好的结果直接在postscript中构建图像。我发现的一个有用的约定是将对象看作字体中的字形。因此,每个对象都希望将当前点设置在例如左下角,并将当前点留在右下角。你可以把它们放在一个数组中,并通过它:每个对象离开当前点准备下一个。
PGF/TikZ是恕我直言,很容易使用,具有很大的图书馆,使您能够创建一个只大图几行。 – f3lix 2009-11-29 17:04:54