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

enter image description here


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 :-)

  • 3
    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
  • 1
    @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
  • 2
    If you don't want to code then Inkscape is your friend. – percusse Mar 19 '12 at 22:12
  • 1
    You can try to do it using tikedt (code.google.com/p/tikzedt), a semi graphical tikz editor. – user11232 Mar 19 '12 at 22:16
  • 2
    @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«.



      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)]{};

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

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.