TikZ
原 文:TikZ package
譯 者:Xovee
翻譯時間:2020年11月09日
TikZ 包
TikZ 也許是 LaTeX 中最複雜也是最強大的繪製圖形的工具。在本篇文章中,我們介紹一些簡單的、基本的功能:線條、點、曲線、圓圈、長方形等。
介紹
我們可以通過定義一些關鍵的引數來繪製圖形,例如:
\begin{tikzpicture}
\draw[gray, thick] (-1,2) -- (2,-4);
\draw[gray, thick] (-1,-1) -- (2,2);
\filldraw[black] (0,0) circle (2pt) node[anchor=west] {Intersection point};
\end{tikzpicture}
首先,你需要引入tikz
包,然後宣告tikzpicture
環境。
在這個例子裡,我們繪製了兩條線和一個點。命令\draw[gray,thick]
繪製了一條線,它的顏色是灰色(gray),線條較粗(thick)。線的起點和終點由(-1, 2)
和(2, -4)
定義,中間用--
分割。
點(point)實際上是一個填充黑色的圓圈(使用命令\filldraw[black]
)。在這個例子中,它的圓心是(0, 0)
,半徑是(2pt)
。點旁邊是一個節點(node),實際上是一個包含文字的方框。點位於框的西邊(west)。
注意:每一個命令之後都有一個分號(;
)。
注意:tikzfigure
環境可以放置在figure
環境或者類似的環境裡。更多資訊請參考這篇文章。
基本的元素:點、線、路徑
本節將會解釋如何建立基礎的圖形元素。這些元素可以組合起來,從而繪製更復雜精細的圖形。
\begin{tikzpicture}
\draw (-2,0) -- (2,0);
\filldraw [gray] (0,0) circle (2pt);
\draw (-2,-2) .. controls (0,0) .. (2,-2);
\draw (-2,2) .. controls (-1,0) and (1,0) .. (2,2);
\end{tikzpicture}
這個例子中有三個基礎的命令:
\draw (-2,0) – (2,0);
這個命令定義了一個線,起點和終點分別是(-2, 0)
和(2, 0)
。
\filldraw [gray] (0,0) circle (2pt);
這個命令建立了一個圓心在(0, 0)
,半徑為(2pt)
的非常小的灰色的點。命令\filldraw
被用來繪製填充顏色的圖形。更多例子請見下一節。
\draw (-2,2) … controls (-1,0) and (1,0) … (2,2);
繪製一個貝塞爾曲線。這個命令裡有四個點:(-2, 2)
和(2, 2)
是它的起始點和終點,(-1, 0
和(1, 0)
是控制點(可以相同,定義了曲線到底有多“曲”)。你可以把這兩個點想象為“吸引點”。
基礎的幾何圖形:圓、橢圓、多邊形
幾何圖形可以從簡單的圖形組合而成,或者使用特殊的命令。我們首先介紹圓、橢圓和弧形。
\begin{tikzpicture}
\filldraw[color=red!60, fill=red!5, very thick](-1,0) circle (1.5);
\fill[blue!50] (2.5,0) ellipse (1.5 and 0.5);
\draw[ultra thick, ->] (6.5,0) arc (0:220:1);
\end{tikzpicture}
\filldraw[color=red!60, fill=red!5, very thick](-1,0) circle (1.5);
我們對這個命令已經很熟悉了,它可以建立一個點。在這裡,我們傳遞了更多的引數:
color=red!60
圓的邊的顏色被設定為百分之六十的紅。這篇文章介紹瞭如何在 LaTeX 中建立你自己定義的顏色。
fill=red!5
圓的填充顏色是更淡的紅色。
very thick
圓的邊的厚度。也可以用在\fill
命令中。
\fill[blue!50] (2.5,0) ellipse (1.5 and 0.5);
建立一個橢圓,圓心是(2.5, 0)
,以及兩個半徑:水平和垂直(1.5和0.5)。注意這裡我們使用了\fill
命令,而不是draw
或filldraw
,這是因為這裡我們不需要去控制外部和內部的顏色。
\draw[ultra thick, ->] (6.5,0) arc (0:220:1);
這個命令會建立一個弧形(arc),引數->
定義了這個弧會有一個尾部箭頭。建立弧形你不僅需要提供起始點,還需要提供三個數字:起始角度、終點角度、半徑。格式為(0:220:1)
。
除了曲線圖形,我們也可以建立直線圖形,語法都是差不多的:
\begin{tikzpicture}
\draw[blue, very thick] (0,0) rectangle (3,2);
\draw[orange, ultra thick] (4,0) -- (6,0) -- (5.7,2) -- cycle;
\end{tikzpicture}
\draw[blue, very thick] (0,0) rectangle (3,2);
長方形是由特殊的命令\rectangle
建立的。你需要提供兩個引數點:一個是起點,一個是對角的點。
\draw[orange, ultra thick] (4,0) -- (6,0) -- (5.7,2) -- cycle;
我們可以通過繪製多個直線來建立多邊形,例如:一個線從(4, 0)
到(6, 0)
,一個線從(6, 0)
到(5.7, 2)
。我們無需指定最後一條線來連線起點和終點,只需要提供cycle
引數。
Diagrams
節點可能是Tikz中最普遍的元素了。在之前的例子裡,我們已經使用過一次節點(node)了。在下面的例子中,我們使用節點來建立diagram。
\begin{tikzpicture}[
roundnode/.style={circle, draw=green!60, fill=green!5, very thick, minimum size=7mm},
squarednode/.style={rectangle, draw=red!60, fill=red!5, very thick, minimum size=5mm},
]
%Nodes
\node[squarednode] (maintopic) {2};
\node[roundnode] (uppercircle) [above=of maintopic] {1};
\node[squarednode] (rightsquare) [right=of maintopic] {3};
\node[roundnode] (lowercircle) [below=of maintopic] {4};
%Lines
\draw[->] (uppercircle.south) -- (maintopic.north);
\draw[->] (maintopic.east) -- (rightsquare.west);
\draw[->] (rightsquare.south) .. controls +(down:7mm) and +(right:7mm) .. (lowercircle.east);
\end{tikzpicture}
這裡有三個基礎的命令:節點定義、節點宣告、連線節點的線。
roundnode/.style={circle, draw=green!60, fill=green!5, very thick, minimum size=7mm}
給tikzpicture
環境傳遞一個引數,定義一種節點(roundnode),這個節點將會是一個圓圈,邊的顏色是green!60
,填充色是green!5
,邊非常粗(very thick),最小的大小是7mm
。下面的命令定義了第二種節點,一個矩形的節點(squarednode)。
\node[squarednode] (maintopic) {2};
這個命令會建立一個squarenode
。這個節點擁有一個id(maintopic
),節點內會顯示數字2
,如果大括號中的內容為空,則不顯示任何內容。
[above=of maintopic]
注意,圖形中除了第一個節點之外,都有一個額外的引數,這個引數定義了這個節點相對於其他節點的位置。例如[above=of maintopic]
代表這個節點應該位於一個名叫maintopic
的節點的上方。你首先需要在文件的序言部分匯入這個命令:\usetikzlibrary{positioning}
。如果你不匯入這個命令,你可以使用above of=maintopic
,不過使用positioning
語法會更方便和強大,例如,你可以使用above=3cm of maintopic
來控制該節點與maintopic
節點之間的距離。
\draw[->] (uppercircle.south) -- (maintopic.north);
這個命令會繪製一個帶箭頭的直線。與之前的語法不同,我們不再指定精確的位置,而是指定起始的點和終止的點(這也是為什麼我們定義節點的id的原因)。
參考指南
在tikz
包中可選的顏色和粗細引數:
引數 | 值 | 示例圖 |
---|---|---|
color | white, black, red, green, blue, cyan, magenta, yellow | |
thickness | ultra think, very thin, thin, thick, very thick, ultra thick |
在你的LaTeX中,可能包含更多可用的顏色。參見這篇文章。
延伸閱讀
更多資訊請見: