I would like to draw the following graph: enter image description here

without using any TikZ style library. I have tried putting \phantom to make X and Y aligned, it did not work (don't know why). Additionally, putting multiple alignments &, && etc. doesn't work, although it alignes correctly, now graph spans the whole line, which makes it ugly. I would be grateful for a neat solution.

I don't want any libraries because I think of using this in Mathjax.

  • 2
    I wouldn't use TikZ even if you didn't want to use this with MathJax. Since the diagram is simple I'd use something like xypic which provides far easier and more intuitive syntax.
    – Bakuriu
    Mar 30, 2015 at 16:59

4 Answers 4


You can use an array, e.g.

X_0 & \to & X_1 & \to & X_2 & \to & \dots \\
\downarrow && \downarrow && \downarrow \\ 
Y_0 &  & Y_1 &  & Y_2 &  & \dots

Testing this on http://cdn.mathjax.org/mathjax/latest/test/sample-dynamic.html gives

enter image description here


For simple diagrams like these you can use the amscd environment:

X_0 @>>> X_1 @>>> X_2 @>>> \dots \\
Y_0 @. Y_1 @. Y_2 @. \dots

Right, left, down and up arrows are denoted by @>>>, @<<<, @VVV and @AAA; an empty arrow is @.; an “equal” vertical arrow is @|, horizontal is @=.

With @>{f}>> you get a label f above the arrow, with @>>{f}> the arrow is below (you can fill both fields), the same for @<<<. It is respectively left and right for the vertical arrows @VVV and @AAA.

enter image description here

Within MathJax you need \require{AMScd}: this is what I get from http://cdn.mathjax.org/mathjax/latest/test/sample-dynamic.html

enter image description here

  • I did not know combining \require with MathJax. This is another great take-home know-how for me. Thanks!
    – odea
    Mar 29, 2015 at 14:39

With matrix and a horizontal spacing close to the normal one:

X_0 & \hskip-7pt\rightarrow \hskip-7pt& X_1 & \hskip-7pt\rightarrow\hskip-7pt &X_2 & \hskip-7pt\cdots\\
\downarrow & &\downarrow & &\downarrow \\
Y_0 & &Y_1 & &Y_2 & \hskip-7pt\cdots 

enter image description here


A simple use of the tabbing environment would suffice:

$X_0_$ \= $\longrightarrow$ \= $X_1$ \= $\longrightarrow$ \= $X_2$ \= \ldots \\
$\downarrow$ \> \> $\downarrow$ \> \> $\downarrow$\\
$Y_0_$ \> \> $Y_1$ \> \> $Y_2$ \= \ldots \\

This produces:

enter image description here

No packages needed.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .