¿Cómo establecer la posición de una etiqueta en relación con su pin?

¿Cómo establecer la posición de una etiqueta en relación con su pin?

Considere el siguiente manuscrito de LaTeX que presenta una imagen de TikZ de un nodo vacío con una etiqueta fijada adjunta.

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

La imagen resultante es

                                                                Un nodo con una etiqueta fijada

(Esta no es exactamente la imagen que obtendrías del código anterior: mejoré un poco la visibilidad del pin, para comodidad del lector).

Sé cómo ajustar el ángulo y la longitud del pasador (esto se describe en la sección 17.10.3 'La opción del pasador' del manual de TikZ & PGF para la versión 3.0.1a en la página 241), pero ¿cómo puedo ajustar la posición? de la etiqueta (ángulo, distancia y anclaje de la etiqueta) con respecto a la cabeza del pasador?

Respuesta1

Como se puede ver en el siguiente código, el ancla deseada ( southen este caso predeterminado) se coloca en la posición de la etiqueta y, después de eso, la línea del pin se dibuja desde el centro del nodo hasta el centro de la etiqueta:

ingrese la descripción de la imagen aquí

\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}

Actualizar:

Intentemoslo de nuevo.

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

dibujará un nodo de etiqueta a una distancia de 1,2 cm del main node.0ancla. El ancla para el nodo de la etiqueta será west. Este anclaje predeterminado se decide según la posición de las etiquetas con respecto al nodo principal.

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

éste colocará el ancla de la etiqueta predeterminada ( south west) a una distancia de 1,2 cm siguiendo una línea de 74 grados que comienza en el ancla .74 del nodo principal. Una vez colocado el nodo, se dibuja una línea de pasador entre los centros de los nodos. Esta línea no seguirá los 74 grados ni tendrá 1,2 cm de longitud.

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

Igual que el anterior, pero el anclaje del nodo de la etiqueta .-37 se coloca a 1,2 cm del anclaje del nodo principal .74.

ingrese la descripción de la imagen aquí

\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}

Respuesta2

Su pregunta está duplicada, sin embargo, no puedo encontrarla ahora (todavía), así que, por favor, no vote mi respuesta. Pero guardo en mi colección de ejemplos de LaTeX la respuesta:

%%%% 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}

ingrese la descripción de la imagen aquí

Editar:encontré originalesLa respuesta de Qrrbrbirlbel

información relacionada