我想要在两个列向量之间画箭头,就像我这里展示的那样。
为了制作此图像,我在 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}
和nicematrix
TikZ 绘制箭头。
\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
这是基于tikz
和tikzmark
库的解决方案。使用创建锚点后\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}