如何设置标签相对于其图钉的位置?

如何设置标签相对于其图钉的位置?

考虑以下 LaTeX 手稿,其中包含一个带有附加固定标签的空节点的 TikZ 图片。

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

生成的图像是

                                                                带有固定标签的节点

(这与您从上面的代码中获得的图像不完全一样:为了方便读者,我稍微增强了图钉的可见性。)

我知道如何调整大头针的角度和长度(这在第 241 页的 TikZ 和 PGF 手册 3.0.1a 版第 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},

将在距离main node.0锚点 1.2 厘米处绘制一个标签节点。标签节点的锚点将是west。此默认锚点根据标签相对于主节点的位置决定。

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

这个将把默认标签的锚点 ( south west) 放置在距离 1.2 厘米处,沿着从主节点 .74 锚点开始的 74 度线。放置节点后,将在节点中心之间绘制引脚线。这条线不会遵循 74 度,也不会有 1.2 厘米的长度。

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

与上一个相同,但是 .-37 标签节点锚点位于距主节点 .74 锚点 1.2 厘米处。

在此处输入图片描述

\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 的回答

相关内容