楼主: oliyiyi
2385 0

在 LaTeX 中使用流程图 [推广有奖]

版主

已卖:2994份资源

泰斗

1%

还不是VIP/贵宾

-

TA的文库  其他...

计量文库

威望
7
论坛币
66105 个
通用积分
31671.0967
学术水平
1454 点
热心指数
1573 点
信用等级
1364 点
经验
384134 点
帖子
9629
精华
66
在线时间
5508 小时
注册时间
2007-5-21
最后登录
2025-7-8

初级学术勋章 初级热心勋章 初级信用勋章 中级信用勋章 中级学术勋章 中级热心勋章 高级热心勋章 高级学术勋章 高级信用勋章 特级热心勋章 特级学术勋章 特级信用勋章

楼主
oliyiyi 发表于 2016-3-26 20:43:40 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

程图是表达算法思想最为有效的图形工具。作为计算机专业的学生,我们经常需要在文档中使用流程图来描述算法。在 LaTeX 中使用流程图可以通过 TikZ 或 flowchart 宏包来实现,但从本质上来说 flowchart 宏包也是使用 TikZ 宏包来实现的。下面分别通过一个简单的例子来对这两种方法进行说明。

使用 flowchart 宏包绘制流程图

flowchart 宏包根据 IBM 提出的流程图标准,定义了流程图中最常用的五种标准形状,包括:

  • PROCESS: 一切函数过程
  • DECESION: 条件判断
  • PREDEFINED PROCESS:预定义过程
  • STORAGE: 数据存储
  • TERMINAL: 开始,结束

下面,我们通过一个简单的示例代码来说明,请注意看代码中的注释


直接使用 TikZ 宏包绘制流程图。

flowchart 定义的形状数量比较少,可能满足不了绘制复杂流程图的需要,我们还可以直接使用 TikZ 强大的绘图功能来实现流程图的绘制。还是先看示例代码,配合注释,再进行讲解吧。






  1. %!TEX program = xelatex

  2. % 使用 ctexart 文类,UTF-8 编码

  3. % 作者:王泽宇

  4. \documentclass[UTF8]{ctexart}

  5. \usepackage{tikz,mathpazo}

  6. \usetikzlibrary{shapes.geometric, arrows}

  7. \begin{document}

  8. \thispagestyle{empty}

  9. % 流程图定义基本形状

  10. \tikzstyle{startstop} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=red!30]

  11. \tikzstyle{io} = [trapezium, trapezium left angle=70, trapezium right angle=110, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=blue!30]

  12. \tikzstyle{process} = [rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=orange!30]

  13. \tikzstyle{decision} = [diamond, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=green!30]

  14. \tikzstyle{arrow} = [thick,->,>=stealth]



  15. \begin{tikzpicture}[node distance=2cm]

  16. %定义流程图具体形状

  17. \node (start) [startstop] {Start};

  18. \node (in1) [io, below of=start] {Input};

  19. \node (pro1) [process, below of=in1] {Process 1};

  20. \node (dec1) [decision, below of=pro1, yshift=-0.5cm] {Decision 1};

  21. \node (pro2a) [process, below of=dec1, yshift=-0.5cm] {Process 2a};

  22. \node (pro2b) [process, right of=dec1, xshift=2cm] {Process 2b};

  23. \node (out1) [io, below of=pro2a] {Output};

  24. \node (stop) [startstop, below of=out1] {Stop};



  25. %连接具体形状

  26. \draw [<span class="link_label">arrow</span>](<span class="link_url">start</span>) -- (in1);

  27. \draw [<span class="link_label">arrow</span>](<span class="link_url">in1</span>) -- (pro1);

  28. \draw [<span class="link_label">arrow</span>](<span class="link_url">pro1</span>) -- (dec1);

  29. \draw [<span class="link_label">arrow</span>](<span class="link_url">dec1</span>) -- (pro2a);

  30. \draw [<span class="link_label">arrow</span>](<span class="link_url">dec1</span>) -- (pro2b);

  31. \draw [<span class="link_label">arrow</span>](<span class="link_url">dec1</span>) -- node[anchor=east] {yes} (pro2a);

  32. \draw [<span class="link_label">arrow</span>](<span class="link_url">dec1</span>) -- node[anchor=south] {no} (pro2b);

  33. \draw [<span class="link_label">arrow</span>](<span class="link_url">pro2b</span>) |- (pro1);

  34. \draw [<span class="link_label">arrow</span>](<span class="link_url">pro2a</span>) -- (out1);

  35. \draw [<span class="link_label">arrow</span>](<span class="link_url">out1</span>) -- (stop);

  36. \end{tikzpicture}

  37. \end{document}
复制代码

方法比较

比较两个方法的代码可知,相比使用 flowchart 宏包,直接使用 TikZ 绘制流程图多了定义基本形状一步。但通过 TikZ 自己定义基本形状,流程图的可定制性更好,可以根据具体需要,定义多种流程图形状。另外一个使用 flowchart 宏包来绘制,最终还是需要用到 TikZ 语法,也不见得有多简单。因此,推荐使用 TikZ 直接绘制流程图。另外,在很久之间,还有一个名为 nassflow 的宏包也可以实现流程图的绘制,但在目前的几个留下的 LaTeX 的发行版中,都没有预装该宏包,因此,在这里也就不做说明了。

选自:http://wangmurong.org.cn/2015/06/14/how-to-draw-flow-chart-in-latex/


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:LaTeX Late atex ATE 流程图 计算机专业 流程图

缺少币币的网友请访问有奖回帖集合
https://bbs.pinggu.org/thread-3990750-1-1.html

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-1 16:46