
각 가장자리의 텍스트를 가장자리 방향에 맞춰 정렬하려는 간단한 노드-가장자리 그래프를 만들었습니다.
\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
연결하는 가장자리 방향에 정렬되도록 하고 싶습니다 . 그게 가능합니까?B
C
답변1
텍스트를 전달하는 방법에 대한 질문에 대한 답변~을 따라경로는 sloped
키를 사용하는 것입니다. 이는 노드가 배치될 지점에서 경로의 접선과 일치하도록 노드를 회전합니다(PGF 매뉴얼의 섹션 16.8 참조).
그러나 의견에 언급된 대로 이는 원하는 대로 작동하지 않습니다. 그 이유는 바로 열쇠 때문입니다 auto
. 이렇게 하면 노드가 경로에서 벗어나게 됩니다. 경로의 접선에 대해 적절하게 선택된 앵커인 배치 지점에 노드 앵커 중 하나를 배치하여 그렇게 합니다(코드를 보지 않았으므로 어떻게 선택하는지 추측하고 있습니다). 문제는 앵커를 먼저 선택한 다음 노드를 회전한다는 사실에서 발생합니다. 일어나야 할 일은 노드가 회전된 다음 앵커가 선택된다는 것입니다. 그러나 실제로 앵커는 항상 north
or 중 하나이므로 복잡한 코드가 필요하지 않습니다 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=south
auto
결과는 다음과 같습니다.