
Ich bin relativ neu bei TikZ, und habe aus verschiedenen Beispielen im Internet Zahlen zusammengehackt, die ich für Uni-Aufgaben brauche.
Jetzt, wo ich in die Forschung einsteige, muss ich viel mehr schreiben und viel mehr und komplexere Abbildungen erstellen, und ich dachte, es wäre wahrscheinlich an der Zeit, zu lernen, wie man die Dinge richtig macht.
Hier ist ein Beispiel für die Art von Figuren, die ich erstellen möchte:
Es gibt viele Knoten und viele Verbindungen zwischen ihnen allen.
Ich kann diese Figur mit Ti reproduzierenkZ, indem ich jeden Knoten einzeln platziere und dann für jeden einzeln eine Verbindung erstelle. Dies ist jedoch extrem zeitaufwändig und ich muss noch größere Figuren mit viel mehr Verbindungen erstellen, was noch zeitaufwändiger ist.
Ich habe mich gefragt, was intelligentere Möglichkeiten gibt, große Figuren mit vielen Merkmalen zu erstellen, die jedoch strukturell relativ einfach sind (um ein Beispiel zu verwenden: eine große Knotenmatrix mit Verbindungen, die von jedem Knoten in einer Spalte zu jedem Knoten in der nächsten Spalte verlaufen)?
In einigen Dingen habe ich gesehen, dass Leute eine Matrix zur Positionierung von Knoten verwenden, und auch, dass es möglich ist, for-Schleifen und if-Anweisungen in Ti zu verwendenkZ auch, aber die Aussicht, sich in die gesamte Sprache von Ti vertiefen und versuchen zu müssen, sie zu verstehenkZ selbst ist neben der anderen Arbeit, die ich zu erledigen versuche, ein wenig entmutigend – wenn also jemand gute Beispiele oder Ressourcen kennt, die gute allgemeine Informationen zu den Arten von Techniken liefern könnten, die für meine Zwecke nützlich wären, oder einfach nur einige Tipps, wo ich anfangen soll, wäre ich sehr dankbar.
Antwort1
Obwohl die Verwendung mehrerer \foreach
Schleifen das „semantische“ Layout des Netzwerks etwas unklar macht, erleichtert es auf jeden Fall seine Erstellung. Ich habe mir bei den erforderlichen Verbindungen einige Freiheiten genommen, da das Netzwerk sonst etwas überladen aussehen würde.
\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{arrows.meta,calc}
\begin{document}
\begin{tikzpicture}[>=Triangle,
cell/.style={circle, draw},
connection/.style={shorten >=.125cm, shorten <=.125cm},
]
\foreach \i in {1,...,8}
\foreach \x [count=\j] in {1,2,5,6,7}
\node [cell] (cell-\i-\j) at (\x*1.5, \i) {};
\node [cell, draw=none, below=1cm] (cell') at ($(cell-1-4)!0.5!(cell-1-5)$) {};
\node [cell, draw=none, above=1cm] (cell'') at ($(cell-8-4)!0.5!(cell-8-5)$) {};
\foreach \i in {1,...,8}{
\foreach \j in {1,3} \draw [->] (cell-\i-\j)++(-1,0) -- (cell-\i-\j);
\foreach \j in {2,5} \draw [<-] (cell-\i-\j)++(1,0) -- (cell-\i-\j);
}
\foreach \m/\n/\o/\p in {1/4/1/2,5/8/1/2, 3/6/1/2, 1/4/3/4, 5/8/3/4, 3/6/4/5}
\foreach \i in {\m,...,\n}
\foreach \j in {\m,...,\n} \draw [connection] (cell-\i-\o) -- (cell-\j-\p);
\foreach \m/\n/\q in {1/2/', 7/8/''}
\foreach \i in {\m,\n}{
\draw [connection] (cell-\i-4) -- (cell-\i-5);
\foreach \j in {4,5} \draw [connection] (cell\q) -- (cell-\i-\j);
}
\coordinate (@') at ($(cell') +(5/4,-1/2)$);
\coordinate (@'') at ($(cell'')+(5/4, 1/2)$);
\draw [<->] (cell'.center) |- (@') -- (@'') -| (cell''.center);
\node [above left=.5cm] at (cell-8-1) {in};
\node [above right=.5cm] at (cell-8-2) {out};
\node [above left=.5cm] at (cell-8-3) {in};
\node [above right=.5cm] at (cell-8-5) {out};
\draw [Implies-Implies, double, thick, double distance=5pt,
shorten >=1.25cm, shorten <=1.25cm]
($(cell-4-2)!0.5!(cell-5-2)$) -- ($(cell-4-3)!0.5!(cell-5-3)$)
node [midway, above=1cm, font=\large] {?};
\end{tikzpicture}
\end{document}