gyro永不抽风！ - PPT
type: channel
link: https://gyrojeff.top/index.php/tag/PPT/
items: 使用LaTeX的TikZ宏包绘制流程图

使用LaTeX的TikZ宏包绘制流程图
type: item
date: 2020-11-25T13:43:00+00:00
description: 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命令和库可能具有更现代的等效项。在我们制作新的视频教程之前，我们将按原样保留代码示例，以便它们与视频内容相对应。 样例 宏包的引用： \usepackage{tikz} \usetikzlibrary{shapes,arrows} \usetikzlibrary{shapes.geometric, arrows} 定义流程图的组件样式： \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] 画流程图： \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] (proces…