\foreach와 같이 서로 다른 위치에 동일한 모양을 효율적으로 그릴 수 있는 방법이 있습니까?

\foreach와 같이 서로 다른 위치에 동일한 모양을 효율적으로 그릴 수 있는 방법이 있습니까?

비슷한 질문이 있다는 것을 알고 있지만 그것이 최선의 해결책을 제공했다고 생각하지 않습니다.

내 코드는 다음과 같습니다.

\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}}원하는 대로 무엇이든 교체할 수 있습니다. 내 질문은 내 코드의 두 번째 부분을 대체하기 위해 더 간결한 코드를 사용하는 방법입니다. 매번 똑같은 그림을 그릴 때 10개면 괜찮겠지만, 100개면 어떻게 되는지 좀 더 편리한 방법이 있지 않을까 싶습니다. 매뉴얼을 보고 봤는데 , 및 \foreach같은 단일 좌표를 통해서만 반복할 수 있는 것 같습니다 . 누구든지 이것에 대해 어떤 아이디어가 있습니까? 감사해요.\x\y

답변1

좌표의 이름을 지정했으면 해당 이름을 반복하면 됩니다.

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

어디서 왔는지 모르기 \cry때문에 그냥 대신 사용했습니다 A.

여기에 이미지 설명을 입력하세요

s 정의를 중단 coordinate하고 두 개의 중첩 \foreach루프를 사용하여 노드를 만들 수도 있습니다. 아래 코드에서는 예를 들어 일부 사이에 화살표를 그려야 하는 경우 고유한 이름을 지정합니다.

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

여기에 이미지 설명을 입력하세요

관련 정보