老牌画图工具pic


工具有两种,“所见即所得”和“所想即所得”。前者比如Viso/Word,后者比如pic/LaTeX。pic和Viso都是画图软件,我和pic的缘分始于陈硕先生的著作——《Linux多线程服务端编程》。看完这本书我有个小小的疑问:作者用的画图工具是什么?后来得知是pic。其实dmr和Brian W. Kernighan所写的那本传世名著<The C Programming Language>中的插图就是用的pic,Unix环境高级编程中的插图也是用pic做出来的。pic也是贝尔实验室开发的。 这两本经典书籍都是用troff出版的,关于troff有兴趣的读者可以去自己挖掘。

其实某种程度上书籍的排版工具可以反映这本书的质量,由troff和LaTeX出版的几乎都是好书。不信你看,下面列出的书籍都是troff出版的。

  1. Unix环境高级编程
  2. Unix网络编程
  3. C程序设计语言
  4. 计算机网络-第三版
  5. TCP/IP协议系列
  6. 程序设计实践

这个网站上列出了用troff出版的书籍:传送门

关于PIC其实不不需要我介绍太多,因为这个东西本身也很简单。其实更重要的原因是Kernighan已经写了一篇manual来教大家如何使用pic,Eric Raymond(《Unix编程艺术》的作者)也写了一篇tutorial。我在这里给出这两篇文章的链接,有兴趣的同学自己去看去尝试吧。我向您保证,2个小时绝对能看完。

大家还记得C圣经里面的这幅插图吗?

这个图表就是用pic画出的。它的pic代码如下:

.PS
define ndblock { box wid boxwid
/2 ht boxht/2 down; box same with .t at bottom of last box; box same } boxht = .2; boxwid = .3; circlerad = .3; dx = 0.05 down; box; box; box; box ht 3*boxht "." "." "." L: box; box; box invis wid 2*boxwid "hashtab:" with .e at 1st box .w right Start: box wid .5 with .sw at 1st box.ne + (.4,.2) "..." N1: box wid .2 "n1"; D1: box wid .3 "d1" N3: box wid .4 "n3"; D3: box wid .3 "d3" box wid .4 "..." N2: box wid .5 "n2"; D2: box wid .2 "d2" arrow right from 2nd box ndblock spline -> right .2 from 3rd last box then to N1.sw + (dx,0) spline -> right .3 from 2nd last box then to D1.sw + (dx,0) arrow right from last box ndblock spline -> right .2 from 3rd last box to N2.sw-(dx,.2) to N2.sw+(dx,0) spline -> right .3 from 2nd last box to D2.sw-(dx,.2) to D2.sw+(dx,0) arrow right 2*linewid from L ndblock spline -> right .2 from 3rd last box to N3.sw + (dx,0) spline -> right .3 from 2nd last box to D3.sw + (dx,0) circlerad = .3 circle invis "ndblock" at last box.e + (1.2,.2) arrow dashed from last circle.w to last box chop 0 chop .3 box invis wid 2*boxwid "ndtable:" with .e at Start.w
.PE

编译这个程序的步骤也很简单

pic hashtab.pic | groff | ps2eps > hashtab.eps
epstopdf hashtab.eps

如此就生成了pdf,再把pdf转成图片就OK了。

请确定pic,groff,pstoeps,epstopdf已经安装。没有的话请自行安装。groff是troff的变种,其他的都是LaTeX的套件。

Manual By Kernighan

Tutorial By Raymond


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM