本文已加入专栏文章目录,归入「示例」文章系列。
流程图,或者类似流程图的绘图目标,主要指具有以下特征的图形组合:多个带框文本,框的形状、框之间的位置关系有规律
多条带箭头的线,线连接框
(这里是想说,在具体的使用场景和学科背景下,图形们各有各的叫法和名字,但从绘图的角度,它们和本文所介绍的「流程图」有很大的共性。)
以下,在无明显歧义时,我们用 node 代指「带框文本」,用 arrow 代指「带箭头的线」。
在 tikz 文档的 Tutorials 中,有Sec. 3 Tutorial: A Petri-Net for Hagen和
Sec. 5 Tutorial: Diagrams as Simple Graphs
两个流程图绘制的例子。本文提及的大部分内容,都能在这两个官方文档示例中找到介绍。
引入例子
一个简陋的例子
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning, shapes.geometric}
\begin{document}
\begin{tikzpicture}[node distance=10pt]
\node[draw, rounded corners] (start) {Start};
\node[draw, below=of start] (step 1) {Step 1};
\node[draw, below=of step 1] (step 2) {Step 2};
\node[draw, diamond, aspect=2, below=of step 2] (choice) {Choice};
\node[draw, right=30pt of choice] (step x) {Step X};
\node[draw, rounded corners, below=20pt of choice] (end) {End};
\draw[->] (start) -- (step 1);
\draw[->] (step 1) -- (step 2);
\draw[->] (step 2) -- (choice);
\draw[->] (choice) -- node[left] {Yes} (end);
\draw[->] (choice) -- node[above] {No} (step x);
\draw[->] (step x) -- (step x|-step 2) -> (step 2);
\end{tikzpicture}
\end{document}
上述例子中,故意略去了关于 node 的设置,如外框形状
关于 arrow 的设置,例如线的样式、箭头的样式等
关于颜色和字体的设置
这些都可以通过定义 tikz style 来解决。
上述例子中,值得关注的是这些:少用、甚至不用具体坐标第一个 node 省略了坐标,相当于指定了 (0, 0)
从第二个 node 开始ÿ