ラベルの位置をピンに対して相対的に設定するにはどうすればよいですか?

ラベルの位置をピンに対して相対的に設定するにはどうすればよいですか?

ピン留めされたラベルが付いた空のノードの TikZ 画像を含む次の LaTeX 原稿を検討してください。

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
  \node [draw,pin=x] {};
\end{tikzpicture}
\end{document}

結果の画像は

                                                                固定ラベル付きのノード

(これは上記のコードから得られる画像とは少し異なります。読者の便宜のために、ピンの視認性を少し高めました。)

ピンの角度と長さを調整する方法はわかっています (これは、バージョン 3.0.1a の TikZ & PGF マニュアルの 241 ページのセクション 17.10.3「ピン オプション」に記載されています)。しかし、ピンのヘッドに対するラベルの位置 (角度、距離、ラベル アンカー) を調整するにはどうすればよいでしょうか。

答え1

次のコードからわかるように、目的のアンカー (southこのデフォルトの場合) がラベルの位置に配置され、その後、ノードの中心からラベルの中心までピン ラインが描画されます。

ここに画像の説明を入力してください

\documentclass[tikz,border=2mm]{standalone} 
\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}
\node [draw, pin={[draw]x}, pin={[draw, anchor=west, red]x}, pin={[draw, anchor=south east, blue]x}] {};
\end{tikzpicture}
\end{document}

アップデート:

もう一度やり直しましょう。

pin={[pin distance=1.2cm, draw, red]0:x},

アンカーから 1.2 cm の距離にラベル ノードを描画しますmain node.0。ラベルのノードのアンカーは になりますwest。このデフォルトのアンカーは、メイン ノードに対するラベルの位置に応じて決定されます。

pin={[pin distance=1.2cm, draw, blue]74:x}

これは、メイン ノード .74 アンカーから始まる 74 度の線に沿って 1.2 cm の距離にデフォルトのラベルのアンカー ( ) を配置しますsouth west。ノードが配置されると、ノードの中心間にピン ラインが描画されます。この線は 74 度には従わず、長さも 1.2 cm ではありません。

pin={[name=pin, pin distance=1.2cm, draw, red, anchor=-37]74:\phantom{x}},

前回と同じですが、.-37 ラベル ノード アンカーはメイン ノード .74 アンカーから 1.2 cm の位置に配置されます。

ここに画像の説明を入力してください

\documentclass[tikz,border=2mm]{standalone} 
\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}

\draw[help lines] (-1,-1) grid (4,2);
\node [draw, 
    pin={[pin distance=1.2cm, draw, red]0:x},
    pin={[pin distance=1.2cm, draw, blue]74:x}] (a) {};

\draw[<->] (a.0)-- node[above]{1.2 cm} ++(0:1.2);
\draw[<->] (a.74)-- node[above]{1.2 cm} ++(74:1.2);

\begin{scope}[xshift = 3cm]
\node [draw, 
    pin={[name=pin, pin distance=1.2cm, draw, red, anchor=-37]74:\phantom{x}},
    pin={[pin distance=1.2cm, draw, blue]74:x}] (a) {};

    \draw[red] (pin.center)--(pin.-37);
\end{scope}
\end{tikzpicture}
\end{document}

答え2

あなたの質問は重複していますが、今のところ見つけることができません (まだ)。ですから、私の回答に投票しないでください。ただし、その回答は LaTeX の例のコレクションに保存しています:

%%%% aligned-pin
\documentclass[tikz, border=5mm]{standalone}

\tikzset{aligned pin/.style args={[#1]#2:#3}% new sort of pin
    {pin={[%
           inner sep=0pt,%
           label={[%
                append after command={%
                node[%
                     inner sep=0pt,%
                     at=(\tikzlastnode.#2),% 
                     anchor=#1,%
                    ]{#3}%
                }%
            ]center:{}}%
         ]#2:{}}%
    }
        }

    \begin{document}
\begin{tikzpicture}
\draw[thick] (0,0) -- node[pos=0.8,% position of node
                           coordinate,                 % node is behavior as coordinate
                           aligned pin={[east]         % anchor of pin label
                                        120:           % direction of pin
                                        g factor=1.96} % text in pin label
                                  ] {} (3,2);
\end{tikzpicture}
    \end{document}

ここに画像の説明を入力してください

編集:オリジナルを見つけたQrrbrbirlbel の回答

関連情報