Grafische Penrose-Notation mit TikZ

Grafische Penrose-Notation mit TikZ

Wie kann ich mit TikZ ein solches Tensornetzwerk zeichnen? Bildbeschreibung hier eingeben

Vielleicht fügen Sie noch ein paar Worte hinzu.

Bildbeschreibung hier eingeben

Ich komme mit LaTeX sehr gut zurecht, bin aber noch ein Neuling bei TikZ. Ich werde diese Art von Formen ausführlich zeichnen und hoffe, eine Vorlage dafür zu finden. Danke!

BEARBEITEN

Das ist, was ich bisher getan habe. Ich bin mir nicht sicher, wie ich die Linie an der angegebenen Grenze verbinde, wie ich den Knoten richtig platziere (relative Position oder Koordinate?) und wie ich Token an den angegebenen Positionen platziere.

\documentclass[tikz,multi,border=10pt]{standalone}
\usetikzlibrary{shapes.geometric,positioning}
\begin{document}
\begin{tikzpicture}
[
    triangle/.style = {regular polygon, regular polygon sides=3, draw=black, fill=green!60!black, inner sep=0pt, minimum size=2cm},
    border rotated/.style = {shape border rotate=180},
    rectangular/.style={fill=brown!80!black, rectangle, rounded corners = 5pt, draw=black, inner sep=0pt, minimum width=4.5cm, minimum height=1cm},
    square/.style={fill=blue!60!black, rectangle, draw=black, inner sep=0pt, minimum size = 1cm}
]

    \node[square] (1) {};
    \node[triangle, border rotated] (2) [below left = 1cm  of 1] {};
    \node[triangle, border rotated] (3) [below right = 1cm  of 1] {};
    \node[rectangular] (4) [below=3cm of 1] {};
    \node[square] (7) [below = 7cm of 1]{};
    \node[triangle] (5) [above left = 1cm  of 7] {};
    \node[triangle] (6) [above right = 1cm  of 7]{};

    \draw (2.35) -- +(0,0.2) -- (1);
    \draw (2.145) to [bend right=45] (5.215);
    \draw (3.145) -- +(0,0.2) -- (1);

\end{tikzpicture}
\end{document}

Antwort1

Ich bin mir nicht ganz sicher, ob ich alle drei Punkte verstehe, nach denen Sie gefragt haben. Ich bin mir beispielsweise nicht sicher, worauf sich „Token“ bezieht, aber ich vermute, dass es sich um die ausgefüllten schwarzen Kreise handelt.

Im Allgemeinen erleichtert die relative Positionierung die spätere Änderung des Codes. So ist es beispielsweise einfacher, neue Elemente in das Diagramm einzufügen und andere Elemente automatisch anzupassen. Es ist jedoch wirklich eine Frage dessen, was in einem bestimmten Fall am besten funktioniert. Die absolute Positionierung ist beispielsweise bei einem Einzelfall oft schneller, macht den Code jedoch weniger flexibel.

Ich habe es umbenannt triangle, triangularum ein Überschreiben der triangleForm zu vermeiden.

Der folgende Code zeigt eine Möglichkeit:

  • Verbinde die Dreiecke von den entsprechenden Punkten aus;
  • Verbinden Sie die Dreiecke von/zu den entsprechenden Punkten mit dem Rechteck.
  • füge dem Rechteck schwarze Kreise hinzu;
  • Fügen Sie einen gebogenen Pfeil mit der Beschriftung hinzu s'.

Dies sollte es Ihnen hoffentlich ermöglichen, auf dem aufzubauen, was Sie bereits haben.

\documentclass[tikz,multi,border=10pt]{standalone}
\usetikzlibrary{shapes.geometric,positioning}
\begin{document}
\begin{tikzpicture}
[
    triangular/.style = {regular polygon, regular polygon sides=3, draw=black, fill=green!60!black, inner sep=0pt, minimum size=2cm},
    border rotated/.style = {shape border rotate=180},
    rectangular/.style={fill=brown!80!black, rectangle, rounded corners = 5pt, draw=black, inner sep=0pt, minimum width=4.5cm, minimum height=1cm},
    square/.style={fill=blue!60!black, rectangle, draw=black, inner sep=0pt, minimum size = 1cm}
]

    \node[square] (1) {};
    \node[triangular, border rotated] (2) [below left = 1cm  of 1] {};
    \node[triangular, border rotated] (3) [below right = 1cm  of 1] {};
    \node[rectangular] (4) [below=3cm of 1] {};
    \node[square] (7) [below = 7cm of 1]{};
    \node[triangular] (5) [above left = 1cm  of 7] {};
    \node[triangular] (6) [above right = 1cm  of 7]{};

    \draw (2.35) -- +(0,0.2) -- (1);
    \draw (2.145) .. controls +(-7.5mm,35mm) and +(-7.5mm,-35mm) .. (5.215);
    \draw (3.145) -- +(0,0.2) -- (1);
    \draw (5.-35) -- +(0,-0.2) -- (7);
    \draw (6.-145) -- +(0,-0.2) -- (7);
    \draw (3.35) .. controls +(7.5mm,35mm) and +(7.5mm,-35mm) .. (6.-35);
    \draw (2.south) -- (4.north -| 2.south) (3.south) -- (4.north -| 3.south) (4.south -| 5.north) -- (5.north) (4.south -| 6.north) -- (6.north);

    \path (2.south) -- node [fill, circle] {} (5.north);
    \path (3.south) -- node [fill, circle] {} (6.north);
    \draw [<-] (4.north west) [bend right] to ++(-10mm,10mm) node [anchor=south] {$s'$};

\end{tikzpicture}
\end{document}

Anschlüsse

verwandte Informationen