
나는 Ti를 비교적 처음 접했습니다.케이Z, 인터넷의 다양한 사례를 통해 대학 과제에 필요한 피규어를 해킹해 왔습니다.
이제 저는 연구에 들어갔습니다. 더 많은 글을 써야 하고, 더 많고 복잡한 그림을 만들어야 하고, 이제는 제대로 일하는 방법을 배워야 할 때라고 생각했습니다.
다음은 제가 만들고 싶은 피규어 종류의 예입니다.
많은 노드와 그들 사이에 많은 연결이 있습니다.
Ti를 사용하여 이 그림을 재현할 수 있습니다.케이Z를 사용하여 모든 노드를 개별적으로 배치한 다음 각각에 대해 개별적으로 연결을 생성합니다. 그러나 이는 시간이 매우 많이 걸리고 더 많은 연결을 사용하여 생성해야 하는 더 큰 수치가 있으므로 훨씬 더 많은 시간이 소요됩니다.
많은 기능을 가진 큰 그림을 생성하는 더 현명한 방법이 무엇인지 궁금했지만 구조적으로는 매우 간단합니다(예를 들어 열의 각 노드에서 다음 열의 각 노드로 연결되는 대규모 노드 매트릭스). )?
어떤 경우에는 사람들이 노드 위치 지정을 위해 행렬을 사용하는 것을 보았고 Ti에서 for 루프와 if 문을 사용할 수도 있음을 보았습니다.케이Z도 마찬가지지만 Ti의 전체 언어를 탐구하고 이해하려고 노력해야 할 가능성이 있습니다.케이Z 자신은 제가 하려는 다른 작업에 비해 다소 부담스럽습니다. 따라서 제 목적에 유용할 기술 종류에 대한 높은 수준의 정보를 제공할 수 있는 좋은 예나 리소스를 아는 사람이 있다면, 아니면 어디서부터 시작해야 할지에 대한 몇 가지 조언이라도 주시면 정말 감사하겠습니다.
답변1
다중 \foreach
루프를 사용하면 네트워크의 "의미론적" 레이아웃이 약간 불분명해지기는 하지만 확실히 생성이 더 쉬워집니다. 필요한 연결을 어느 정도 자유롭게 설정했습니다. 그렇지 않으면 네트워크가 약간 어수선해 보이기 시작합니다.
\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}