前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用LaTeX的TikZ宏包绘制流程图

使用LaTeX的TikZ宏包绘制流程图

作者头像
gyro永不抽风
发布2021-05-21 14:29:30
4.2K0
发布2021-05-21 14:29:30
举报

Preface

答辩PPT需要画流程图,遂学。

方法

注:本文大部分为Overleaf的翻译与总结 这个由五部分组成的系列文章结合了视频和文字说明,以教授使用TikZ创建LaTeX图形的基础。这些教程于2013年8月首次在原始ShareLateX博客网站上发布;因此,由于ShareLaTeX的发展以及ShareLaTeX和Overleaf的合并,今天的编辑器界面(Overleaf)发生了很大变化。但是,许多内容仍然有意义,并会教给您一些基本的LaTeX,这些技能和专业知识将适用于所有平台。 此外,多年来,用于定位节点的TikZ库和方法已经发生了变化。如果您今天正在学习TikZ,则最好使用该positioning库以below=of的语法放置节点。该positioning库语法是更灵活和强大。below of=以下视频和示例中使用的较旧样式的语法已正式弃用,但仍然可以使用。此外,arrows现在不建议使用该库,而希望使用较新的arrows.meta库。这里使用的其他TikZ命令和库可能具有更现代的等效项。在我们制作新的视频教程之前,我们将按原样保留代码示例,以便它们与视频内容相对应。

样例

宏包的引用:

代码语言:javascript
复制
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{shapes.geometric, arrows}

定义流程图的组件样式:

代码语言:javascript
复制
\tikzstyle{startstop} = [rectangle,rounded corners, minimum width=3cm,minimum height=1cm,text centered, draw=black,fill=red!30]
\tikzstyle{io} = [trapezium, trapezium left angle = 70,trapezium right angle=110,minimum width=3cm,minimum height=1cm,text centered,draw=black,fill=blue!30]
\tikzstyle{process} = [rectangle,minimum width=3cm,minimum height=1cm,text centered,text width =3cm,draw=black,fill=orange!30]
\tikzstyle{decision} = [diamond,minimum width=3cm,minimum height=1cm,text centered,draw=black,fill=green!30]
\tikzstyle{arrow} = [thick,->,>=stealth]

画流程图:

代码语言:javascript
复制
\begin{tikzpicture}[node distance=2cm]
\node (start) [startstop] {Start};
\node (input1) [io,below of=start] {Input};
\node (process1) [process,below of=input1] {Process 1};
\node (decision1) [decision,below of=process1,yshift=-0.5cm] {Decession 1};
\node (process2a) [process,below of=decision1,yshift=-0.5cm] {Process 2aaaaaa aaaaaaa aaaa};
\node (process2b) [process,right of =decision1,xshift=2cm] {Process 2b};
\node (out1) [io,below of=process2a] {Output};
\node (stop) [startstop,below of=out1] {Stop};

\draw [arrow] (start) -- (input1);
\draw [arrow] (input1) -- (process1);
\draw [arrow] (process1) -- (decision1);
\draw [arrow] (decision1) -- node[anchor=east] {yes} (process2a);
\draw [arrow] (decision1) -- node[anchor=south] {no} (process2b);
\draw [arrow] (process2b) |- (process1);
\draw [arrow] (process2a) -- (out1);
\draw [arrow] (out1) -- (stop);
\end{tikzpicture}

结果:

某些可选参数

箭头样式

代码语言:javascript
复制
\tikzstyle{arrow} = [thick,->,>=stealth]

解析:

代码语言:javascript
复制
# 线粗:
thick:粗
thin:细
# 箭头
-> : 正向箭头
<- : 反向箭头
<-> : 双向箭头
# 虚线
dashed
# 箭头形状
>=stealth

画箭头

代码语言:javascript
复制
\draw [arrow] (decision1) -- node[anchor=east] {yes} (process2a);

解析:

代码语言:javascript
复制
# 属性
[arrow]: 需要调用的箭头的样式名称
(decision1):箭头的起始节点名称
(process2a):箭头的末端节点名称
# 线型
--:直线
|-:先竖线后横线
-|:向横线后竖线
# 文字:如果需要在箭头上添加文字
{yes}: 需要添加的文字
# 文字的位置,上南下北左东右西(与地图方位不一致)
[anchor=east]
[anchor=south]
[anchor=west]
[anchor=north]
[anchor=center]

节点样式

代码语言:javascript
复制
\tikzstyle{process} = [rectangle,minimum width=3cm,minimum height=1cm,text centered,text width =3cm,draw=black,fill=orange!30]

解析:

代码语言:javascript
复制
# 节点形状
rectangle: 矩形,可加圆角(rounded corners)
trapezium: 平行四边形
diamond: 菱形
# 尺寸
minimum width
minimum height
# 文本
text centered: 文本居中
# 文本宽度
text width=3cm: 文本超过3cm时会自动换行
# 边框
draw
# 填充颜色
fill

画节点

代码语言:javascript
复制
\node (decision1) [decision,below of=process1,yshift=-0.5cm] {Decession 1};

解析:

代码语言:javascript
复制
# name
(decision1):这个节点的name,后面需要用这个name调用这个节点。
# 属性
decision:需要调用的节点的样式名称
# 位置
below of=process1:定义节点的位置
left of:
right of:
# 偏移,对位置进行微调
yshift:
xshift:
# title
{Decession 1}: 结果显示的标题

总结

类似于css的思想,这个其实就是先定义一下样式然后调用,调用的时候也可以修改,大多数参数也能猜(确信

Reference

本文作者:博主: gyrojeff    文章标题:使用LaTeX的TikZ宏包绘制流程图

本文地址:https://cloud.tencent.com/developer/article/1827314

版权说明:若无注明,本文皆为“gyro永不抽风!”原创,转载请保留文章出处。

许可协议:署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 转载请保留原文链接及作者!

我的博客即将同步至腾讯云+社区,邀请大家一同入驻

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020 年 11 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Preface
  • 方法
      • 样例
        • 某些可选参数
          • 箭头样式
          • 画箭头
          • 节点样式
          • 画节点
      • 总结
      • Reference
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档