두 가지 측정으로 노드 위치 지정

두 가지 측정으로 노드 위치 지정

다음 인용문은 pgf 매뉴얼의 17장 5.3절에서 찾을 수 있습니다. ("이 옵션"은 두 가지 측정을 통해 노드 위치를 지정하는 것을 의미합니다.):

이 옵션의 효과는 다음과 같습니다. 먼저, (<number or dimension 2>, <number or dimension 1>)그러한 좌표를 평가하기 위한 일반적인 규칙을 사용하여 점을 계산하여 일부 위치를 산출합니다. 그런 다음 노드는 이 점의 수직 구성 요소만큼 이동됩니다. 앵커는 남쪽으로 설정됩니다.

매뉴얼에 제공된 예를 제공하고 있습니다. 예제는 "이 옵션"을 설명합니까? and 3mm노드의 위치는 어떻게 변경됩니까 ?

\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc,angles,shapes,positioning}

\begin{document}

\begin{tikzpicture}
\draw [help lines] (0,0) grid (2,2);
\node at (1,1) [above=0.2 and 3mm, draw] {over};
\end{tikzpicture}

\end{document}

더 나은 예시를 제공하고 싶은 사람이 있나요?

답변1

above right, above left또는 를 추가하지 않으면 이 옵션은 작동하지 않습니다 below right. below left또한, 밖으로 나가면 다른 결과가 나올 것입니다 and 3mm. 다음을 비교해보세요:

  • [above right=0.2, draw]

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

  • [above right=0.2 and 3mm, draw]

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

인용문에서 설명했듯이 앵커는 노드의 남쪽에 설정됩니다. 앵커는 "움직이는" 것입니다. 물론 나머지 모양은 다음과 같습니다. 앵커가 무엇인지 모르는 경우에는 섹션 49 "모양"을 확인하세요.Tikz-Pgf 매뉴얼(477페이지). 원하는 경우 키를 추가하거나 옵션을 통해 다른 앵커를 설정할 수 anchor=north있습니다 anchor=north west.

앵커가 남쪽이 아닌 원의 중심에 설정된다는 점을 제외하면 원은 동일한 방식으로 작동합니다. 예제를 have 로 변경하면 \node at (1,1) [circle, draw] {over};정확한 중앙에 위치하는 것을 볼 수 있지만 을 추가하면 anchor=south남쪽이 그리드 중앙과 일치하도록 위로 이동됩니다.

답변2

좀 더 명확한 설명이 필요하다고 생각합니다. 우선 구문 오류가 없는 이유는 무엇입니까? if then 구문이 많이 절약되기 때문입니다. 의 구식 스타일로 이러한 옵션에 대한 내부 코드를 확인하세요 \tikzoption(와 동일 \tikzset).

\tikzoption{above}[]{\def\tikz@anchor{south}\tikz@possibly@transform{y}{}{#1}}
\tikzoption{below}[]{\def\tikz@anchor{north}\tikz@possibly@transform{y}{-}{#1}}
\tikzoption{above left}[]%
  {\def\tikz@anchor{south east}%
    \tikz@possibly@transform{x}{-}{#1}\tikz@possibly@transform{y}{}{#1}}

이제 변형 등으로 무엇을 하는지 알 필요가 없습니다. 그러나 위, 아래 등을 제공하면 명시적으로 0.2 및 3mm를 제공하더라도 x 정보가 삭제됩니다.

또한 반대 앵커링이 적용되는 것을 볼 수 있습니다. 하나의 옵션을 선택하면 앵커링을 위한 반대 나침반 방향이 선택됩니다. 이를 재정의하려면 anchor=<foo>옵션에 명시적을 추가해야 합니다.

더 미세한 그리드를 활성화하면 실제로 위치 지정을 더 잘 볼 수 있습니다.

%\usetikzlibrary{positioning}
\begin{tikzpicture}
\draw [help lines] (0,0) grid[step=1mm] (2,2) node at (1,1) {o};
\node at (1,1) [circle,above=0.2 and 3mm, draw] {over};
\end{tikzpicture}

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

또한 위의 오른쪽을 사용하면 정확한 이동량을 얻을 수 있습니다.

%\usetikzlibrary{positioning,shapes.geometric}
\begin{tikzpicture}
\draw [help lines] (0,0) grid[step=1mm] (2,2) node at (1,1) {o};
\node at (1,1) [ellipse,above right=0.2 and 3mm, draw] {over};
\fill[red] (1,1) ++(3mm,2mm) circle(0.5pt);
\end{tikzpicture}

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

관련 정보