31

Can anyone help me in giving commands for commutative diagrams in LaTeX ? It doesn't seem to appear properly in the LaTeX guides that I have. A command for a simple triangular diagram with arrows associated to maps would be good enough, or maybe some appropriate reference.

4

2 Answers 2

49

For simple and complex diagrams, I'd recommend tikz-cd. If you are not comfortable with using the macros, there is also a web-based GUI editor at https://tikzcd.yichuanshen.de/. The following example can be viewed in the editor under this link (click).

Let's see an easy triangular diagram.

\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\[
  \begin{tikzcd}
    A \arrow{r}{f} \arrow[swap]{dr}{g\circ f} & B \arrow{d}{g} \\
     & C
  \end{tikzcd}
\]
\end{document}

enter image description here

An arrow takes as argument the "steps" where it has to go: r stands for "right", d stands for "down"; also u stands for "up" and l for "left".

A similar syntax is available with Xy-pic.

\documentclass{article}
\usepackage[all,cmtip]{xy}
\begin{document}
\[
\xymatrix{
A \ar[r]^{f} \ar[dr]_{g\circ f} & B \ar[d]^{g} \\
 & C
}
\]
\end{document}

Note how the labels are positioned: ^ means above the arrow, _ means below; above and below are with respect to the direction of the arrow: rotate it counterclockwise until it points from left to right.

enter image description here

As you see, the results are pretty much alike. While I used to use Xy-pic, I'm now more convinced that tikz-cd can be better, as it relies on the powerful TikZ/PGF library.

7
  • tikz-cd is significantly better. It is more flexible and powerful, and just compare the hooked arrows with those of xy-pic.
    – Gaussler
    Feb 18, 2016 at 17:05
  • 1
    @Gaussler I fully agree! I have used Xy-pic quite extensively, with good results, but tikz-cd is much more powerful and intuitive. You won't find a single hook arrow in my older diagrams. ;-)
    – egreg
    Feb 18, 2016 at 17:09
  • 2
    A \arrow{rr}{f} \arrow[swap]{dr}{g\circ f} && B \arrow{dl}{g} \\ & C (you may have to adjust the column sep)
    – egreg
    Feb 15, 2017 at 21:50
  • 1
    @DavidWarrenKatz Of course you can: \colorbox{red}{\xymatrix{...}}
    – egreg
    Mar 19, 2020 at 17:00
  • 1
    The tikzcd GUI editor is fantastic! Thank you.
    – Nat Kuhn
    Apr 27, 2021 at 0:03
9

Another way is to use the psmatrix environment, from pst-node. The objects are first described as nodes in a matrix, then the arrows are described. In this description, nodes can be given a name, or are described by their pair of indices i, j in the matrix. See documentation of pst-node for details on how to connect nodes or more generally how to fine-tune the look of a diagram.

You can compile with pdflatex if you use the --shell-escape switch (TeX Live, MacTeX) or --enable-write18 (MiKTeX), and use the pdf option for the document class: this loads the auto-pst-pdf package. Alternatively, you can load the latter package, after pstricks and its family.

Here is a simple example:

\documentclass[pdf]{article}
\usepackage{pst-node}

\begin{document}

\[ \psset{arrows=->, arrowinset=0.25, linewidth=0.6pt, nodesep=3pt, labelsep=2pt, rowsep=1.2cm}
\begin{psmatrix}
  (X, d) & (X_1 ,d_1 )\\%
   & (X_2 ,d_2)
%%%
 \ncline{1,1}{1,2}\naput{T_1} \ncline{1,1}{2,2}\nbput{T_2 }
 \ncline{1,2}{2,2}\naput[npos=0.45]{T}
\end{psmatrix}
\]
\end{document} 

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.