我想请教您如何使用 latex 编写矩阵。为了解释行和列的含义,矩阵应该被两个箭头包围,一个在左侧指向下方,一个在上方指向右侧。箭头标记的位置。我尝试了几种方法,例如:
\[
M_{reg} = \bordermatrix{~ & 0 & 1 & 2 & 3 & 4 & \cr
0 & 0 & 0 & 0 & 1 & 1 \cr
1 & 0 & 0 & 1 & 1 & 1 \cr
2 & 0 & 0 & 1 & 1 & 0 \cr
3 & 0 & 0 & 1 & 1 & 0 \cr
4 \downarrow{Ca^{2+}} & 0 & 0 & 0 & 0 & 0 \cr
%Ca^{2+}
}^{\xrightarrow{DAG}}
\]
但它并不漂亮,而且没有正确对齐。您有什么想法或指示来正确绘制该矩阵吗?
答案1
TikZ 的另一种方法类似于突出显示矩阵中的元素:
\documentclass{article}
\usepackage{tikz}
\newcommand{\tikzmark}[1]{\tikz[overlay, remember picture] \coordinate (#1);}
\begin{document}
\[
M_{reg} = \qquad \bordermatrix{~ & \tikzmark{harrowleft} 0 & 1 & 2 & 3
& 4\tikzmark{harrowright} \cr
\tikzmark{varrowtop} 0 & 0 & 0 & 0 & 1 & 1 \cr
1 & 0 & 0 & 1 & 1 & 1 \cr
2 & 0 & 0 & 1 & 1 & 0 \cr
3 & 0 & 0 & 1 & 1 & 0 \cr
\tikzmark{varrowbottom}4 & 0 & 0 & 0 & 0 & 0 \cr
}
\]
\tikz[overlay,remember picture] {
\draw[->] ([yshift=3ex]harrowleft) -- ([yshift=3ex]harrowright)
node[midway,above] {\scriptsize DAG};
\draw[->] ([yshift=1.5ex,xshift=-2ex]varrowtop) -- ([xshift=-2ex]varrowbottom)
node[near end,left] {\scriptsize $Ca^{2+}$};
}
\end{document}
答案2
您可以使用 TikZ 来注释矩阵。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\[
M_{reg} = \bordermatrix{~ & 0 & 1 & 2 & 3 & \tikz[remember picture]\node[inner sep=0pt] (a) {4}; & \cr
0 & 0 & 0 & 0 & 1 & 1 \cr
1 & 0 & 0 & 1 & 1 & 1 \cr
2 & 0 & 0 & 1 & 1 & 0 \cr
3 & 0 & 0 & 1 & 1 & 0 \cr
\tikz[remember picture]\node[inner sep=0pt] (b) {4}; & 0 & 0 & 0 & 0 & 0 \cr
}
\]
\begin{tikzpicture}[overlay, remember picture]
\draw[->] (a.east) ++(2mm,0) -- node[above] {DAG} ++(1,0);
\draw[->] (b.south) ++(0,-2mm) -- node[right] {$Ca^{2+}$} ++(0,-1);
\end{tikzpicture}
\end{document}
结果:
最后一列和右括号之间有一个额外的空格,因为&
第一行有一个额外的空格。我把它留在我的代码中,因为我认为你可能有这样做的理由。如果没有,你可以直接删除它,间距就会正确。
答案3
使用{NiceArray}
和nicematrix
Tikz 绘制箭头。
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
$\begin{NiceArray}{ccccccc}
& & \Block{1-*}{\text{\small DAG}}\\
\rule{0pt}{12pt} & & 0 & 1 & 2 & 3 & 4 \\
\Block{*-1}{\text{Ca}^{2+}}
& 0 & 0 & 0 & 0 & 1 & 1 \\
& 1 & 0 & 0 & 1 & 1 & 1 \\
& 2 & 0 & 0 & 1 & 1 & 0 \\
& 3 & 0 & 0 & 1 & 1 & 0 \\
& 4 & 0 & 0 & 0 & 0 & 0 \\
\CodeAfter
\SubMatrix({3-3}{7-7})
\tikz \draw [->] (2-|3) -- ([xshift=1mm]2-|last) ;
\tikz \draw [->] (3-|2) -- ([yshift=1mm]last-|2) ;
\end{NiceArray}$
\end{document}
您需要多次编译(因为 PGF/Tikz 节点)。