本文已加入专栏文章目录,归入「示例」文章系列。
流程图,或者类似流程图的绘图目标,主要指具有以下特征的图形组合:
- 多个带框文本,框的形状、框之间的位置关系有规律
- 多条带箭头的线,线连接框
(这里是想说,在具体的使用场景和学科背景下,图形们各有各的叫法和名字,但从绘图的角度,它们和本文所介绍的「流程图」有很大的共性。)
以下,在无明显歧义时,我们用 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}
![5972956c9cbacb129994750c6466a3f1.png](https://i-blog.csdnimg.cn/blog_migrate/61d1487c2e636158f90b767e93c17078.png)
上述例子中,故意略去了
- 关于 node 的设置,如外框形状
- 关于 arrow 的设置,例如线的样式、箭头的样式等
- 关于颜色和字体的设置
这些都可以通过定义 tikz style 来解决。
上述例子中,值得关注的是这些:
- 少用、甚至不用具体坐标
- 第一个 node 省略了坐标,相当于指定了
(0, 0)
- 从第二个 node 开始,利用 tikz library
positioni
- 第一个 node 省略了坐标,相当于指定了