[Tex/LaTex] Multiple arrows between nodes

tikz-pgf

How do I draw multiple arrows between two nodes? Currently I am able to draw only one between two nodes. And how do I draw curved arrows? How to align them properly? I want to draw something like this:

enter image description here

Best Answer

Explanations:

1 ) Nodes are placed with one path, between each node I place an option to modify the coordinates system [xshift=7cm]

2 ) To get the straight arrows, the idea is to draw the first arrow between (a) and (b)

\draw (a.east) -- (b.west); % styles are defined in the scope environment 

then to get the last arrows, it's enough to move the first arrows. This is possible with the same magic actions: [yshift=\i * 0.8 cm] \i is increased by one at each loop and yshift modifies the coordinate system.

3 ) to add some curved arrows, you can use to[out=...,in=...] or something like [bend] (see the manual to get some complements)

\documentclass[landscape]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{arrows}

\begin{document}
\begin{tikzpicture}[thick]

\path [every node/.style={draw,minimum width=3cm, minimum height=5cm]}]
  node (a) at (0,0) {}
  [xshift=7cm]
  node (b) at (0,0) {}
  [xshift=7cm]
  node (c) at (0,0) {};

\begin{scope}[->,>=latex]
    \foreach \i in {-2,...,2}{% 
      \draw[->] ([yshift=\i * 0.8 cm]a.east) -- ([yshift=\i * 0.8 cm]b.west) ;}

    \foreach \i in {1,2}{% 
      \draw[->] ([yshift=\i * 0.8 cm]a.east) to [out=50,in=130] ([yshift=\i * 0.8 cm]c.west) ;} 

    \foreach \i in {-1,-2}{% 
      \draw[->] ([yshift=\i * 0.8 cm]a.east) to [out=-50,in=-130] ([yshift=\i * 0.8 cm]c.west) ;}
\end{scope}

\end{tikzpicture}
\end{document}

enter image description here