# Tikz/PGF package to generate flow diagrams

I'm looking for something able to generate the following type of diagrams:

Thoughts?

Addendum: Maybe I was not clear. I'm looking for a package that, with minimal effort, is able to produce block&arrows diagrams, such as the above. Of course I could generate the "exact" above diagram with some effort, but that is not the point, sorry :-)

-
How do your recent efforts look like? You can show them best in form of a minimal example. –  Thorsten Donig Mar 19 '12 at 21:45
@ThorstenDonig: While I'm generally a big fan of MWEs, I'm not sure if we need one here. Iiuc, Huge isn't striving to reproduce precisely this diagram, but generally looking for packages that help in producing such diagrams. –  doncherry Mar 19 '12 at 22:10
If you don't want to code then Inkscape is your friend. –  percusse Mar 19 '12 at 22:12
You can try to do it using tikedt (code.google.com/p/tikzedt), a semi graphical tikz editor. –  Harish Kumar Mar 19 '12 at 22:16
@doncherry: If I see such questions here which only present a picture of an object to be reproduced, I often get the impression of missing own initiative. But if its only about suggesting packages, pgf/tikZ (Example Gallery) or PSTricks (Example Gallery) are surely worth to take a look. A search for the respective tags on the site could also be helpful. –  Thorsten Donig Mar 21 '12 at 20:16

Although it was not requested, this is a short example with »pgf/tikZ«.

\documentclass[11pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{fit,positioning}
\usepackage{mathtools}

\DeclareMathOperator{\arr}{arr}

\begin{document}
\begin{tikzpicture}[
>=stealth,
thick,
border/.style={
draw=orange,
rounded corners=2pt
}
]
\coordinate (o) at (0,0);
\node[border,minimum width=3em] (f) at (2,0.5) {$f$\strut};
\node[border,rounded corners=2pt,minimum width=3em] (g) at (2,-0.5) {$g$\strut};
\node[draw,circle,minimum size=2em] (plus) at (4.5,0) {$+$};
\coordinate[above right=0.5 and 0.5 of o] (c1);
\coordinate[right=1 of f] (c2);
\coordinate[below right=0.5 and 0.5 of o] (c3);
\coordinate[right=1 of g] (c4);
\node (text) at (2.5,1.5) {$f\&\&\&g >\!\!>\!\!> \arr(\lambda(z,y)\to y+z)$};
\node[border,fit=(o) (f) (g)]{};
\node[border,minimum height=57.4pt,fit=(c2) (c4) (plus)]{};
\draw (o) -- +(-1,0) node[above,midway] (x) {$x$};
\draw[->] (o) -- (c1) -- (f);
\draw[->] (f) -- node[above,midway] (y) {$y$} (c2)  -- (plus);
\draw[->] (o) -- (c3) -- (g);
\draw[->] (g) -- node[above,midway] (z) {$z$} (c4)  -- (plus);
\draw[->] (plus) -- +(1.5,0) node[above,midway] (nil) {~~};
\node[draw=orange,rounded corners=2pt,minimum height=92pt,fit=(x) (g) (nil) (text)]{};
\end{tikzpicture}
\end{document}


Perhaps improvable at one place or another (i.e. by layers).

-