如何在矩阵旁边放置弯曲箭头

如何在矩阵旁边放置弯曲箭头

我做了以下代码:

   \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>),其中rowcol是行和列索引。(在下面的代码中,由指定——例如,如果您想使用M而不是更改为。)将内部线条等放到位会有一些复杂之处。其中大部分是不言自明的,但不是全部,周围的框\matrix (M) [...]{...}matM(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}

相关内容