Wie erstelle ich mit Tikz eine solche Figur in LaTeX?

Wie erstelle ich mit Tikz eine solche Figur in LaTeX?

Ich möchte diese Abbildung in LaTeX mit Tikz erstellen (die Abbildung stammt aus einem Buch):

Bildbeschreibung hier eingeben

Ich habe wirklich keine Ahnung, wo ich anfangen soll und wie ich es machen soll. Danke für Ihre Hilfe.

Antwort1

Wie immer bei TikZ gibt es unzählige Möglichkeiten, ein solches Diagramm zu erstellen. Hier sind zwei davon mit den grundlegenden Funktionen von TikZ.

Beide verwenden zwei PGFFor-Schleifen, aber die erste verwendet ein rotierendes Koordinatensystem, wobei unten rechts dieNReihe und unten links ist diekSpalte (siehe at (\k, -\n)Spezifikation). Dies bedeutet jedoch, dass der erste Wert des Indexes ausgewertet werden muss alsk+N\inteval+ 1, was mit oder dem countSchlüssel von PGFFor erfolgen kann (siehe count = \knp from \npwas bedeutet, \knpzählt vonN+ 1 für jedenk).

Das zweite Diagramm konstruiert das Diagramm mit einem untransformierten Koordinatensystem, bei dem die Zeilen horizontal sind, aber diekSpalten bleiben in der Richtung nach unten links, was eine Berechnung für dieXWert der Knotenplatzierung: 2kN.

Die Bedingung, wann ein Pfeil aus der vorherigen Zeile/Spalte gezeichnet werden soll, ist jetzt etwas komplizierter als zuvor.

Die Bedingungen werden mit der primitiven TeX-Steuersequenz ausgewertet \ifnum…\fi, die mir nicht gefällt, die in diesem Fall jedoch das einfachste Werkzeug ist, insbesondere in Kombination mit , \intevalda sie die Berechnung ganzer Zahlen im laufenden Betrieb ermöglicht.

Code

\documentclass[tikz]{standalone}
\usetikzlibrary{arrows.meta, quotes}
\begin{document}
\tikzset{% settings common to both solutions
  anchor=base,        % nodes are aligned at their base
  auto=right,         % nodes along lines are placed to the right
                      % (all arrows are drawn reversed)
  >={Stealth[round]}, % shorthand arrow tip
  outer sep=+.1em,    % lines connecting nodes are further away
  every edge quotes/.append style={% quotes nodes are closer to the line
    inner sep=+.15em, outer sep=auto}}

\tikz[x=(-45:1.5cm), y=(45:1.5cm)] % rotate and scale the coordinate system
\foreach[count/.list={\np from 1, \nm from -1}] \n in {0, ..., 5}
  \foreach[count/.list={\kp from 1, \km from -1, \knp from \np}]
                                                  \k in {0, ..., \inteval{5-\n}}
    \node (\k-\n) at (\k, -\n) {$A_{\knp, \k}$} % \knp = \inteval{\k+\n+1}
    \ifnum\n=0
      node[gray] at (\k, 1) {$k=\k$}
    \fi
    \ifnum\k=0
      node[gray] at (-1, -\n-1) {$n=\np$}
    \fi
    \ifnum\inteval{\k*\n}>0
      edge[<-, "$\cdot\kp$"] (\k -\nm)
      edge[<-, "$\cdot\np$"] (\km-\n )
    \fi;

\tikz[scale=1.5/sqrt 2] % same scale as in the previous diagram
\foreach[count/.list={\np from 2, \nm from 0}] \n in {1, ..., 6}
  \foreach[count/.list={\kp from 1, \km from -1}] \k in {0, ..., \inteval{\n-1}}
    \node (\k-\n) at (2*\k-\n,-\n) {$A_{\n, \k}$}
      \ifnum\k=0
        node[gray] at (-\n-2, -\n) {$n=\n$}
      \fi
      \ifnum\n=\inteval{\k+1}
        node[gray] at (2*\k-\n+1, -\n+1) {$k=\k$}
      \fi
      \ifnum\n>2 \ifnum\k>0 \ifnum\k<\inteval{\n-1}
        edge[<-, "$\cdot\kp$"]             (\k -\nm)
        edge[<-, "$\cdot\inteval{\n-\k}$"] (\km-\nm)
      \fi\fi\fi;
\end{document}

Ausgabe

Bildbeschreibung hier eingeben

verwandte Informationen