我做了以下代码:
\documentclass[tikz, border=3mm]{standalone}
\usepackage{easybmat}
\begin{document}
\[
\begin{array}{}
~\\
~\\
~\\
~\\
~
~\\
~\\
$k$\\
~
\end{array}
\hspace*{-0.54cm}
\begin{array}{}
~\\
~\\
~\\
~\\
~
$i$\\
~\\
~
\end{array}
\begin{array}{}
\hspace*{1.5cm}\stackrel{j}{\downarrow}\\
\left(
\begin{BMAT}{cccccc}{ccccc}
* & * & * & \cdots & * & * \\
0 & * & * & \cdots & * & \vdots \\
\vdots & 0 & 0 & a_{ij} & \cdots &* \\
0 & \cdots & \fbox{$a_{kj}$} & a_{k,j+1} & \cdots & *\\
0 & \cdots & *& * & \cdots & *
\addpath{(2,5,1)ddddd}
\addpath{(3,5,1)ddddd}
\addpath{(0,1,1)rrrrrr}
\addpath{(0,2,1)rrrrrr}
\addpath{(0,3,1)rrrrrr}
\end{BMAT}
\right)
\end{array}
\hspace*{-0.1cm}
\begin{array}{}
~\\
~\\
~\\
~\\
~\\
~\\
~\\
~
$\leftarrow k+1$
\end{array}
\]
\end{document}
得到如下的特定矩阵:
如果需要一个弯曲的箭头,我该怎么办?我的意思是像这样:
谢谢你的时间!
答案1
我猜易贝特包提供了一种绘制此类矩阵的简单方法。我不知道这个包,因此推荐一个matrix of math nodes
使用蒂克兹. 使用这个可以得到接近你想要的东西:
基本思想是将事物放入“正常”的乳胶矩阵中,各列之间用&
,然后使用“正常”在矩阵上绘图蒂克兹。矩阵的节点称为 (M-<row>-<col>)
,其中row
和col
是行和列索引。(在下面的代码中,由指定——例如,如果您想使用M
而不是更改为。)将内部线条等放到位会有一些复杂之处。其中大部分是不言自明的,但不是全部,周围的框\matrix (M) [...]{...}
mat
M
(M)
(mat)
a_{kj}
是最棘手的部分,我为分隔符添加了一些样式,因为我认为它们太大而且离矩阵太远了。有关更多详细信息,请参阅第 57 节蒂克兹手册。在 OP 中,我不确定第三行的高度是否应该高于其他行。如果需要,那么您可以添加类似
row 3/.style={minimum height=3em}
矩阵样式规范:\matrix (M)[...style...]{...}
。
完整代码如下:
\documentclass[border=10mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix,calc}
\begin{document}
\begin{tikzpicture}[mline/.style={thin,gray},
boxed/.style={rectangle,minimum width=6mm,draw, text depth=0.5mm,
inner sep=0.7mm, text height=1ex},
every left delimiter/.style={xshift=.7em,scale=0.9},
every right delimiter/.style={xshift=-.7em,scale=0.9},
]
\matrix (M)[matrix of math nodes,
left delimiter=(,
right delimiter=),
row sep =-\pgflinewidth,
column sep = -\pgflinewidth,
nodes={anchor=center, minimum width=2.2em,
text height=1.8ex, text depth=0},
]{ * & * & * & \cdots & * & * \\
0 & * & * & \cdots & * &\vdots\\
\vdots & 0 & 0 & a_{ij} & \cdots & * \\
0 & \cdots & |[boxed]|a_{kj} & a_{k,j+1} & \cdots & *\\
0 & \cdots & * & * & \cdots & *\\
};
\draw[<-] ($(M-5-6)+(0.6,0)$) --++(0.4,0)node[right]{$k+1$};
\draw[<-] ($(M-1-3)+(0,0.2)$) --++(0,0.4)node[above]{$j$};
\draw[<->] ($(M-3-1)+(-0.9,0)$)node[right]{$i$} to[out=210, in=150]
($(M-4-1)+(-0.9,0)$)node[right]{$k$};
\draw[mline](M-1-2.north east) -- (M-5-2.south east);
\draw[mline](M-1-3.north east) -- (M-5-3.south east);
\draw[mline](M-2-1.south west) -- (M-2-6.south east);
\draw[mline](M-3-1.south west) -- (M-3-6.south east);
\draw[mline](M-4-1.south west) -- (M-4-6.south east);
\end{tikzpicture}
\end{document}