0

I would like to draw a block diagram such as this using TikZ. I am unable to find arrow heads / suitable tutorials for block diagrams.

block diagram

2
  • Please show some effort and give us some code. What have you tried so far? There are many block diagrams on this site. And have a look into the pgf manual. For the error heads: texample.net/tikz/examples/double-arrows
    – LaRiFaRi
    Jun 23, 2015 at 8:24
  • This is rather known as flow chart not block diagram. In the manual there is a node shape single arrow.
    – percusse
    Jun 23, 2015 at 8:53

1 Answer 1

3

Two possible solutions. First simple one:

\documentclass[tikz,border=2mm]{standalone}
    \usetikzlibrary{arrows.meta,calc,positioning}

    \begin{document}
\begin{tikzpicture}[
node distance= 9mm and 3 mm,
inout/.style = {minimum width=#1,
                draw, thick, rounded corners, 
                minimum height=9mm, align=center},
inter/.style = {minimum width=#1,
                draw, thick, minimum height=9mm,
                font=\Large\bfseries},
Arrow/.style = {line width=2mm, draw=gray, 
                -{Triangle[length=3mm,width=4mm]},
                shorten >=1mm, shorten <=1mm},
                    ]
\node[inout=22mm]               (a)   {property};
\node[inout=22mm,right=of a]    (b)   {automaton\\ model};
\path   let \p1 = (a.west),
            \p2 = (b.east),
            \n1 = {veclen(\x2-\x1,\y2-\y1)} in 
        node[inter=\n1,
             below right=9mm and 0mm of a.south west] (c) {Intersection}
        node[inout=\n1,below=of c] (d) {empty language\\ 
                                        (property sastified)};
\draw[Arrow]    (a) -- (a |- c.north);
\draw[Arrow]    (b) -- (b |- c.north);
\draw[Arrow]    (c) -- (d);
\end{tikzpicture}
    \end{document}

enter image description here

and more fancy one with arrows determined with arrows shape:

\documentclass[tikz,border=2mm]{standalone}
    \usetikzlibrary{arrows.meta,calc,positioning,
                    shapes.arrows}

    \begin{document}
\begin{tikzpicture}[
node distance= 9mm and 3 mm,
inout/.style = {minimum width=#1,
                draw, thick, rounded corners, 
                minimum height=9mm, align=center},
inter/.style = {minimum width=#1,
                draw, thick, minimum height=9mm,
                font=\Large\bfseries},
Arrow/.style = {single arrow,draw,
                minimum height=7mm, minimum width=3mm,
                rotate=-90},             
                    ]
\node[inout=22mm]               (a)   {property};
\node[inout=22mm,right=of a]    (b)   {automaton\\ model};
\path   let \p1 = (a.west),
            \p2 = (b.east),
            \n1 = {veclen(\x2-\x1,\y2-\y1)} in 
        node[inter=\n1,
             below right=9mm and 0mm of a.south west] (c) {Intersection}
        node[inout=\n1,below=of c] (d) {empty language\\ 
                                        (property sastified)};
\node[Arrow]  at ($(a)!0.65!(a |- c.north)$) {};
\node[Arrow]  at ($(b)!0.65!(b |- c.north)$) {};
\node[Arrow]  at ($(c)!0.65!(d.north)$) {};
\end{tikzpicture}
    \end{document}

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .