Как установить положение метки относительно ее штифта?

Как установить положение метки относительно ее штифта?

Рассмотрим следующую рукопись LaTeX, содержащую изображение пустого узла с прикрепленной закрепленной меткой в ​​формате TikZ.

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

Полученное изображение:

                                                                Узел с закрепленной меткой

(Это не совсем то изображение, которое вы получили бы из приведенного выше кода: я немного улучшил видимость пина для удобства читателя.)

Я знаю, как отрегулировать угол и длину штифта (это описано в разделе 17.10.3 «Параметры штифта» руководства TikZ & PGF для версии 3.0.1a на стр. 241), но как мне отрегулировать положение этикетки (угол, расстояние и точку привязки этикетки) относительно головки штифта?

решение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 см от main node.0якоря. Якорь для узла метки будет 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 расположен на расстоянии 1,2 см от основных узлов .74.

введите описание изображения здесь

\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

Связанный контент