가능한 중복:
TikZ에서 노드의 상대적 위치 지정
저는 tikz에서 트리 다이어그램을 만들고 있는데 각 점을 계산하는 것이 어리석은 일이라는 것을 알고 있습니다. 그렇기 때문에 나는 사물을 서로 상대적인 위치에 놓고 싶다.
따라서 여기에 두 가지 질문이 있습니다.
이 간단한 예에서 두 번째 노드를 어떻게 정의할 수 있습니까?
\begin{tikzpicture} \node (a) at (0,0) {}; \node (b) at (2,1) {}; \end{tikzpicture}
이 줄 명령을 상대 위치 지정 기능( 위에서 생성된 명령)
a
으로 바꾸려면 어떻게 해야 합니까?b
\draw (a) -- (0,1); \draw (0,1) -- (b);
명확하지 않은 부분이 있으면 알려주시기 바랍니다.
답변1
의견에서 언급했듯이 라이브러리를 사용할 수 있습니다 positioning
. 다음은 예를 들어 다음을 사용할 때 사용할 수 있는 옵션을 보여주는 간단한 예입니다 above left
(동일한 다이어그램이 두 번 반복됩니다. 두 번째로 on grid
옵션이 활성화됩니다).
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\draw[help lines,step=5mm,gray!20] (0,0) grid (4,3);
\node (a) at (0,0) {a};
\node[above right] (b) {b};
\node[above right = of a] (c) {c};
\node[above right = 2cm of a] (d) {d};
\node[above right = 2cm and 3cm of a] (e) {e};
\begin{scope}[xshift=5cm,on grid]
\draw[help lines,step=5mm,gray!20] (0,0) grid (4,3);
\node (a) at (0,0) {a};
\node[above right] (b) {b};
\node[above right = of a] (c) {c};
\node[above right = 2cm of a] (d) {d};
\node[above right = 2cm and 3cm of a] (e) {e};
\end{scope}
\end{tikzpicture}
\end{document}
매개변수 값은 원하는 위치를 기준으로 변경될 수 있으며, 예를 들어 2cm
중심점 이 있는 로컬 좌표계의 위치를 미러링할 수 있습니다 .3cm
-2cm
-3cm
a
\node[above right = 2cm and 3cm of a]
\node[above right = -2cm and -3cm of a]
node distance
이제 다음과 같은 키와 몇 가지 옵션을 보여주는 작은 예가 있습니다 above left
.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\draw[help lines,step=5mm,gray!20] (-4,-4) grid (4,3);
\node[draw] (a) at (0,0) {a};
\foreach \pos in {above,above right,right,below right,below,below left,left,above left}
\node[draw,\pos = of a] () {\pos};
\begin{scope}[yshift=8cm,node distance=2cm and 1cm]
\draw[help lines,step=5mm,gray!20] (-4,-4) grid (4,3);
\node[draw] (a) at (0,0) {a};
\foreach \pos in {above,above right,right,below right,below,below left,left,above left}
\node[draw,\pos = of a] () {\pos};
\end{scope}
\end{tikzpicture}
\end{document}
pgfmanual
이 라이브러리를 통해 사용할 수 있는 다른 옵션에 대해 설명합니다 .
이제 원래 질문에 대한 구체적인 예를 참조하면 다음 예에서는 모든 작업이 수동으로 수행된 다음 생성된 동일한 다이어그램이 라이브러리 positioning
와 위에서 언급한 일부 아이디어를 사용하는 원래 코드를 보여줍니다.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\node (a) at (0,0) {a};
\node (b) at (2,1) {b};
\draw (a) -- (0,1);
\draw (0,1) -- (b);
\begin{scope}[xshift=3cm,on grid]
\node (a) at (0,0) {a};
\node[above right= 1cm and 2cm of a] (b) {b};
\draw (a) |- (b);
\end{scope}
\end{tikzpicture}
\end{document}