TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

is any pre-difined shapes to draw such chart, or I have to use line by line for it? Thanks in advance.enter image description here

share|improve this question
Looks a good candidate for tikz using foreach loops and pgf arrays. – JLDiaz Jun 24 '14 at 7:13

EDIT: Adding the latest writing



        % Draw 1st order
        \draw (0,0) to node [pos=0.5, above] {100 C} ++ (4,0);

        % Draw 2nd order
        \foreach \j in {8.1,2.7,-2.7,-8.1}
            \draw [-stealth] (4,0) --++ (1,\j) --++ (4,0);
        \node [above right, align=left] at (6,8.1) {Text 1\\text 2};
        \node [above right, align=left] at (6,2.7) {Text 3\\text 4};
        \node [above right, align=left] at (6,-2.7) {Text 5\\text 6};
        \node [above right, align=left] at (6,-8.1) {Text 7\\text 8};

        % Draw 3rd and 4th orders
        \foreach \j in {8.1,2.7,-2.7,-8.1}
            \draw (9,\j) --++ (4,0);
            \draw (9,\j+2.7) rectangle ++ (6,-5.4);
            \foreach \k in {2,1,-1,-2}
                \draw [-stealth] (13,\j) --++ (1,\k) --++ (6,0);
            % Fatest writing
            \node [right] at (20,\j+2) {Condensate};
            \node [right] at (20,\j+1) {NGL};
            \node [right] at (20,\j-1) {Sales Gas};
            \node [right] at (20,\j-2) {Sour Gas};
        \node [above right] at (15,10.1) {Text 9};
        \node [above right] at (15,9.1) {Text 10};


enter image description here

share|improve this answer

Based on the idea I gave in my comment, here is an implementation using pgf arrays and nested loops. It requires PGF 3.0.0, and can serve as a somewhat complex example of use for this new feature.


% The following array defines the numbers and labels
% to appear at each final branch (at the right)
% Note the funny syntax with braces and quotes...
  numbers/Sales gas, 
  foobar/Sour gas"},
  numbers/Sales gas, 
  foobar/Sour gas"},
  numbers/Sales gas, 
  foobar/Sour gas"},
  numbers/Sales gas, 
  foobar/Sour gas"}

% This is the style to format the numbers which appear
% above each branch
   numbers/.style = {above right, font=\small, text width=4cm}

\draw (0,0) -- (3,0) node[above, midway] {100C,};

% Four main branches
\foreach [count=\i from 0] \label   in
  {{M-C-P\\some numbers}, 
   {Benzene\\more numbers},
   {CycC,\\even more numbers}, 
   {C,\\and final numbers}} {
  % Coordinate at which each one of main branches start
  \coordinate (aux) at ($(3,6)+(1,-4*\i)$);
  \draw[->] (3,0) -- (aux) node[numbers] {\label}
        -- +(4,0);
  % Rectangle at the end of each branch
  \draw (aux) ++(4,2) rectangle +(5,-4);
  \draw (aux) ++(4,0) -- +(3,0);

  % Inside the rectangle, four new branches
  \foreach [count=\j from 0] \n/\l in \labels {
    \draw[->] (aux) ++(7,0) -- ++(1,1.5-\j) 
        -- ++(1,0) node[numbers] {\n} -- ++(4,0)
       node[right] {\l};



share|improve this answer
I have error: "line 59 error Missing number, treated as zero }" – Alex Jun 24 '14 at 8:39
@Alex This code uses some features that require PGF 3.0.0 Your error happens when you are using PGF 2.10. Latest texlive comes with PGF 3.0.0 if you are interested. – JLDiaz Jun 24 '14 at 8:58

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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