
TikZ에서 다음 모양 기능을 만들고 싶습니다.
\begin{tikzpicture}
\tikzstyle{every node}=[draw,shape=circle];
\draw (0,0) -- (0,1) node {1};
\draw (0,1) -- (1,1) node {2};
\draw (1,1) -- (1,0) node {3};
\draw (1,0) -- (0,0) node {4};
\end{tikzpicture}
\begin{tikzpicture}
\tikzstyle{every node}=[draw,shape=circle];
\draw (0,0) -- ++ (1,1) node {1};
\draw (1,1) -- ++ (1,-1) node {2};
\draw (0,0) -- ++ (2,0) node {3};
\end{tikzpicture}
답변1
이 코드를 이해하려고 노력하면 코드를 모두 그리는 방법을 알게 될 것입니다.
좌표 정의부터 시작하세요.
\coordinate (1) at (0,0,2);
point 에 명명된 coordinate node
( node
차원 없이) 을 생성합니다 . 수단 . , , ... 에 대한 특정 단위 변경이 필요한 경우 나중에 지점 (0,0,2)에 대한 참조가 로 수행됩니다 . 특정 좌표를 기억할 필요가 없습니다.1
(x,y,z)=(0,0,2)
2
2cm
cm
mm
in
(1)
두 번째로 모든 좌표에 원을 배치하고 라벨을 추가합니다.
\fill (1) circle (1pt) node [below] {1};
1pt
좌표 에 중심을 두고 반경(1점) 이 있는 원을 그리고 채울 것입니다 1
. 그 아래에는 텍스트가 있는 노드가 1
배치됩니다. 1~4번 지점은 아래에 레이블이 있고 5~8번 지점은 위에 레이블이 있으므로 루프를 사용할 수 있습니다 foreach
.
마지막으로 draw
좌표 사이의 선은 다음과 같습니다.
\draw[dashed] (1)--(4)--(3) (4)--(8);
좌표 1에서 4, 3까지 선을 그립니다 dashed
. 다음으로 좌표 4에 펜을 놓고 좌표 8에 또 다른 선을 그립니다.
nodes
( 노드)를 사용하여 coordinates
다른 노드를 배치할 수 있습니다. JLDiaz는 자신의 의견에서 구문을 사용하는 방법 calc
(서문에 \usetikzlibrary{calc} 필요)을 설명했습니다.
\coordinate (17) at ($(1)!.5!(5)$);
17
"(1)에서 거리의 50%에 있는 선 (1)-(5)의 점"에 새 좌표를 정의합니다 (!.5!는 50%를 의미함). 정의한 좌표를 다시 적용하여 원과 라벨을 그릴 17
수 있습니다 .\fill (17) circle (1pt) node [left] {17};
대체 구문은 다음과 같습니다.
\path (1) -- (5) coordinate[pos=0.5] (17);
이는 이 경로에서 17이라는 좌표 노드를 배치한다는 의미입니다 . 1
이 구문은 라이브러리를 사용하지 않습니다 .5
pos=0.5
calc
연습으로: 당신은 무엇을 생각합니까 \coordinate (27) at ($(1)!.5!(7)$);
?
전체 코드 전에 약간의 제안이 있습니다. 방대한 문서 에 겁이 난다면 TiKZ
, 에서 추천하는 문서 몇 가지를 살펴보세요.
이제 완전한 코드
\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (1) at (0,0,2);
\coordinate (2) at (2,0,2);
\coordinate (3) at (2,0,0);
\coordinate (4) at (0,0,0);
\coordinate (5) at (0,2,2);
\coordinate (6) at (2,2,2);
\coordinate (7) at (2,2,0);
\coordinate (8) at (0,2,0);
\coordinate (17) at ($(1)!.5!(5)$);
\coordinate (27) at ($(1)!.5!(7)$);
\foreach \i in {1,...,4}
\fill (\i) circle (1pt) node [below] {\i};
\foreach \i in {5,...,8}
\fill (\i) circle (1pt) node [above] {\i};
\fill (17) circle (1pt) node [left] {17};
\fill (27) circle (1pt) node [above] {27};
\draw (1) --(2) --(3) --(7) --(6)--(5)--(8)--(7);
\draw (1)--(5) (2)--(6);
\draw[dashed] (1)--(4) --(3) (4)--(8);
\end{tikzpicture}
\end{document}