
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 3mm
cambia 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 left
o below right
. below left
Además, obtendrás resultados diferentes si lo omites and 3mm
. Compara lo siguiente:
[above right=0.2, draw]
[above right=0.2 and 3mm, draw]
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=north
o anchor=north west
en 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}
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}