Posicionamiento de nodo con dos medidas.

Posicionamiento de nodo con dos medidas.

La siguiente cita se encuentra en el Capítulo 17, sección 5.3 del manual pgf. ("Esta opción" se refiere a la especificación de la ubicación de un nodo mediante dos mediciones):

El efecto de esta opción es el siguiente. Primero, el punto (<number or dimension 2>, <number or dimension 1>)se calcula usando las reglas normales para evaluar dicha coordenada, lo que produce cierta posición. Luego, el nodo se desplaza según la componente vertical de este punto. El ancla está puesta hacia el sur.

Estoy proporcionando el ejemplo proporcionado en el manual. ¿El ejemplo ilustra "esta opción"? ¿Cómo and 3mmcambia la posición del nodo?

\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc,angles,shapes,positioning}

\begin{document}

\begin{tikzpicture}
\draw [help lines] (0,0) grid (2,2);
\node at (1,1) [above=0.2 and 3mm, draw] {over};
\end{tikzpicture}

\end{document}

¿Alguien quiere ofrecer un mejor ejemplo ilustrativo?

Respuesta1

La opción no funciona a menos que agregue above right, above lefto below right. below leftAdemás, obtendrás resultados diferentes si lo omites and 3mm. Compara lo siguiente:

  • [above right=0.2, draw]

    ingrese la descripción de la imagen aquí

  • [above right=0.2 and 3mm, draw]

    ingrese la descripción de la imagen aquí

Como se explica en la cita, el ancla se coloca al sur del nodo. El ancla es lo que se "mueve". El resto de la forma, por supuesto, sigue. Si no sabes qué son los anclajes, consulta el apartado 49 "Formas" delTikz-Pgf manual(página 477). Si lo deseas, puedes establecer un ancla diferente, agregando la clave anchor=northo anchor=north westen las opciones.

Un círculo funcionaría de la misma manera, excepto que el ancla se coloca en el centro del círculo, no hacia el sur. Si cambia su ejemplo para tener \node at (1,1) [circle, draw] {over};, verá que está ubicado en el centro exacto, pero si agrega anchor=south, se moverá hacia arriba para que el sur coincida con el centro de la cuadrícula.

Respuesta2

Creo que es necesario hacer más aclaraciones. En primer lugar, por qué no hay ningún error de sintaxis. Esto se debe a que ahorra mucha sintaxis if then. Consulte el código interno de estas opciones en el estilo arcaico de \tikzoption(que equivale a \tikzset)

\tikzoption{above}[]{\def\tikz@anchor{south}\tikz@possibly@transform{y}{}{#1}}
\tikzoption{below}[]{\def\tikz@anchor{north}\tikz@possibly@transform{y}{-}{#1}}
\tikzoption{above left}[]%
  {\def\tikz@anchor{south east}%
    \tikz@possibly@transform{x}{-}{#1}\tikz@possibly@transform{y}{}{#1}}

Ahora, no necesita saber qué hace con la posible transformación, etc. Pero observa que si proporciona arriba, abajo, etc., descarta la información x incluso si proporciona explícitamente 0,2 y 3 mm.

También puedes ver el efecto del anclaje opuesto: eliges una opción y ella elige la dirección opuesta de la brújula para el anclaje. Si desea anularlo, debe agregar explícito anchor=<foo>a sus opciones.

Al habilitar una cuadrícula más fina, puedes ver mejor el posicionamiento.

%\usetikzlibrary{positioning}
\begin{tikzpicture}
\draw [help lines] (0,0) grid[step=1mm] (2,2) node at (1,1) {o};
\node at (1,1) [circle,above=0.2 and 3mm, draw] {over};
\end{tikzpicture}

ingrese la descripción de la imagen aquí

Y también con la parte superior derecha obtienes la cantidad exacta de turno.

%\usetikzlibrary{positioning,shapes.geometric}
\begin{tikzpicture}
\draw [help lines] (0,0) grid[step=1mm] (2,2) node at (1,1) {o};
\node at (1,1) [ellipse,above right=0.2 and 3mm, draw] {over};
\fill[red] (1,1) ++(3mm,2mm) circle(0.5pt);
\end{tikzpicture}

ingrese la descripción de la imagen aquí

información relacionada