答案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-cd
和bsmallmatrix
环境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
(分别为默认值1
和5pt
)。例如:
\[ \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}