metapost 是一個可以讓你畫出非常高品質圖形的工具,它是我看過最棒的畫圖工具之一,我的論文都是用它來畫的,之所以選擇它是因為我需要用 tex 打數學式子與中文,如果只是要單純的數學式子不需要中文的話,另一套 ePiX 也是可以考慮看看,它畫出的圖形也是很漂亮。
想學 metapost 當然是先去從李果正先生的果正札記看起是最好的,不過要真的看完其實要花上一段時間的,以下是個小範例,示範如何將自己的資料畫出來,並加上數學式子與中文。
假設我們要畫的資料檔 probvar.d 內容如下:
3 0.621488417939872
4 0.822079842286841
5 0.865450961064564
6 0.91030064070971
7 0.90438639724002
8 0.913750616067028
9 0.926071956628881
10 0.924593395761459
11 0.930507639231148
12 0.936421882700838
13 0.932479053721045
14 0.931000492853623
15 0.924593395761459
16 0.93198620009857
17 0.935929029078364
18 0.94135041892558
19 0.95069033530572
20 0.938856015779093
而我們的 metapost 檔 probvar.mp 內容為:
verbatimtex %&latex \documentclass{article} \usepackage{CJK} \begin{document} \begin{CJK}{UTF8}{cwhbc} etex input graph beginfig(1) draw begingraph(3in,2in); glabel.lft(btex \vbox{\hbox{觀測值 $Y_{t,B+i}$ 之} \hbox{預測區間覆蓋機率}} etex, OUT); glabel.bot(btex $t$ etex, OUT); gdraw "probvar.d" withpen pencircle scaled 1.0pt; for y=0.6,0.7,0.8,0.9,0.95: grid.lft(format("%g",y), y) withcolor .85white; endfor autogrid(grid.bot,) withcolor .85white; gdraw "probvar.d" withpen pencircle scaled 1.0pt; endgraph; endfig; verbatimtex \end{CJK} \end{document} etex end
而要產生圖形就直接呼叫 mpost
來處理:
$ mpost probvar.mp
這個指令會產生 probvar.1 這個檔案,而要轉成 eps 檔的話,我是使用 mps2eps 這隻小 script 來轉檔:
$ mps2eps probvar.1
轉出來的 eps 檔就可以直接用在 LaTeX 或是任何地方了。事實上如果只是簡單圖形用在 TeX 中,可以直接使用 probvar.1 這個檔,不過我之前的經驗是有時候這樣直接加進 TeX 檔中會出錯,尤其是有用到中文的時候,我懶得處理這些麻煩,就直接全部轉成 eps 檔再來使用,一勞永逸。