我需要为我的 LaTeX 文档画一些图片,并且我发现手工制作的 PostScript 似乎很合适(我想以编程方式做一些事情,需要数学函数等)。我也尝试过 TikZ,但这似乎过于复杂且难以使用。
然而,使用普通的标准 PostScript 有点痛苦,因为实际上并没有任何用于绘制形状的标准函数(例如,甚至没有矩形)。
是否有任何 PostScript 库包含常见形状的功能并使生活更轻松?在我看来,这个问题应该是相当普遍的。
还是我应该跳过 PostScript 并继续使用一些更高级的系统?哪一个?
我需要为我的 LaTeX 文档画一些图片,并且我发现手工制作的 PostScript 似乎很合适(我想以编程方式做一些事情,需要数学函数等)。我也尝试过 TikZ,但这似乎过于复杂且难以使用。
然而,使用普通的标准 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 文档中),但它更适合绘制具有代数定义的图像。
我喜欢使用 matplotlib。它可以直接生成 postscript 和 PDF,它是在 python 中的,它还可以做非常复杂的绘图(因此它的名字)。如果你想直接破解 PostScript,你可以在 LaTeX 中使用 psticks,但是你需要通过 dvi2ps 运行所有东西,然后通过 ps2pdf 来制作 PDF。你真的想要 PostScript 或 PDF 吗?我认为您想要PDF,对吗?
好的,我认为Asymptote是自切片面包以来最好的东西。可以很好地处理图形和任意图形的绘制,并且有大量的扩展模块(如果你关心的话,包括 MetaPost 兼容性)。此外,它使用 LaTeX 排版文本,这非常酷。作为额外的奖励,它甚至可以直接输出到 PDF(或 EPS)。
我仍然觉得有点遗憾,虽然没有好的 PostScript 例程库。
我在后记中直接构建图像取得了很好的效果。我发现的一个有用的约定是将对象视为字体中的字形。因此,每个对象都希望将当前点设置在左下角,并将当前点留在右下角。您可以将它们放在一个数组中并遍历它:每个对象都将当前点留给下一个对象。
生成SVG,然后使用iText和/或Inkscape 之类的东西以编程方式转换为 PDF/PS。我以这种方式构建了一个发布堆栈,结果非常好。
有很多 postscript 库请看这里 http://www.ericlindsay.com/computer/printing.htm 和这里 http://www.tinaja.com/post01.shtml 和这里 http://seit.unsw.adfa。 edu.au/staff/sites/gfreeman/qs.html