如何在方程式中的向量元素之间画箭头

如何在方程式中的向量元素之间画箭头

我想要在两个列向量之间画箭头,就像我这里展示的那样。

在此处输入图片描述

为了制作此图像,我在 LaTeX 中渲染了两个矩阵,如下所示:

\[
\vec{P}=\begin{bmatrix}
A_1\\
A_2\\
A_1\\
A_3\\
\cdot\\
\cdot\\
\cdot\\
A_6\\
A_5
\end{bmatrix}
\qquad{\longrightarrow}\qquad
\begin{bmatrix}
    A_1\\
    A_1\\
    A_1\\
    A_2\\
    \cdot\\
    \cdot\\
    \cdot\\
    A_5\\
    A_3
\end{bmatrix}=\vec{P}'
\]

然后我将 PNG 导出到绘图应用程序并添加了条目之间的箭头。有什么方法可以直接在 LaTeX 中执行此操作以使其看起来美观吗?

答案1

F. Pantigny 解决方案的替代方案,也使用该nicematrix包,但只有一个包含所有内容的矩阵(也是为了展示该包的几种令人惊叹的能力):

\documentclass{article}
\usepackage{nicematrix, tikz}

\begin{document}
\[
\begin{NiceArray}{ c w{c}{4em} c }[first-col, last-col]
    \Block{10-1}{\vec{P} =}
         & A_1    & \Block{10-1}{\longrightarrow} 
                         & A_1    & \Block{10-1}{= \vec{P}'} \\
         & A_2    &      & A_3    & \\ 
         & A_1    &      & A_1    & \\
         & A_1    &      & A_1    & \\
         & A_2    &      & A_2    & \\
         & A_3    &      & A_1    & \\
         & \Vdots &      & \Vdots & \\
         &        &      &        & \\
         & A_6    &      & A_2    & \\
         & A_5    &      & A_5    & \\
\CodeAfter
    \SubMatrix[{1-1}{10-1}]
    \SubMatrix[{1-3}{10-3}]
    \begin{tikzpicture} 
        \foreach \a/\b in 
            {1/1, 3/3, 3/4, 3/6, 5/5, 5/9, 6/2, 10/10} {
            \draw[-stealth] 
                ([xshift=5pt]\a-1.east) -- ([xshift=-5pt]\b-3.west);
        }
    \end{tikzpicture}
\end{NiceArray}
\]
\end{document}

在此处输入图片描述

答案2

使用{bNiceMatrix}nicematrixTikZ 绘制箭头。

\documentclass{article}
\usepackage{nicematrix,tikz}

\begin{document}

\[
\vec{P}=\begin{bNiceMatrix}[name=A]
A_1\\
A_2\\
A_1\\
A_3\\
\cdot\\
\cdot\\
\cdot\\
A_6\\
A_5
\end{bNiceMatrix}
\qquad{\longrightarrow}\qquad
\begin{bNiceMatrix}[name=B]
    A_1\\
    A_1\\
    A_1\\
    A_2\\
    \cdot\\
    \cdot\\
    \cdot\\
    A_5\\
    A_3
\end{bNiceMatrix}=\vec{P}'
\begin{tikzpicture}[remember picture,overlay,->,shorten > = 2mm, shorten < = 2mm]
  \draw (A-1-1) -- (B-1-1) ; 
  \draw (A-2-1) -- (B-3-1) ; 
  \draw (A-4-1) -- (B-4-1) ; 
\end{tikzpicture}
\]

\end{document}

上述代码的输出

答案3

这是基于tikztikzmark库的解决方案。使用创建锚点后\tikzmark{<label>}tikz您可以在指定锚点之间绘制箭头。

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\begin{document}
\[
\vec{P}=\begin{bmatrix}
A_1 \tikzmark{11} \\
A_2 \tikzmark{12} \\
A_1 \\
A_3 \tikzmark{14} \\
\cdot \\
\cdot \\
\cdot \\
A_6 \\
A_5
\end{bmatrix}
\qquad{\longrightarrow}\qquad
\begin{bmatrix}
    \tikzmark{21}A_1 \\
    A_1 \\
    \tikzmark{23}A_1 \\
    \tikzmark{24}A_2 \\
    \cdot \\
    \cdot \\
    \cdot \\
    A_5 \\
    A_3
\end{bmatrix}=\vec{P}'
\]
\tikz[
    remember picture,
    overlay,
    left/.style = {xshift=2mm, yshift=1mm},
    right/.style= {xshift=-2mm, yshift=1mm},
]{
    \path[-latex]
        ([left]pic cs:11) edge ([right]pic cs:21)
        ([left]pic cs:12) edge ([right]pic cs:23)
        ([left]pic cs:14) edge ([right]pic cs:24);        
}
\end{document}

在此处输入图片描述

相关内容