% Hypercycle
% Author: Florian Hollandt
\documentclass{article}

\usepackage{tikz}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5pt}%

\usetikzlibrary{shapes}

\setlength\oddsidemargin{0in}


\begin{document}

\pagestyle{empty}


\def\n{5}   % Number of Information carrier / Enzyme pairs
\def\d{2}   % Width of the figure


\tikzstyle{every picture}=[execute at end picture={
\foreach \x in {1,...,\n}{
        \path (360*\x/\n:\d)
        node [info carrier] (I\x) {$I_{\x}$};
    \draw [I to I]
        (I\x.200+360*\x/\n) arc (140:360:\r/6) arc (0:20:\r/6);
        \path (360*\x/\n:2*\d) 
        node [enzyme] (E\x) {$E_{\x}$};
    \draw  [I to E]
        (I\x) to (E\x);
    \draw [E to I]
        (360*\x/\n-360/\n:2*\d) to (I\x.center);
};
}]


\paragraph{Plain}

\begin{center}
\tikzstyle{radius}=[
    execute at begin picture={
        \def\r{2*3/4}
    }
]
\tikzstyle{every node}=[
    node distance=\d cm
]
\tikzstyle{info carrier}=[
    inner sep=2pt
]
\tikzstyle{enzyme}=[]
\tikzstyle{every path}=[
    shorten >=2pt,
    shorten <=2pt
]
\tikzstyle{I to E}=[
    ->,
    shorten >=2pt,
    shorten <=2pt
]
\tikzstyle{E to I}=[
    ->,
    densely dotted,
    shorten >=6mm,
    shorten <=4mm
]
\tikzstyle{I to I}=[
    ->,
    rotate=360*\x/\n
]
\begin{tikzpicture}[radius]
\end{tikzpicture}
\end{center}

\paragraph{Fancy}

\begin{center}
\tikzstyle{radius}=[
    execute at begin picture={
        \def\r{2.1}
    }
]
\tikzstyle{every node}=[
    node distance=\d cm
]
\tikzstyle{info carrier}=[
    shape=rectangle,
    draw=black,
    rounded corners=0.5,
    shading=radial,
    outer color=orange,
    inner color=white
]
\tikzstyle{enzyme}=[
    inner sep=2pt,
    shape=ellipse,
    draw=black,
    rounded corners=0.5,
    ball color=green
]
\tikzstyle{every path}=[
    shorten >=2pt,
    shorten <=2pt,
    thick
]
\tikzstyle{I to E}=[
    -stealth,
    controls=(10+360*\x/\n:\d*4/3) and (-10+360*\x/\n:\d*5/3),
    shorten >=2pt,
    shorten <=2pt,
    in=360*\x/\n+225
]
\tikzstyle{E to I}=[
    -stealth,
    controls=(360*\x/\n-360/\n+30:\d*5/3) and (360*\x/\n-360/\n-00:\d*4/3),
    densely dotted,
    shorten >=8mm,
    shorten <=5mm
]
\tikzstyle{I to I}=[
    -stealth,
    shorten >=0pt,
    shorten <=2pt,
    rotate=360*\x/\n
]
\begin{tikzpicture}[radius]
\end{tikzpicture}
\end{center}

\end{document}
