6

I'm wanting to re-use notation used in a paper, but I'm having trouble formatting it in LaTeX. I'm trying to put a small (either a 2x2 or a 2x1 matrix) on top or to the right of an arrow. I want something like this (but with matrices with parentheses instead of brackets): enter image description here

I've tried typesetting the bottom row, and here is my attempt and the output:

\begin{displaymath}
    \xymatrix{ G_{1} \oplus F_{2} \ar[r]^{\begin{psmallmatrix}- $\psi_{1}$ & 0 \\ g & \phi_2 \end{psmallmatrix}} 
 & F_{1} \oplus G_{2} \ar[r]^{\begin{psmallmatrix}- $\phi_{1}$ & 0 \\f & $\psi_2$ \end{psmallmatrix}} } 
& $G_{1} \oplus F_{2}$ }
\end{displaymath}

....... attempt

I'm using the packages xy and mathtools.

  • 1
    For such things I prefer tikz package... You can control anything and you need simple commands... almost everything can be inside a node and with a few hours of practice you can do almost (if not) anything. – koleygr Oct 28 '17 at 20:50
7

You need to increase the row and column spacing. The first realization is more appealing to me, the second one is similar to the original picture.

The statement @R+1pc increases the row spacing by 1pc = 12pt; similarly @C+1pc.

\documentclass{article}
\usepackage{amsmath}
\usepackage[all,cmtip]{xy}

\newcommand{\spmat}[1]{%
  \left(\begin{smallmatrix}#1\end{smallmatrix}\right)%
}

\begin{document}

\begin{equation*}
\xymatrix@C+2pc{
  G_{1} \oplus F_{2} \ar[r]^{\spmat{-\psi_{1} & 0 \\ g & \phi_2}}
  &
  F_{1} \oplus G_{2} \ar[r]^{\spmat{-\phi_{1} & 0 \\f & \psi_2}}
  &
  G_{1} \oplus F_{2}
}
\end{equation*}

\begin{equation*}
\xymatrix@R+1pc@C+2pc{
  F_2 \ar[r]^{\phi_2} \ar[d]^{\spmat{0 \\ 1_{F_2}}}
  &
  G_2 \ar[r]^{\psi_2} \ar[d]^{\spmat{0 \\ 1_{G_2}}}
  &
  F_2 \ar[d]^{\spmat{0 \\ 1_{F_2}}}
  \\
  G_1\oplus F_1 \ar[r]^{\spmat{-\psi_1 & 0 \\ g & \psi_2}}
  &
  F_1\oplus G_2 \ar[r]^{\spmat{-\phi_1 & 0 \\ f & \psi_2}}
  &
  G_1\oplus F_2
}
\end{equation*}

\begin{equation*}
\xymatrix@C+3pc{
  F_2 \ar[r]^{\phi_2} \ar[d]^{\spmat{0 \\ 1_{F_2}}}
  &
  G_2 \ar[r]^{\psi_2} \ar[d]^{\spmat{0 \\ 1_{G_2}}}
  &
  F_2 \ar[d]^{\spmat{0 \\ 1_{F_2}}}
  \\
  G_1\oplus F_1 \ar[r]^{\spmat{-\psi_1 & 0 \\ g & \psi_2}}
  &
  F_1\oplus G_2 \ar[r]^{\spmat{-\phi_1 & 0 \\ f & \psi_2}}
  &
  G_1\oplus F_2
}
\end{equation*}

\end{document}

enter image description here

With tikz-cd one needs to be careful when nesting arrays in tikzcd.

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}

\begingroup\lccode`~=`& \lowercase{\endgroup
\newcommand{\spmat}[1]{%
  \left(
  \let~=&
  \begin{smallmatrix}#1\end{smallmatrix}
  \right)
}}

\begin{document}

\begin{equation*}
\begin{tikzcd}
  G_{1} \oplus F_{2} \arrow[r,"\spmat{-\psi_{1} & 0 \\ g & \phi_2}"]
  &
  F_{1} \oplus G_{2} \arrow[r,"\spmat{-\phi_{1} & 0 \\f & \psi_2}"]
  &
  G_{1} \oplus F_{2}
\end{tikzcd}
\end{equation*}


\begin{equation*}
\begin{tikzcd}[column sep=huge,row sep=large]
  F_2 \arrow[r,"\phi_2"] \arrow[d,"\spmat{0 \\ 1_{F_2}}"]
  &
  G_2 \arrow[r,"\psi_2"] \arrow[d,"\spmat{0 \\ 1_{G_2}}"]
  &
  F_2 \arrow[d,"\spmat{0 \\ 1_{F_2}}"]
  \\
  G_1\oplus F_1 \arrow[r,"\spmat{-\psi_1 & 0 \\ g & \psi_2}"]
  &
  F_1\oplus G_2 \arrow[r,"\spmat{-\phi_1 & 0 \\ f & \psi_2}"]
  &
  G_1\oplus F_2
\end{tikzcd}
\end{equation*}

\begin{equation*}
\begin{tikzcd}[column sep=4pc]
  F_2 \arrow[r,"\phi_2"] \arrow[d,"\spmat{0 \\ 1_{F_2}}"]
  &
  G_2 \arrow[r,"\psi_2"] \arrow[d,"\spmat{0 \\ 1_{G_2}}"]
  &
  F_2 \arrow[d,"\spmat{0 \\ 1_{F_2}}"]
  \\
  G_1\oplus F_1 \arrow[r,"\spmat{-\psi_1 & 0 \\ g & \psi_2}"]
  &
  F_1\oplus G_2 \arrow[r,"\spmat{-\phi_1 & 0 \\ f & \psi_2}"]
  &
  G_1\oplus F_2
\end{tikzcd}
\end{equation*}

\end{document}

enter image description here

The awkward (but safe) trick above can be avoided, still defining \spmat as in the Xy-pic case. The downside is that one needs to input the tikzcd in a slightly different fashion (only when nested arrays are needed):

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}

\newcommand{\spmat}[1]{%
  \left(
  \begin{smallmatrix}#1\end{smallmatrix}
  \right)
}

\begin{document}

\begin{equation*}
\begin{tikzcd}[ampersand replacement=\&,column sep=huge]
  G_{1} \oplus F_{2} \arrow[r,"\spmat{-\psi_{1} & 0 \\ g & \phi_2}"]
  \&
  F_{1} \oplus G_{2} \arrow[r,"\spmat{-\phi_{1} & 0 \\f & \psi_2}"]
  \&
  G_{1} \oplus F_{2}
\end{tikzcd}
\end{equation*}

\begin{equation*}
\begin{tikzcd}[ampersand replacement=\&,column sep=huge,row sep=large]
  F_2 \arrow[r,"\phi_2"] \arrow[d,"\spmat{0 \\ 1_{F_2}}"]
  \&
  G_2 \arrow[r,"\psi_2"] \arrow[d,"\spmat{0 \\ 1_{G_2}}"]
  \&
  F_2 \arrow[d,"\spmat{0 \\ 1_{F_2}}"]
  \\
  G_1\oplus F_1 \arrow[r,"\spmat{-\psi_1 & 0 \\ g & \psi_2}"]
  \&
  F_1\oplus G_2 \arrow[r,"\spmat{-\phi_1 & 0 \\ f & \psi_2}"]
  \&
  G_1\oplus F_2
\end{tikzcd}
\end{equation*}

\begin{equation*}
\begin{tikzcd}[ampersand replacement=\&,column sep=4pc]
  F_2 \arrow[r,"\phi_2"] \arrow[d,"\spmat{0 \\ 1_{F_2}}"]
  \&
  G_2 \arrow[r,"\psi_2"] \arrow[d,"\spmat{0 \\ 1_{G_2}}"]
  \&
  F_2 \arrow[d,"\spmat{0 \\ 1_{F_2}}"]
  \\
  G_1\oplus F_1 \arrow[r,"\spmat{-\psi_1 & 0 \\ g & \psi_2}"]
  \&
  F_1\oplus G_2 \arrow[r,"\spmat{-\phi_1 & 0 \\ f & \psi_2}"]
  \&
  G_1\oplus F_2
\end{tikzcd}
\end{equation*}

\end{document}
  • 2
    however, op said that parentheses were wanted, not brackets. – barbara beeton Oct 29 '17 at 1:08
  • @barbarabeeton I oversaw it. – egreg Oct 29 '17 at 8:42
5

A solution with tikz-cd and a solution with pstricks:

\documentclass{article}
\usepackage{mathtools}
\usepackage{tikz-cd}
\newcommand{\mymatrix}[1]{\begin{psmallmatrix} #1 \end{psmallmatrix}}
\usepackage{pst-node} 
\usepackage{auto-pst-pdf} %% to compile pstricks code with pdflatex

\begin{document}

 \[  \begin{tikzcd}[arrows=-stealth, ampersand replacement=\&, column sep=4em, row sep=3em]%[column sep=-0.5em, row sep=0.8em]
F_2 \dar{\mymatrix{0\\\mkern-5mu\mathbf{1}_{F_2\mkern-4mu}}}\rar{\phi_2} \& G_2 \dar{\mymatrix{0\\\mkern-5mu\mathbf{1}_{G_2\mkern-4mu}}}\rar{\psi_2} \& F_2\dar{\mymatrix{0\\\mkern-5mu\mathbf{1}_{F_2\mkern-4mu}}}\\
G_1\oplus F_2\rar{\mymatrix{\mkern-5mu-\psi_1\! & 0\\g &\phi_2\mkern-4mu}} \& F_1\oplus G_2 \rar{\mymatrix{\mkern-5mu-\phi_1\! & 0\\ f &\psi_2\mkern-4mu}} \& G_1\oplus F_2
\end{tikzcd} \]
\bigskip

\[ \begin{psmatrix}[rowsep=1.25cm, colsep=1.6cm]
%% Nodes
  F_2 & G_2 & F_2 \\
G_1\oplus F_2 & F_1\oplus G_2 & G_1\oplus F_2
%% Arrows and labels%
\everypsbox{\scriptstyle}
\psset{linewidth=0.6pt, arrows=->, arrowinset=0.15, nodesep=2pt, labelsep=3pt}
%% Horizontal arrows
\ncline{1,1}{1,2}\naput{\phi_2}
\ncline{1,2}{1,3}\naput{\psi_2}
\ncline{2,1}{2,2}\naput{\mymatrix{\mkern-5mu-\psi_1\! & 0\\g &\phi_2\mkern-4mu}}
\ncline{2,2}{2,3}\naput{\mymatrix{\mkern-5mu-\phi_1\! & 0\\ f &\psi_2\mkern-4mu}}
%% Vertical arrows
\psset{npos=0.45}
\ncline{1,1}{2,1}\naput{\mymatrix{0\\\mkern-5mu\mathbf{1}_{F_2\mkern-4mu}}}
\ncline{1,2}{2,2}\naput{\mymatrix{0\\\mkern-5mu\mathbf{1}_{G_2\mkern-4mu}}}
\ncline{1,3}{2,3}\naput{\mymatrix{0\\\mkern-5mu\mathbf{1}_{F_2\mkern-4mu}}}
\end{psmatrix} \]

\end{document} 

enter image description here

  • This is the solution I prefer, I would also show the possibility to draw the matrix of the first down arrow on the left. – CarLaTeX Oct 29 '17 at 6:05
  • @CarLaTeX: I considered this possibility, but there's no real symmetry in the labels of the vertical arrows, due to the middle one. Unless I center it on the arrow… Do you think I should? – Bernard Oct 29 '17 at 11:37
  • You're right, let it as is :) – CarLaTeX Oct 29 '17 at 11:40
5

Here's a solution that employs the machinery of the amscd package, along with the bsmallmatrix environment provided by the mathtools package.

enter image description here

\documentclass{article}  
\usepackage{mathtools,amscd}
\begin{document}
\[\begin{CD}
F_2 @>\phi_2>> G_2 @>\phi_2>> F_2 \\
@VV{\begin{psmallmatrix}0\\1^{}_{F_2}\end{psmallmatrix}}V
@VV{\begin{psmallmatrix}0\\1^{}_{G_2}\end{psmallmatrix}}V
@VV{\begin{psmallmatrix}0\\1^{}_{F_2}\end{psmallmatrix}}V \\
G_1\oplus F_2 
@>{\smash[t]{\,\begin{psmallmatrix}
   -\psi_1 & 0 \\ g & \phi_2
   \end{psmallmatrix}}}>> 
F_1\oplus G_2 
@>{\smash[t]{\,\,\begin{psmallmatrix}
   -\phi_1 & 0 \\ f & \psi_2
   \end{psmallmatrix}}}>> 
G_1\oplus F_2
\end{CD}\]
\end{document}
  • 2
    parentheses, not brackets ... – barbara beeton Oct 29 '17 at 1:09
4

An answer using tikz:

\documentclass{article}
\usepackage{tikz}
\usepackage{amsmath}
\usetikzlibrary{positioning}

\begin{document}
   \begin{tikzpicture}
      \node (A) {$F_2$};
      \node[right=3cm of A] (B) {$G_2$};
      \node[right=3cm of B] (C) {$F_2$};
      \node[below=2cm of A] (D) {$G_1\oplus F_2$};
      \node[below=2cm of B] (E) {$F_1\oplus G_2$};
      \node[below=2cm of C] (F) {$G_1 \oplus F_2$};
      \draw[->] (A)--(B) node[midway, above] {$\phi_2$};
      \draw[->] (B)--(C) node[midway, above] {$\psi_2$};
      \draw[->] (D)--(E) node[midway, above,font=\small] {$\begin{pmatrix}-\psi_1 & 0\\ g& \phi_2\end{pmatrix}$};
      \draw[->] (E)--(F) node[midway, above,font=\small] {$\begin{pmatrix}-\phi_1 & 0\\f& \psi_2\end{pmatrix}$};
      \draw[->] (A)--(D) node[midway, right,font=\small] {$\begin{pmatrix}0\\1_{F_2}\end{pmatrix}$};
      \draw[->] (B)--(E) node[midway, right,font=\small] {$\begin{pmatrix}0\\1_{G_2}\end{pmatrix}$};
      \draw[->] (C)--(F) node[midway, right,font=\small] {$\begin{pmatrix}0\\1_{F_2}\end{pmatrix}$};

   \end{tikzpicture}

\end{document}

I suggest tikz because of really advanced user control and because after you learn the basics you can use it everywhere.

Output:

enter image description here

  • 1
    parentheses, not brackets ... – barbara beeton Oct 29 '17 at 1:09
  • Thanks @barbarabeeton... Funny that nobody noticed before from all of us... – koleygr Oct 29 '17 at 1:58

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.