![Grafische Penrose-Notation mit TikZ](https://rvso.com/image/330728/Grafische%20Penrose-Notation%20mit%20TikZ.png)
Wie kann ich mit TikZ ein solches Tensornetzwerk zeichnen?
Vielleicht fügen Sie noch ein paar Worte hinzu.
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
, triangular
um ein Überschreiben der triangle
Form 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}