![Gibt es eine Möglichkeit, dieselben Formen effizient an verschiedenen Positionen zu zeichnen, beispielsweise \foreach?](https://rvso.com/image/327808/Gibt%20es%20eine%20M%C3%B6glichkeit%2C%20dieselben%20Formen%20effizient%20an%20verschiedenen%20Positionen%20zu%20zeichnen%2C%20beispielsweise%20%5Cforeach%3F.png)
Ich weiß, dass es eine ähnliche Frage gibt, aber ich glaube nicht, dass sie die beste Lösung bietet.
Hier ist mein Code:
\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1.0cm,y=1.0cm]
\clip(-0.5,-1) rectangle (5.5,3.5);
% defining coordinates
\coordinate (1) at (0,0);
\coordinate (2) at (0,3);
\coordinate (3) at (3,3);
\coordinate (4) at (3,0);
\coordinate (1_2) at ($(1)!0.5!(2)$);
\coordinate (2_3) at ($(2)!0.5!(3)$);
\coordinate (3_4) at ($(3)!0.5!(4)$);
\coordinate (4_1) at ($(4)!0.5!(1)$);
\coordinate (1_3) at ($(1)!0.5!(3)$);
%draw \cry{4} at different positions
\draw[color=black] (1) node {\large \cry{4}};
\draw[color=black] (2) node {\large \cry{4}};
\draw[color=black] (3) node {\large \cry{4}};
\draw[color=black] (4) node {\large \cry{4}};
\draw[color=black] (1_3) node {\large \cry{4}};
\draw[color=black] (1_2) node {\large \cry{4}};
\draw[color=black] (2_3) node {\large \cry{4}};
\draw[color=black] (3_4) node {\large \cry{4}};
\draw[color=black] (4_1) node {\large \cry{4}};
\end{tikzpicture}
{\large \cry{4}}
kann durch alles ersetzt werden, was Sie möchten. Meine Frage ist, wie ich den zweiten Teil meines Codes durch prägnanteren Code ersetzen kann. Da ich jedes Mal dasselbe zeichne, reichen 10 davon vielleicht aus, aber was ist, wenn es 100 davon sind? Ich nehme also an, dass es einen bequemeren Weg geben muss. Ich habe im Handbuch nachgesehen und gesehen , aber es scheint, dass ich nur einzelne Koordinaten wie und \foreach
durchlaufen kann . Hat jemand eine Idee dazu? Danke.\x
\y
Antwort1
Nachdem Sie die Koordinaten benannt haben, führen Sie einfach eine Schleife über deren Namen aus:
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,calc}
\begin{document}
\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1.0cm,y=1.0cm]
\clip(-0.5,-1) rectangle (5.5,3.5);
% defining coordinates
\coordinate (1) at (0,0);
\coordinate (2) at (0,3);
\coordinate (3) at (3,3);
\coordinate (4) at (3,0);
\coordinate (1_2) at ($(1)!0.5!(2)$);
\coordinate (2_3) at ($(2)!0.5!(3)$);
\coordinate (3_4) at ($(3)!0.5!(4)$);
\coordinate (4_1) at ($(4)!0.5!(1)$);
\coordinate (1_3) at ($(1)!0.5!(3)$);
%draw \cry{4} at different positions
\foreach \coordname in {1,2,3,4,1_2,2_3,3_4,4_1,1_3}
\node [draw,font=\large] at (\coordname) {A};
\end{tikzpicture}
\end{document}
Ich habe keine Ahnung, woher \cry
das kommt, also habe ich A
stattdessen einfach ein verwendet.
Sie können auch auf die Definition der coordinate
s verzichten und zwei verschachtelte \foreach
Schleifen verwenden, um die Knoten zu erstellen. Im folgenden Code gebe ich ihnen auch eindeutige Namen, falls Sie z. B. Pfeile zwischen einigen von ihnen zeichnen müssen.
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach [count=\i] \x in {0,1.5,3}{
\foreach [count=\j] \y in {0,1.5,3} {
\node [draw,font=\large] (n-\i-\j) at (\x,\y) {A};
}
}
% example of drawing an arrow from one node to another
\draw [red,-latex] (n-1-1) to[out=20,in=200] (n-2-3);
\end{tikzpicture}
\end{document}