Tikz에서 가장자리의 텍스트를 가장자리의 텍스트와 동일한 방향으로 만드는 방법은 무엇입니까?

Tikz에서 가장자리의 텍스트를 가장자리의 텍스트와 동일한 방향으로 만드는 방법은 무엇입니까?

각 가장자리의 텍스트를 가장자리 방향에 맞춰 정렬하려는 간단한 노드-가장자리 그래프를 만들었습니다.

\documentclass[class=minimal,border=0pt]{standalone}
\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{arrows,automata}
\usepackage[latin1]{inputenc}
\begin{document}

\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm,
                    semithick]
  \tikzstyle{every state}=[fill=red,draw=none,text=white]

  \node[state]         (D)                     {$D$};
  \node[state]         (C) [below right of=D]  {$C$};
  \node[state]         (B) [above right of=D]  {$B$};
  \node[state]         (A) [below right of=B]  {$A$};

  \path (D) edge              node {tdc} (C)            
        (B) edge              node {tbc} (C)
        (C) edge              node {tca} (A);
\end{tikzpicture}

\end{document}

tbc예를 들어, 텍스트가 자동으로 각도를 회전하여 노드를 노드에 -90연결하는 가장자리 방향에 정렬되도록 하고 싶습니다 . 그게 가능합니까?BC

답변1

텍스트를 전달하는 방법에 대한 질문에 대한 답변~을 따라경로는 sloped키를 사용하는 것입니다. 이는 노드가 배치될 지점에서 경로의 접선과 일치하도록 노드를 회전합니다(PGF 매뉴얼의 섹션 16.8 참조).

그러나 의견에 언급된 대로 이는 원하는 대로 작동하지 않습니다. 그 이유는 바로 열쇠 때문입니다 auto. 이렇게 하면 노드가 경로에서 벗어나게 됩니다. 경로의 접선에 대해 적절하게 선택된 앵커인 배치 지점에 노드 앵커 중 하나를 배치하여 그렇게 합니다(코드를 보지 않았으므로 어떻게 선택하는지 추측하고 있습니다). 문제는 앵커를 먼저 선택한 다음 노드를 회전한다는 사실에서 발생합니다. 일어나야 할 일은 노드가 회전된 다음 앵커가 선택된다는 것입니다. 그러나 실제로 앵커는 항상 northor 중 하나이므로 복잡한 코드가 필요하지 않습니다 south( allow upside down설정된 경우 항상 south). 따라서 anchor=south대신 간단하게 설정 auto하면 됩니다.

위의 분석을 보여주는 간단한 예는 다음과 같습니다. 처음 세 개의 노드는 가 아니며 sloped, 두 번째 세 개는 입니다. 트리플 중 첫 번째에는 (다른) 옵션이 없고 두 번째는 이고 auto세 번째는 입니다 anchor=south. 두 번째와 다섯 번째에서 노드가 앵커 포인트를 중심으로 효과적으로 회전했음이 분명해졌습니다.

경로로 회전된 노드

다음은 이러한 변경 사항이 포함된 코드입니다(몇 가지 사소한 스타일 변경 사항: 자동으로 tikz로드되고 감가상각됩니다).pgf\tikzstyle

\documentclass{standalone}
%\url{http://tex.stackexchange.com/q/67552/86}
\usepackage{tikz}
\usetikzlibrary{arrows,automata}
\usepackage[latin1]{inputenc}
\begin{document}
\begin{tikzpicture}[
  ->,
  >=stealth',
  shorten >=1pt,
  auto,
  node distance=2.8cm,
  semithick,
  every state/.style={fill=red,draw=none,text=white},
]
  \node[state]         (D)                     {$D$};
  \node[state]         (C) [below right of=D]  {$C$};
  \node[state]         (B) [above right of=D]  {$B$};
  \node[state]         (A) [below right of=B]  {$A$};

  \path[every node/.style={sloped,anchor=south,auto=false}]
        (D) edge              node {tdc} (C)            
        (B) edge              node {tbc} (C)
        (C) edge              node {tca} (A);
\end{tikzpicture}
\end{document}

(참고 로 키가 재정의되므로 auto=false필요하지 않습니다 .)anchor=southauto

결과는 다음과 같습니다.

화살표를 따라 텍스트가 있는 질문자의 사진

관련 정보