TikZ

Xovee發表於2020-11-09

原  文: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命令,而不是drawfilldraw,這是因為這裡我們不需要去控制外部和內部的顏色。

\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包中可選的顏色和粗細引數:

引數示例圖
colorwhite, black, red, green, blue, cyan, magenta, yellow在這裡插入圖片描述
thicknessultra think, very thin, thin, thick, very thick, ultra thick在這裡插入圖片描述

在你的LaTeX中,可能包含更多可用的顏色。參見這篇文章

延伸閱讀

更多資訊請見: