我想把矩阵写在从X到Y 3x3类型、从Z到Y 3x2类型的箭头上;

我想把矩阵写在从X到Y 3x3类型、从Z到Y 3x2类型的箭头上;

在此处输入图片描述

我该如何对上述图表进行编程?`

$$ \begin{tikzcd} k\oplus k^2 \arrow[r] & k\oplus k^2 & 0\oplus k \arrow[l] \end{tikzcd} $$

`

答案1

这里有两个实现;说实话,我更喜欢第二个。对于第一个,我定义了一个smallmatrix增加行距的变体。

请注意,这ampersand replacement是必需的,因为您想要使用&矩阵。

\documentclass{article}
\usepackage{mathtools}
\usepackage{tikz-cd}
\usepackage{etoolbox}

\makeatletter
\let\xsmallmatrix\smallmatrix
\let\endxsmallmatrix\endsmallmatrix
\patchcmd{\xsmallmatrix}{6\ex@}{12\ex@}{}{}
\newenvironment{bxsmallmatrix}
 {\left[\xsmallmatrix}
 {\endxsmallmatrix\right]}
\makeatother

\begin{document}

\[
\begin{tikzcd}[ampersand replacement=\&,column sep=huge]
k\oplus k^2
\arrow[r,"{\begin{bxsmallmatrix}1&0&0\\0&1&1\\0&0&1\end{bxsmallmatrix}}"]
\&
k\oplus k^2
\&
0\oplus k \arrow[l,"{\begin{bxsmallmatrix}0&0\\0&1\\0&1\end{bxsmallmatrix}}"']
\end{tikzcd}
\]

\[
\begin{tikzcd}[ampersand replacement=\&,column sep=huge]
k\oplus k^2
\arrow[r,"{\begin{bsmallmatrix}1&0&0\\0&1&1\\0&0&1\end{bsmallmatrix}}"]
\&
k\oplus k^2
\&
0\oplus k \arrow[l,"{\begin{bsmallmatrix}0&0\\0&1\\0&1\end{bsmallmatrix}}"']
\end{tikzcd}
\]

\end{document}

在此处输入图片描述

答案2

一个简单的代码tikz-cdbsmallmatrix环境mathtools

\documentclass[11pt]{article}
\usepackage{mathtools} 
\usepackage{tikz-cd}

\begin{document}

\[
 \begin{tikzcd}[row sep=1.2cm, column sep=2cm, arrows=-stealth, ampersand replacement=\&]
  k\oplus k^2\rar{\begin{bsmallmatrix}1 & 0 & 0\\0 & 1 & 1\\0 & 0 & 1\end{bsmallmatrix}} \& k\oplus k^2\& \lar[swap]{\begin{bsmallmatrix}0 & 0\\0 & 1\\ 0 & 1\end{bsmallmatrix}} 0\oplus k
   \end{tikzcd}
\]

\end{document}

在此处输入图片描述

编辑

要控制矩阵中的水平间距,您可以使用环境bmatrix,并使用经典工具\arraystretch\arraycolsep(分别为默认值15pt)。例如:

   \[ \renewcommand{\arraystretch}{0.7}\setlength{\arraycolsep}{3pt}
     \begin{tikzcd}[row sep=1.2cm, column sep=2cm, arrows=-stealth, ampersand replacement=\&]
      k\oplus k^2\rar{\begin{bmatrix}1 & 0 & 0\\0 & 1 & 1\\0 & 0 & 1\end{bmatrix}} \& k\oplus k^2\& \lar[swap]{\begin{bmatrix}0 & 0\\0 & 1\\ 0 & 1\end{bmatrix}} 0\oplus k
       \end{tikzcd}
    \]

得到如下图表:

在此处输入图片描述

答案3

使用 tikz-machinery 的基本工具就足够了。事实上,下面的代码只是一个非常简单的练习,你可以根据你的想法进一步修改它。

\documentclass{standalone}

\usepackage{amsmath}

\usepackage{tikz}
    \usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
\node (A) {$k\oplus k^2$};
\node (B) at ($(A)+(3,0)$) {$k\oplus k^2$};
\node (C) at ($(B)+(3,0)$) {$0\oplus k$};
%
\draw[-stealth]
    (A) -- (B)
    node[midway,above,scale=.5]
        {$\begin{bmatrix}
            1& 0& 0\\
            0& 1& 0\\
            0& 0& 1
          \end{bmatrix}$};
\draw[-stealth]
    (C) -- (B)
    node[midway,above,scale=.5]
        {$\begin{bmatrix}
            0& 0\\
            0& 1\\
            0& 1
          \end{bmatrix}$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容