Wie erstelle ich gekrümmte Pfeile von einer Zahl zu einer anderen Zahl oberhalb und unterhalb einer Matrix?

Wie erstelle ich gekrümmte Pfeile von einer Zahl zu einer anderen Zahl oberhalb und unterhalb einer Matrix?

Mein Code:

\documentclass[12pt]{article}
\usepackage{amsmath}

\begin{document}

\begin{align}
   \pi=\begin{pmatrix}
        1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\\
        1 & 7 & 5 & 2 & 4 & 6 & 3 & 8
    \end{pmatrix}
\end{align}

\end{document}

Bildbeschreibung hier eingeben

Wie erstelle ich solche Pfeile? Von einer Zahl zur anderen mit Text darüber/darunter und farbig.

Antwort1

Ich schlage vor, zu verwenden tikzmark. Denken Sie daran, dass Sie zweimal kompilieren müssen.

Unabhängig davon: Sie scheinen nicht zu verwenden align, also habe ich es in geändert equation.

Bildbeschreibung hier eingeben

\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\begin{document}

\begin{equation}
   \pi=\begin{pmatrix}
        1 & \tikzmarknode[blue!70!black]{a}{2} & 3 & \tikzmarknode[green!50!black]{b}{4} & 5 & 6 & 7 & 8\\
        1 & \tikzmarknode[blue]{c}{7} & 5 & \tikzmarknode[green]{d}{2} & 4 & 6 & 3 & 8
    \end{pmatrix}
\end{equation}

\begin{tikzpicture}[remember picture,overlay]
\draw[-latex]([yshift=.5ex]a.north) to[bend left]node[above]{\scriptsize$\textcolor{blue!70!black}{i}<\textcolor{green!50!black}{j}$} ([yshift=.5ex]b.north);
\draw[-latex]([yshift=-.5ex]d.south) to[bend left]node[below]{\scriptsize$\textcolor{blue}{\pi(i)}>\textcolor{green}{\pi(j)}$} ([yshift=-.5ex]c.south);
\end{tikzpicture}

\end{document}

Antwort2

Ich schlage eine pstricksLösung vor:

    \documentclass[12pt]{article}
    \usepackage{amsmath}
    \usepackage[svgnames]{xcolor}
    \usepackage{pst-node}

    \begin{document}

    \begin{equation}
       \pi=\begin{pmatrix}
            1 & \rnode[t]{a}{\color{SteelBlue}2} & 3 & \rnode[t]{b}{\color{DarkSeaGreen}4} & 5 & 6 & 7 & 8\\
            1 & \rnode[b]{c}{\color{DeepSkyBlue}7} & 5 & \rnode[b]{d}{\color{SpringGreen}2} & 4 & 6 & 3 & 8
        \end{pmatrix}
    \psset{arrowinset=0.1, arrows=->, nodesep=1pt, arcangle=30}
    \ncarc{a}{b}\naput[labelsep=1pt]{{\color{SteelBlue}i }< {\color{DarkSeaGreen}j}}
    \ncarc{d}{c}\naput[labelsep=1pt]{{\color{DeepSkyBlue}\pi(i )} > {\color{SpringGreen}\pi( j)}}
    \end{equation}

    \end{document} 

Bildbeschreibung hier eingeben

Antwort3

Damit werden PGF/Tikz {pNiceMatrix}- nicematrixKnoten in der Matrix erstellt und Tikz kann mithilfe dieser Knoten Pfeile zeichnen.

\documentclass[12pt]{article}
\usepackage{nicematrix,tikz}

\begin{document}

\begin{equation}
\pi =
\begin{pNiceMatrix}
     1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\\
     1 & 7 & 5 & 2 & 4 & 6 & 3 & 8
\CodeAfter
     \begin{tikzpicture}
     \draw [->] (1-|2.5) to [bend left] node [above] {\scriptsize $i<j$} (1-|4.5);
     \draw [->] (3-|4.5) to [bend left] node[below] {\scriptsize$\pi(i)>\pi(j)$} (3-|2.5);
     \end{tikzpicture}
\end{pNiceMatrix}
\end{equation}

\end{document}

Sie benötigen mehrere Kompilierungen (aufgrund der PGF/Tikz-Knoten).

Ausgabe des obigen Codes

verwandte Informationen