Is there a smarter way to achieve the same result as the one from the following MWE:
1) by using some kind of loop instead of hand typing every node,
2) by drawing the arrows with tikz instead of using LaTeX math-mode
\documentclass[border=0.5cm]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{arrows,
chains,
scopes}
\begin{document}
\tikzset{>=stealth',
monomer/.style={
rectangle,
rounded corners,
draw=black, very thick,
text width=1em,
minimum height=1.5em,
text centered,
on chain},
fleche/.style={
text width=1.5em,
text centered,
on chain},
plus/.style={
text width=1em,
text centered,
on chain},
}
\begin{tikzpicture}
[node distance=.3cm and 0.1cm,
start chain=going right,scale=0.45]
{ [start chain=vert going below]
\node[monomer, fill=yellow!55] (G12r) {G};
{ [start branch=first going right]
\node[monomer, join, fill=yellow!55] (G11r) {G};
\node[monomer, join, fill=yellow!55] (G10r) {G};
\node[monomer, join, fill=yellow!55] (G9r) {G};
\node[monomer, join, fill=yellow!55] (G8r) {G};
\node[monomer, join, fill=yellow!55] (G7r) {G};
\node[monomer, join, fill=yellow!55] (G6r) {G};
\node[monomer, join, fill=yellow!55] (G5r) {G};
\node[monomer, join, fill=yellow!55] (G4r) {G};
\node[monomer, join, fill=yellow!55] (G3r) {G};
\node[monomer, join, fill=yellow!55] (G2r) {G};
\node[monomer, join, fill=yellow!55] (G1r) {G};
\node[fleche] (A) {$\rightarrow$};
\node[monomer, fill=yellow!50] (G11p) {G};
\node[monomer, join, fill=yellow!50] (G10p) {G};
\node[monomer, join, fill=yellow!50] (G9p) {G};
\node[monomer, join, fill=yellow!50] (G8p) {G};
\node[monomer, join, fill=yellow!50] (G7p) {G};
\node[monomer, join, fill=yellow!50] (G6p) {G};
\node[monomer, join, fill=yellow!50] (G5p) {G};
\node[monomer, join, fill=yellow!50] (G4p) {G};
\node[monomer, join, fill=yellow!50] (G3p) {G};
\node[monomer, join, fill=yellow!50] (G2p) {G};
\node[monomer, join, fill=yellow!50] (G1p) {G};
\node[plus] (B) {+};
\node[monomer] (M) {M};
}
\node[monomer, fill=yellow!50] (G11r) {G};
{ [start branch=first going right]
\node[monomer, join, fill=yellow!50] (G10r) {G};
\node[monomer, join, fill=yellow!50] (G9r) {G};
\node[monomer, join, fill=yellow!50] (G8r) {G};
\node[monomer, join, fill=yellow!50] (G7r) {G};
\node[monomer, join, fill=yellow!50] (G6r) {G};
\node[monomer, join, fill=yellow!50] (G5r) {G};
\node[monomer, join, fill=yellow!50] (G4r) {G};
\node[monomer, join, fill=yellow!50] (G3r) {G};
\node[monomer, join, fill=yellow!50] (G2r) {G};
\node[monomer, join, fill=yellow!50] (G1r) {G};
\node[fleche] (A) {$\rightarrow$};
\node[monomer, fill=yellow!45] (G10p) {G};
\node[monomer, join, fill=yellow!45] (G9p) {G};
\node[monomer, join, fill=yellow!45] (G8p) {G};
\node[monomer, join, fill=yellow!45] (G7p) {G};
\node[monomer, join, fill=yellow!45] (G6p) {G};
\node[monomer, join, fill=yellow!45] (G5p) {G};
\node[monomer, join, fill=yellow!45] (G4p) {G};
\node[monomer, join, fill=yellow!45] (G3p) {G};
\node[monomer, join, fill=yellow!45] (G2p) {G};
\node[monomer, join, fill=yellow!45] (G1p) {G};
\node[plus] (B) {+};
\node[monomer] (M) {M};
}
\node[monomer, fill=yellow!45] (G10r) {G};
{ [start branch=first going right]
\node[monomer, join, fill=yellow!45] (G9r) {G};
\node[monomer, join, fill=yellow!45] (G8r) {G};
\node[monomer, join, fill=yellow!45] (G7r) {G};
\node[monomer, join, fill=yellow!45] (G6r) {G};
\node[monomer, join, fill=yellow!45] (G5r) {G};
\node[monomer, join, fill=yellow!45] (G4r) {G};
\node[monomer, join, fill=yellow!45] (G3r) {G};
\node[monomer, join, fill=yellow!45] (G2r) {G};
\node[monomer, join, fill=yellow!45] (G1r) {G};
\node[fleche] (A) {$\rightarrow$};
\node[monomer, fill=yellow!40] (G9p) {G};
\node[monomer, join, fill=yellow!40] (G8p) {G};
\node[monomer, join, fill=yellow!40] (G7p) {G};
\node[monomer, join, fill=yellow!40] (G6p) {G};
\node[monomer, join, fill=yellow!40] (G5p) {G};
\node[monomer, join, fill=yellow!40] (G4p) {G};
\node[monomer, join, fill=yellow!40] (G3p) {G};
\node[monomer, join, fill=yellow!40] (G2p) {G};
\node[monomer, join, fill=yellow!40] (G1p) {G};
\node[plus] (B) {+};
\node[monomer] (M) {M};
}
\node[monomer, fill=yellow!40] (G9r) {G};
{ [start branch=first going right]
\node[monomer, join, fill=yellow!40] (G8r) {G};
\node[monomer, join, fill=yellow!40] (G7r) {G};
\node[monomer, join, fill=yellow!40] (G6r) {G};
\node[monomer, join, fill=yellow!40] (G5r) {G};
\node[monomer, join, fill=yellow!40] (G4r) {G};
\node[monomer, join, fill=yellow!40] (G3r) {G};
\node[monomer, join, fill=yellow!40] (G2r) {G};
\node[monomer, join, fill=yellow!40] (G1r) {G};
\node[fleche] (A) {$\rightarrow$};
\node[monomer, fill=yellow!35] (G8p) {G};
\node[monomer, join, fill=yellow!35] (G7p) {G};
\node[monomer, join, fill=yellow!35] (G6p) {G};
\node[monomer, join, fill=yellow!35] (G5p) {G};
\node[monomer, join, fill=yellow!35] (G4p) {G};
\node[monomer, join, fill=yellow!35] (G3p) {G};
\node[monomer, join, fill=yellow!35] (G2p) {G};
\node[monomer, join, fill=yellow!35] (G1p) {G};
\node[plus] (B) {+};
\node[monomer] (M) {M};
}
\node[monomer, fill=yellow!35] (G8r) {G};
{ [start branch=first going right]
\node[monomer, join, fill=yellow!35] (G7r) {G};
\node[monomer, join, fill=yellow!35] (G6r) {G};
\node[monomer, join, fill=yellow!35] (G5r) {G};
\node[monomer, join, fill=yellow!35] (G4r) {G};
\node[monomer, join, fill=yellow!35] (G3r) {G};
\node[monomer, join, fill=yellow!35] (G2r) {G};
\node[monomer, join, fill=yellow!35] (G1r) {G};
\node[fleche] (A) {$\rightarrow$};
\node[monomer, fill=yellow!30] (G7p) {G};
\node[monomer, join, fill=yellow!30] (G6p) {G};
\node[monomer, join, fill=yellow!30] (G5p) {G};
\node[monomer, join, fill=yellow!30] (G4p) {G};
\node[monomer, join, fill=yellow!30] (G3p) {G};
\node[monomer, join, fill=yellow!30] (G2p) {G};
\node[monomer, join, fill=yellow!30] (G1p) {G};
\node[plus] (B) {+};
\node[monomer] (M) {M};
}
\node[monomer, fill=yellow!30] (Gr7) {G};
{ [start branch=first going right]
\node[monomer, join, fill=yellow!30] (G6r) {G};
\node[monomer, join, fill=yellow!30] (G5r) {G};
\node[monomer, join, fill=yellow!30] (G4r) {G};
\node[monomer, join, fill=yellow!30] (G3r) {G};
\node[monomer, join, fill=yellow!30] (G2r) {G};
\node[monomer, join, fill=yellow!30] (G1r) {G};
\node[fleche] (A) {$\rightarrow$};
\node[monomer, fill=yellow!25] (G6p) {G};
\node[monomer, join, fill=yellow!25] (G5p) {G};
\node[monomer, join, fill=yellow!25] (G4p) {G};
\node[monomer, join, fill=yellow!25] (G3p) {G};
\node[monomer, join, fill=yellow!25] (G2p) {G};
\node[monomer, join, fill=yellow!25] (G1p) {G};
\node[plus] (B) {+};
\node[monomer] (M) {M};
}
\node[monomer, fill=yellow!25] (G6r) {G};
{ [start branch=first going right]
\node[monomer, join, fill=yellow!25] (G5r) {G};
\node[monomer, join, fill=yellow!25] (G4r) {G};
\node[monomer, join, fill=yellow!25] (G3r) {G};
\node[monomer, join, fill=yellow!25] (G2r) {G};
\node[monomer, join, fill=yellow!25] (G1r) {G};
\node[fleche] (A) {$\rightarrow$};
\node[monomer, fill=yellow!20] (G5p) {G};
\node[monomer, join, fill=yellow!20] (G4p) {G};
\node[monomer, join, fill=yellow!20] (G3p) {G};
\node[monomer, join, fill=yellow!20] (G2p) {G};
\node[monomer, join, fill=yellow!20] (G1p) {G};
\node[plus] (B) {+};
\node[monomer] (M) {M};
}
\node[monomer, fill=yellow!20] (G5r) {G};
{ [start branch=first going right]
\node[monomer, join, fill=yellow!20] (G4r) {G};
\node[monomer, join, fill=yellow!20] (G3r) {G};
\node[monomer, join, fill=yellow!20] (G2r) {G};
\node[monomer, join, fill=yellow!20] (G1r) {G};
\node[fleche] (A) {$\rightarrow$};
\node[monomer, fill=yellow!15] (G4p) {G};
\node[monomer, join, fill=yellow!15] (G3p) {G};
\node[monomer, join, fill=yellow!15] (G2p) {G};
\node[monomer, join, fill=yellow!15] (G1p) {G};
\node[plus] (B) {+};
\node[monomer] (M) {M};
}
\node[monomer, fill=yellow!15] (G4r) {G};
{ [start branch=second going right]
\node[monomer, join, fill=yellow!15] (G3r) {G};
\node[monomer, join, fill=yellow!15] (G2r) {G};
\node[monomer, join, fill=yellow!15] (G1r) {G};
\node[fleche] (A) {$\rightarrow$};
\node[monomer, fill=yellow!10] (G3p) {G};
\node[monomer, join, fill=yellow!10] (Gp2) {G};
\node[monomer, join, fill=yellow!10] (G1p) {G};
\node[plus] (B) {+};
\node[monomer] (M) {M};
}
\node[monomer, fill=yellow!10] (G3r) {G};
{ [start branch=third going right]
\node[monomer, join, fill=yellow!10] (G2r) {G};
\node[monomer, join, fill=yellow!10] (G1r) {G};
\node[fleche] (A) {$\rightarrow$};
\node[monomer, fill=yellow!5] (G2p) {G};
\node[monomer, join, fill=yellow!5] (G1p) {G};
\node[plus] (B) {+};
\node[monomer] (M) {M};
}
\node[monomer, fill=yellow!5] (G2r) {G};
{ [start branch=fouth going right]
\node[monomer, join, fill=yellow!5] (G1r) {G};
\node[fleche] (A) {$\rightarrow$};
\node[monomer] (G1pp) {M};
\node[plus] (B) {+};
\node[monomer] (M) {M};
}
}
\end{tikzpicture}
\end{document}
PS : yes I know the the name of the nodes are used many times
G-G -> M + M
orG-G -> G + M
?G-G -> G + M