Recently, I upgraded my $latex \LaTeX$ installation from teTeX to TeX Live. As I was reviewing the available packages, I noticed $latex Xy-pic$, a set of macros for creating diagrams and graphs. I was immediately intrigued and I started reading the relatively short manual.
Today, I will show you a few of the things $latex Xy-pic$ can do.
1. First, create a file and insert the $latex \LaTeX$ document class and the macro package.
~ % cd ~/tmp ~ % touch example.tex ~ % vim example.tex
1 \documentclass{article}
2 \usepackage[all]{xy}
3 \begin{document}
4
5 \end{document}
All of our editing will stay between “\begin{document}” and”\end{document}”.
2. Next, let’s begin with our first example.
1 \documentclass{article}
2 \usepackage[all]{xy}
3 \begin{document}
4 \xymatrix@1{A \ar[r] & B}
5 \end{document}
The above example will create:
Explanation: \xymatrix initialises the macro environment and @1 restricts the output to a single line. \ar creates an arrow and the direction, [r], points the arrow in the right direction. & separates the columns. The direction is translated from its mnemonic form (right,left,up,down) into a coordinate pair based upon its initial position. In this case, [r] means (1,0). Using [l] would result in an error because [l], which is (-1,0), doesn’t exist.
Throughout the rest of this tutorial, I’ll remove everything except the \xymatrix macro; remember to add the LaTeX commands (lines 1,2, 3, and 5) before you compile the document. Also, I will bold changes in each progressive example.
3. Let’s add some more letters and arrows to the previous example. (It would have better to use a double headed arrow style, see ex. #7.)
5 \xymatrix@1{A \ar[r] & B \ar[r] & C \ar[l]}
4. Let’s change the C to bullet.
6 \xymatrix@1{A \ar[r] & B \ar[r] & \bullet \ar[l]}
Explanation: \bullet creates a bullet
5. Add another row.
7 \xymatrix{ 8 A \ar[r] & B \ar[r] & \bullet \ar[l] \\ 9 D & & 10 }
Explanation: The “\\” creates a linebreak. Even though no content follows the D, we still have to create the empty columns with &’s. Since we are now dealing with multiple rows, we have to remove the @1.
6. Create an arrow from A to D.
11 \xymatrix{
12 A \ar[r] \ar[d] & B \ar[r] & \bullet \ar[l] \\
13 D & &
14 }
Explanation: \ar[d] creates a downward arrow to (0,-1), which in this case, is D.
7. Now, let me introduce you to styles. This time, we’ll begin with a fresh example.
15 \xymatrix@1{
16 A \ar@{<->}[r] & B}
Explanation: The @{<->} is in a @{tail shaft head} format, so in this case, it creates a double-headed arrow.
8. Another example of styling arrows.
17 \xymatrix@1{
18 A \ar@{-}[r] & B}
Explanation: @{-} creates an arrow with only a shaft.
9. Next, an example of labelling arrows.
19 \xymatrix@1{
20 A \ar@{-}[r]^f & B \ar@{-}[r]_f & C }
Explanation: This is not as complicated as it looks. “^” means up; likewise “_” means down.
10. What about a label with more than one character?
21 \xymatrix@1{
22 A \ar@{-}[r]^{more} & B \ar@{-}[r]_f & C }
Explanation: The “{}” is a container for extra characters.
11. What happens if we lengthen the arrow?
23 \xymatrix@1{
24 A \ar@{-}[rr]^{more} & & B \ar@{-}[r]_f & C }
Explanation: Here, the label stays centered. Note that we had to modify the direction “[rr]” to account for the blank column between A and B.
12. What about curved arrows?
25 \xymatrix@1{
26 A \ar@{-}@/^/[rr]^{more} & & B \ar@{-}@/_/[r]_f & C }
Explanation: All we did here was add another style “@/^/” and “@/_/”. /^/ means curve upwards; likewise, /_/ means curve downwards.
13. The last example: a square.
First, we create the outline of the square.
27 \xymatrix{
28 A & B \\
29 C & D
30 }
Next, we connect the corners with arrows.
31 \xymatrix{
32 A \ar[r] \ar[d] & B \ar[d] \\
33 C \ar[r] & D
34 }
Next, we change the styling of the arrows and add labels to each side.
35 \xymatrix{
36 A \ar@{-}[r]^e \ar@{-}[d]_f & B \ar@{-}[d]^g \\
37 C \ar@{-}[r]_h & D
38 }
Finally, let’s add some curved arrows, just for the sake of it.
39 \xymatrix{
40 A \ar@{-}[r]^e \ar@{-}[d]_f & B \ar@{-}[d]^g \ar@/^1pc/[d]\\
41 C \ar@{-}[r]_h \ar@/_1pc/[r]& D
42 }
The added “1pc” makes the curve more prominent so it does not overlap the label.
This tutorial only covers pages 1 – 4 of the 16 page manual. As you can tell, it is dense.
Xy-pic is a great $latex \LaTeX$ package that can be used to create beautiful diagrams when typesetting documents.