TikZ 그래프: 가장자리 대상 앵커 지정

TikZ 그래프: 가장자리 대상 앵커 지정

다음 코드가 있습니다.

\documentclass[tikz]{standalone}
\usetikzlibrary{graphs}
\begin{document}
\tikz \graph[grow right sep=20,nodes={draw,rectangle}] { a -> {b, long node name} };
\end{document}

다음과 같은 출력이 생성됩니다.MWE 출력: a -> {b, 긴 노드 이름}

동쪽에서 북쪽으로 가는 것이 아니라 남쪽에서 서쪽으로 가는 가장자리 "a" -> "긴 노드 이름"을 갖고 싶습니다. \graph 호출을 하나만 사용하면서 이것이 가능합니까? 아니면 추가 명령에서 해당 가장자리를 수동으로 지정해야 합니까?

(즉, 기본적으로 질문과 동일한 문제가 있습니다.tikz의 가장자리 앵커, 그러나 수동으로 가장자리를 만드는 대신 TikZ의 그래프 그리기 기능을 사용하고 싶습니다.)

답변1

노드의 서쪽 앵커를 얻으려면 long node name를 사용할 수 있습니다 right anchor=west.

암호

\documentclass[tikz]{standalone}
\usetikzlibrary{graphs}
\begin{document}
\tikz \graph[grow right sep=20,nodes={draw,rectangle},right anchor=west] { a -> {b, long node name} };
\end{document}

결과

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

답변2

내 생각에는 이것이 당신이 원하는 것입니다. 여기에 이미지 설명을 입력하세요

나는 결코 사용하지 않았습니다 \graph. 귀하가 요청한 것과 같은 작업을 수행하는 자연스러운 방법은 다음과 같이 \nodes와 s를 사용하는 것입니다.anchor

\documentclass[tikz]{standalone}
\usetikzlibrary{graphs}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
    \node[draw] (a) {a};
   \node[draw,anchor=west] (b) at ($(a)+(1cm,0)$) {b};
   \node[draw,anchor=west] (c) at ($(a)+(1cm,-1cm)$) {long node name};
   \draw[->] (a) -- (b);
   \draw[->] (a.south) -- (c.west);
\end{tikzpicture}
\end{document}

물론, 노드 사이에 적절한 거리를 설정해야 합니다. 그렇지 않으면 화살촉이 직사각형과 교차할 수 있지만 화살촉을 변경하는 것 외에는 이를 피할 수 있는 방법이 없습니다. 또한 곡선 화살표를 사용할 수도 있습니다.

관련 정보