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

  • 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 '15 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 '15 at 8:53
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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.