歡迎

本站利用 MathJax 顯示數學式子,請安裝 STIX Font 以確保數學式子顯示無誤,安裝方法請參閱 MathJax Font Help

2007年7月21日 星期六

繪圖套件 TikZ 和 PGF

說到 TikZ 和 PGF 這二個繪圖套件,它們的作者就是開發 beamer 的那位 Till Tantau。剛接觸 beamer 的時候,稍微有瞄了一下覺得 PGF 是一個蠻不錯的繪圖工具,語法比原先 LeTeX 內建的環境 picture 要來得豐富許多。而且還有一個原因 PGF 是專為 beamer 設計的。只是對我來說一直沒有繪圖上的需求,所以就不太注意。後來大約在 2005 年左右, Tantau 推出一個進階的版本,那就是 TikZ。看了一下使用手冊,覺得不錯就將它印出來。那時就告訴自己說:如果將來有機會一定要使用 TikZ 這個套件來繪圖。

最近在整理微積分的筆記,需要大量的圖形。於是就趁這個機會學一下 TikZ 的語法。將心得整理一下。首先,我們要先了解座標的表示方法,有直角座標表示法和極座標表示法。沒錯,TikZ 支援這二種座標表示法。直角座標表示

(x,y)
極座標表示
(角度:半徑)
注意,直角座標表示法長度單位可加也可不加,但要加就二個位置都要加,不加的話二個位置都不要加(不加的時候,預設值為公分)。而極座標表示時,半徑的單位一定要加。所以正確的表示法如下:
(1,5), (1cm,5cm), (1mm, 5pt), (30:1cm)
接下來畫直線(從 (0,0) 到 (2,5) 的直線)
\begin{tikzpicture}
  \draw (0,0) -- (2,5);
\end{tikzpicture}
最讓我覺得神奇的地方,是座標還有另一種表示法,那就是取二條直線的交點。例如
(intersection of 0,0--30:1cm and 1,0--1,1)
你會發現這不是線段的交集,而是取直線的交集。接著是畫圓形
\draw 圓心 circle (半徑);
同樣,半徑要有長度單位。畫弧形
\draw 起點 arc 終點;
畫格線(預設每一公分畫一條水平線和垂直線)
\draw 左下點 grid 右上點;
也可以改變成每 0.5 公分畫一條水平線和垂直線
\draw[step=0.5cm] (-1.4,-1.4) grid (1.4,1.4);

最後,TikZ 還能夠畫函數的圖形。例如

\begin{tikzpicture}[domain=0:4]
  \draw plot[id=x] function{x};
\end{tikzpicture}
說明一下,每一個函數要有唯一的 id。這個指令會呼叫外部程式 GNUPLOT, id 是用來存檔案用的。如果你的檔案為 test.tex,那麼函數的部分將會存在 test.x.gnuplot 這個檔案,再使用 GNUPLOT 執行。將結果存為 test.x.table 這個檔案。然後再匯入資料。

一般, TeX 系統會關閉執行外部程式的功能,所以只會產生 test.x.gnuplot 這個檔案,而不會產生 test.x.table。可以下選項

--shell-escape 或 --enable-write18
例如
pdflatex --shell-escape test.tex
當然也可更改 texmf.cnf 的設定,將
shell-escape=f
改為
shell-escape=t

就不用使用額外的選項了。

沒有留言: