TikZ should be pretty useful doing this. It's a package to 'draw' stuff in latex. I tried replicating your picture, there are still some rough edges, but it looks pretty nice I think.
\documentclass{article}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{arrows,positioning}
\begin{tikzpicture} [%
nd/.style = {circle,fill=black,text=white,inner sep=1pt},
tn/.style = {node distance=1pt},
redarrow/.style={->, red, fill=none,>=stealth},
blueline/.style={-,blue,fill=none}]
\node[nd] (otl) at (0,0) {\sffamily F};
\node[nd] (itl) [below right=of otl] {\sffamily F};
\node[nd] (itr) [right=of itl] {\sffamily F};
\node[nd] (otr) [above right=of itr] {\sffamily F};
\node[nd] (ibl) [below=of itl] {\sffamily F};
\node[nd] (obl) [below left=of ibl] {\sffamily F};
\node[nd] (ibr) [right=of ibl] {\sffamily F};
\node[nd] (obr) [below right=of ibr] {\sffamily F};
\draw[redarrow] (otr) -- (otl);
\draw[redarrow] (otl) -- (obl);
\draw[redarrow] (obl) -- (obr);
\draw[redarrow] (obr) -- (otr);
\draw[redarrow] (itl) -- (itr);
\draw[redarrow] (itr) -- (ibr);
\draw[redarrow] (ibr) -- (ibl);
\draw[redarrow] (ibl) -- (itl);
\draw[blueline] (ibl) -- (obl);
\draw[blueline] (itl) -- (otl);
\draw[blueline] (ibr) -- (obr);
\draw[blueline] (itr) -- (otr);
\node[tn] [below right=of itl] {\tiny{$a$}};
\node[tn] [below left=of itr] {\tiny{$a^2$}};
\node[tn] [above left=of ibr] {\tiny{$a^3$}};
\node[tn] [above right=of ibl] {\tiny{$e$}};
\node[tn] [below left=of obl] {\tiny{$b$}};
\node[tn] [below=of obr] {\tiny{$ab=ba^3$}};
\node[tn] [above=of otl] {\tiny{$ba=a^3b$}};
\node[tn] [above=of otr] {\tiny{$a^2b=ba^2$}};
\end{tikzpicture}
\end{document}
which looks like
I would normally name the styles according to their uses, but since I have no idea what the diagram represents, I just named them according to their styles. The rotation is still missing, I'm trying to get that right though ;)
EDIT:
I got rotation etc. to work. Since the syntax is a little bit harder to read, I thought I would define a command for the nodes in the graph. I also fixed the text height for the 'captions', so that the ugly offset of the text is now gone. It's just the upper part that's changed, but in spirit of providing a MWE I also copied the rest of the code again:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{arrows,positioning}
\newcommand{\nd}[4]{\node[nd] (#1) #2 [label={[white,rotate=#3]center:{\sffamily #4}}] {}};
\begin{tikzpicture} [%
nd/.style = {circle,fill=black,text=white,inner sep=4pt},
tn/.style = {node distance=1pt,text height=0.5ex},
redarrow/.style={->, red, fill=none,>=stealth},
blueline/.style={-,blue,fill=none}]
\nd{otl}{at (0,0)}{0}{F};
\nd{itl}{[below right=of otl]}{270}{F};
\nd{itr}{[right=of itl]}{0}{F};
\nd{otr}{[above right=of itr]}{90}{x};
\nd{ibl}{[below=of itl]}{90}{F};
\nd{obl}{[below left=of ibl]}{0}{e};
\nd{ibr}{[right=of ibl]}{180}{F};
\nd{obr}{[below right=of ibr]}{90}{F};
\draw[redarrow] (otr) -- (otl);
\draw[redarrow] (otl) -- (obl);
\draw[redarrow] (obl) -- (obr);
\draw[redarrow] (obr) -- (otr);
\draw[redarrow] (itl) -- (itr);
\draw[redarrow] (itr) -- (ibr);
\draw[redarrow] (ibr) -- (ibl);
\draw[redarrow] (ibl) -- (itl);
\draw[blueline] (ibl) -- (obl);
\draw[blueline] (itl) -- (otl);
\draw[blueline] (ibr) -- (obr);
\draw[blueline] (itr) -- (otr);
\node[tn] [below right=of itl] {\tiny{$a$}};
\node[tn] [below left=of itr] {\tiny{$a^2$}};
\node[tn] [above left=of ibr] {\tiny{$a^3$}};
\node[tn] [above right=of ibl] {\tiny{$e$}};
\node[tn] [below left=of obl] {\tiny{$b$}};
\node[tn] [below=of obr] {\tiny{$ab=ba^3$}};
\node[tn] [above=of otl] {\tiny{$ba=a^3b$}};
\node[tn] [above=of otr] {\tiny{$a^2b=ba^2$}};
\end{tikzpicture}
\end{document}
Connecting diagrams is described in ยง28 of the Dynkin Diagrams Package documentation.
You can adjust the vertical space between upper
and lower
by changing the -.3cm
in the code below:
\documentclass[12pt]{amsbook}
\usepackage{dynkin-diagrams}
\begin{document}
Is this:
\begin{dynkinDiagram}[name=upper]A2
\node (current) at ($(upper root 1)+(0,-.3cm)$) {};
\dynkin[at=(current),name=lower]A2
\begin{pgfonlayer}{Dynkin behind}
\foreach \i in {1,2}{%
\draw[/Dynkin diagram/fold style] ($(upper root \i)$) -- ($(lower root \i)$);}
\end{pgfonlayer}
\end{dynkinDiagram}
what you want?
\end{document}
Best Answer
I would not recommend abusing the feynmf package. In the past I have used the picture environment (with the
eepic
package) to do precisely this.Table 6.2 in page 185 of these lecture notes (PDF file), I typeset the Dynkin diagrams using the picture environment. I'm happy to make the code available. Here's a sample for the $A_n$ Dynkin diagram:
The diagram is decorated with a labelling of the nodes, by the way.