¿Hay alguna manera de dibujar las mismas formas en diferentes posiciones de manera eficiente, por ejemplo \foreach?

¿Hay alguna manera de dibujar las mismas formas en diferentes posiciones de manera eficiente, por ejemplo \foreach?

Sé que hay una pregunta similar, pero no creo que haya dado la mejor solución.

Aquí está mi código:

\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}}Puede ser reemplazado por cualquier cosa que desee. Mi pregunta es ¿cómo puedo utilizar un código más conciso para reemplazar la segunda parte de mi código? Como cada vez que dibujo lo mismo, 10 de ellos pueden estar bien, pero ¿qué pasa si hay 100? Entonces supuse que debería haber una manera más conveniente. Miré el manual y vi \foreach, pero parece que solo puedo recorrer coordenadas individuales como \xy \y. ¿Alguien tiene alguna idea sobre esto? Gracias.

Respuesta1

Como has nombrado las coordenadas, simplemente recorre sus nombres:

\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}

No tengo idea de dónde \cryviene, así que usé un Aen su lugar.

ingrese la descripción de la imagen aquí

También puede dejar de definir los coordinates y usar dos \foreachbucles anidados para crear los nodos. En el código siguiente también les doy nombres únicos, si necesita dibujar, por ejemplo, flechas entre algunos de ellos.

\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}

ingrese la descripción de la imagen aquí

información relacionada