我們平常常見的圖檔格式,例如:jpeg, gif, bmp, ico, xpm, png, psd, tiff· · · 等等都是屬 於點陣圖檔。由於他是由固定大小的圖素實際數位化儲存的,所以如果他們放大或縮小,
我們的眼睛就會分辨出不同,甚至放得更大些,還可以看得出「格子」出來(這會造成所 謂的鋸齒狀,jaggies),原來的影像就因此失真了。
9.1.2 向量圖形
向量圖檔儲存的並不是實際各種圖素的資訊,而只是儲存數學運算的基本描述,顯像時再 馬上計算出結果來顯示。例如,以一個圓形圖來說,他的圖檔可能只有儲存圓心所在、圓 的半徑、顏色索引值等資料,要顯示時,馬上計算,然後顯像(在螢幕或印表機上,最後 顯像當然仍是要轉成點陣圖的),但由於每放大、縮小時都會重新計算過,所以,就不會 造成失真了。當然,這會更秏電腦資源,但以目前的電腦軟、硬體進步的情形,這些消秏 都可以控制在可被忍受的範圍。
目前最常見到的向量圖檔,應該就是 eps/pdf, svg· · · 等圖檔,向量字型也是屬於特殊格 式的一種向量圖。一般比較規律性結構的圖,會比較適合使用向量圖,自然界的實體影像 可能就比較適合使用點陣圖了,但科技不會把腳步停下來,將來的數位化會是怎麼樣的情 形就只能用我們的想像力去填補了。
9.2 繪圖工具
繪圖的工具實在是太多了,這裡不可能一一介紹,只能擇要的簡單說明。我們的重點是排 版,因此要知道的是圖形怎麼安置於版面裡頭才會使整個版面協調一致,而不是在繪圖教 學。就請大家自行選個順手的繪圖軟體去熟悉,這類工具,大概都是一理通百理通,畫筆 怎麼用簡單,要畫出像樣的圖出來會比較困難。
9.2.1 原生繪圖工具
這是安裝 TEX/LATEX 系統,不管是哪一種的發行版本都會附上的,但可能會有不易入門 的感覺,一旦抓到到了訣竅,這是不假外求的工具。因此,在這篇文章裡頭,會對這些原 生的繪圖工具多做一些說明。這裡所提到的原生繪圖工具,另外一個好處就是可以使用 CJK 環境,意思當然就是說可以在圖中插入中文及 LATEX 排版後的結果,這恐怕是許多使 用者希望的功能,但一般 GUI 式的繪圖工具就常常無法完整支援了。
第9 章 圖形的處理 9.2. 繪圖工具
1. LATEX 的 picture 環境
在 LATEX 裡頭有個標準內建的圖形環境,那就是 picture 環境,但他只能繪製一些 簡單的圖形,後來也有人寫了 epic 及 eepic package 來增強 picture 環境的功能,
這可說是 LATEX 「原生」的繪圖巨集,雖然功能不是很強,而且是由指令來指揮 繪圖,不容易直觀的轉換過來,但好處是他是和 LATEX 文稿結合在一起,使用的 是 LATEX 的指令,不是另外引用外來的現成圖檔,和 LATEX 的結合當然會比較好。
所以,我們在此會加以簡單介紹。由於 eepic 引用了 PostScript 的指令,使用 pdflatex 時會無法編譯,因此這章只會探討 picture 環境及 epic package。我們會 在第 9.3 節做進一步的說明。
2. PSTricks 巨集
另一個相當有名氣的繪圖巨集組 PSTricks package,功能就相當強了,他仍然是 使用了 PostScript 的指令,所以,在 pdflatex/dvipdfm[x] 常會無法編譯,要 dvips 才有辦法解讀。但另有人寫了 PDFTricks package,可以轉換成 PDF device 認得的指令,所以,在此也會一併簡單介紹他們的使用。我們將會在第 9.4 節做進一 步的介紹。
3. METAPOST 繪圖工具
在 TEX 系統,則有 METAFONT 及 METAPOST 可供繪圖,這可說是 TEX 系統的 標準繪圖語言,但和 TEX 的語法有很大的不同,是一種 object-oriented 式的 macro 語言,功能相當的強大,甚至可以製作字型。METAPOST 是 METAFONT 的改良版 本,主要是讓預設的輸出是 eps 向量圖檔1,而且可以連續處理多個檔案,也可以嵌 入 TEX/LATEX 的語法在裡頭。
目前 Knuth 教授編寫 TAOCP 使用的繪圖工具就是 METAPOST,我們這裡就不探 討METAFONT,在語法上 METAPOST 和 METAFONT 是類同的。由於 METAPOST 所產生的 eps 圖檔,不管是 latex 或是 pdflatex 都可以順利引用,所以將會在第 9.5 節獨立做進一步的說明。
當然,以上的任一個工具,要詳細說明的話,都可以寫成一本獨立的書,所以,在這裡只 能簡單的介紹,沒有提到的部份,可以參考他們的使用手冊。METAFONT 及 METAPOST 則可以另參考 Knuth 教授所寫的 The METAFONTbook 。
1嚴格來說,METAPOST 所產生的圖檔只是 eps 圖檔的一個子集,稱為 mps,我們這裡一併稱他為 eps 圖檔,不做嚴格區分。
第9 章 圖形的處理 9.2. 繪圖工具
9.2.2 外來繪圖工具
我們也可以從其他的外來繪圖工具來繪製圖形,然後再引入圖檔即可,這樣一來就可以使 用自己熟悉的繪圖工具。繪圖的話,當然是以向量圖為優先考慮,因為他不會因為縮放而 失真。但像一些照片類的圖檔,就不太適合使用向量圖了。
以下列出的都是 free 的繪圖工具,一般用途上,功能上不見得會輸商業產品,但使用界面 上就不一定比商業產品方便。以下只做簡單的介紹,至於操作方法,請直接參考其中的使 用手冊的說明。種類很多,請別眼花撩亂了,就選個一、二種去熟悉他吧!畫筆可能很多 種,但畫圖「心法」只有一種。
1. gnuplot
這是個有點古老,但卻非常實用的 XY 及 XY Z 數據資料及數學函數的繪圖工 具,他有內建的繪圖語言來繪圖,可以使用交談式的方式,或寫成檔案來做批次處 理。如果有安裝 kile 的話,他有 GUI 的圖形界面可以用來方便繪圖。他可以輸出 fig 圖檔,供 xfig 做進一步的修改、編輯,也可以輸出 LATEX 的 picture 環境文稿 及 METAPOST 程式碼供引入。幾乎主流的作業系統都有他的版本。他的網站及和 LATEX 結合的一些 sample,可以參考:
http://www.gnuplot.info/
http://www.fnal.gov/docs/products/gnuplot/tutorial/
http://cips02.physik.uni-bonn.de/~baehren/tex/gnuplot.html 2. GNU plotutils
這 是 和 gnuplot 類 似 的 繪 圖 工 具 及 函 式 庫 (GNU libplot for C, libplotter for C++),主要用於繪製 2D 科學數據及數學函數向量圖。他也支援 xfig 的 fig 圖檔。而且有現成的函式庫,對於寫繪圖程式的人來說也很方便,像後面會談到的 pstoedit 就有利用到這個函式庫。他的網站在:
http://www.gnu.org/software/plotutils/
3. xfig
這也是很古老的 X Window System 下的繪圖工具,他的檔案格式是公開的,所 以 gnuplot 也支援他。他相當於 MS Windows 下的 CorelDraw,預設的輸出格式 是 eps 圖檔,但也可以輸出 LATEX picture/epic 文稿。請參考他所附的文件來和 LATEX/gnuplot 配合使用。他的網站在:
http://www.xfig.org/
如果你的平台無法編譯 xfig,可以試試 Java 的 jfig:
第9 章 圖形的處理 9.2. 繪圖工具
http://tech-www.informatik.uni-hamburg.de/applets/javafig/
4. tgif
這 是 和 xfig 類 似 的 向 量 繪 圖 工 具 , 也 可 以 輸 出 eps/pdf 圖 檔 供 LATEX 來引 入,gnuplot 也支援 tgif 圖檔,這個工具和 gif 圖檔是沒有關係的。記得,在好 幾年前接觸 tgif 時,有人把他拿來畫卡通影像,效果還不錯,當然,他的主要用途 不是在畫卡通。他的網站在:
http://bourbon.cs.umd.edu/tgif 5. grace
這是源自於古老的ACE/gr 的 Motif 版本 xmgr2,由於改變版本為GNU GPL 發行,
所以名稱改為 grace,意思是 “GRaphing, Advanced Computation and Exploration of data”,要說是 “Grace Revamps ACE/gr” 也是可以啦!這是類似 gnuplot 的 X Window System 下的繪圖工具,但有漂亮的 GUI 操作界面,是 WYSIWYG 的 2D 數據資料繪圖工具,他需要 Motif 或 LessTif 函式庫,目前尚有少數 xmgr 原來的功 能還沒有完全移植過來。他的網站在:
http://plasma-gate.weizmann.ac.il/Grace/
6. GNU Dia
這很適合拿來畫流程圖、電路圖的一個 X Window System 下的繪圖工具,使用 Gtk+ 函式庫,類似 Windows 下的 Visio。他可以輸出 eps/svg 及一般常見的點陣圖 檔,也可以輸出 METAPOST、LATEX PSTricks 及 xfig 的圖檔。
http://www.lysator.liu.se/~alla/dia/dia.html 7. Ipe
這是一般性的 X Window System 及 Windows 下的繪圖軟體,使用 Qt 函式庫。他 的特點是,主要輸出 pdf 圖檔,並可嵌入 TEX/LATEX 文字,也就是說圖裡頭的文字 可以是 TEX/LATEX 排版出來的結果,也可以輸出 eps 圖檔及 XML 檔。另外一個好 處是,只要是 Ipe 製作出來的 pdf/eps 圖檔,他可以由 Ipe 重新載入後予以再次的編 修,這對於 eps/pdf 檔案的編修非常的方便,這類向量圖檔的編修,一般是比較困 難的,尤其是 pdf 格式。他的網站在:
http://ipe.compgeom.org/
2原始的 ACE/gr 有兩種版本,除了 Motif 的 xmgr 外,還有另一個 XView 的 xvgr 版本,但 XView Widget 和 Motif 之爭,最後是 Motif 勝出。
第9 章 圖形的處理 9.2. 繪圖工具
8. skeneil(sketch)
這在以前,稱為 sketch,是一個一般性用途的繪圖軟體,可以輸出多種向量圖,包 括 svg。他是使用 Python script 語言所寫的。他的網站在:
http://sketch.sourceforge.net/index.html 9. GIMP(GNU Image Manipulation Program)
這是一般性的繪圖軟體,有 X Window System 及 Windows 的版本。但他主要處理 的是點陣圖,類似 Photoshop 軟體。他的網站在:
http://www.gimp.org/
10. MetaGraf
這是 METAPOST 的圖形界面軟體,這樣就可以使用 GUI 的方式來使用 META-POST 的強大繪圖功能了。他是 Java 語言所寫的,所以要先安裝 Java 相關工具組 才行。而且,如果是像製作字型這類精確度要求很高的圖檔的話,可能就不是很合 適了。他的網站在:
http://w3.mecanica.upm.es/metapost/metagraf.php 11. OpenOffice.org
這是整合式的文書處理軟體,裡頭也附有繪圖工具 OpenOffice.org Draw(oodraw,
可單獨拿做繪圖工具)。他的網站在:
http://www.openoffice.org/
12. KOffice
這是另一個整合式的文書處理軟體,裡頭附有許多不同用途的繪圖工具,例 如:Kivio、Karbon、Krita 及 KChart 等, 他們都可以單獨拿來繪圖。他的網站在:
http://www.koffice.org/
9.2.3 圖形轉換工具
由於dvips 只能接受 eps 圖檔及 PostScript 指令,而 pdflatex 則只能接受 pdf/jpeg/png 圖檔,dvipdfm[x] 除了可接受 pdf/jpeg/png 圖檔外,大部份情形下,也可以接受 eps 圖 檔,但硬生生插入的PostScript 指令,則仍然是無法接受,畢竟他是要生成 pdf 檔的,
除非是由 METAPOST 所製作出來的圖檔,不然的話,就得使用轉換工具將他們轉成可被 接受的格式,所幸,這方面的工具還算方便。上一節所提到的繪圖工具,在某種程度上也 是可以轉換圖檔格式。