出于某些原因笔者最近在折腾TikZ,考虑到以后可能很少用这个,因此先记录在这里,以备偶尔使用。

TikZ宏包:

\usepackage{tikz}

有时可能会需要用到TikZ的其他library,就在上面那条命令后用usetikzlibrary命令添加,如:

\usepackage{tikz}
\usetikzlibrary{graphs,qoutes}

一般绘图可以在figure环境中绘图,也可以不用,考虑到\caption\label的需求,还是在figure环境中搞吧。绘图可以直接用\tikz命令也可以用tikzpicture环境,考虑到易读性和美观,还是用后者吧。一般绘图可以:

\usepackage{tikz}
...
\begin{figure}[htbp]
        \centering
        \begin{tikzpicture}
            \node (A) at (0,0) {$A$};
            \node (B) at (2,0) {$B$};
            \node (C) at (-2,0) {$C$};
            \node (D) at (4,0) {$A$};
            \draw[->] (A) -- (B) node[midway,above] {$f$};
            \draw[->] (C) -- (A) node[midway,above] {$g$};
            \draw[->] (B) -- (D) node[midway,above] {$f^{-1}$};
            \draw[->] (A) .. controls (2,-1) .. (D) node[midway,below] {$f\circ f^{-1}=\mathrm{id}_A$};
        \end{tikzpicture}
    \end{figure}

注意TikZ是要有分号的。对应的图:

\node命令用来指定节点:

\node (节点标识符) at (节点坐标) {文本};

\draw命令用来连线画图,多种用法:

\draw[参数] (坐标) -- (坐标) -- (坐标);

画曲线就用controls命令:

\draw[参数] (起点坐标) .. controls (坐标A) and (坐标B) ... (终点坐标);

坐标A和坐标B用来给出曲线的切矢方向:例如以坐标A为终点,起点坐标为起点的矢量与曲线在起点坐标处的切矢平行;以坐标B为终点,坐标A为起点的矢量与曲线在坐标A处的切矢平行。

也可以直接指定曲线的种类和相关参数,如画圆和画抛物线:

\draw (0,0) circle [radius=1cm];%\draw (圆心坐标) circle [radius=半径]
\draw (0,0) parabola[bend at end] (1,1.5);%\draw (起点坐标) parabola[参数,这里是给定抛物线顶点在线末] (终点坐标);
\draw (0,0) parabola bend (1,1.5) (1,1.5); %\draw (起点坐标) parabola bend (抛物线顶点坐标) (终点坐标);

还有很多功能,用到再说。

\draw命令后接参数用来在曲线上标记,也就是之前的图里的f,g之类的。如之前的例子里:

\draw[->] (A) -- (B) node[midway,above] {$f$};

midway指这个标记位于曲线的中间,above指这个标记在曲线的上方,{}内是标记的文本内容。其他例子有:

\begin{figure}[htbp]
        \centering
        \begin{tikzpicture}
            \draw[->] (0,0) -- (2,0) node[near start,above] {$A$} node[near start,below] {$D$};
            \draw[->] (3,0) -- (5,0) node[midway,above] {$B$} node[midway,below] {$E$};
            \draw[->] (6,0) -- (8,0) node[near end,above] {$C$} node[near end,below] {$F$};
        \end{tikzpicture}
    \end{figure}

该命令还有其他用法,也有其他命令能达到相同的效果,用到了再说。