
A citação a seguir é encontrada no Capítulo 17, seção 5.3 do manual pgf. ("Esta opção" refere-se à especificação da localização de um nó por duas medições.):
O efeito desta opção é o seguinte. Primeiro, o ponto
(<number or dimension 2>, <number or dimension 1>)
é calculado usando as regras normais para avaliar tal coordenada, produzindo alguma posição. Então, o nó é deslocado pela componente vertical deste ponto. A âncora está voltada para o sul.
Estou fornecendo o exemplo fornecido no manual. O exemplo ilustra "esta opção"? Como and 3mm
muda a posição do nó?
\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}
Alguém quer oferecer um exemplo melhor ilustrativo?
Responder1
A opção não funciona a menos que você adicione above right
, above left
ou below right
, below left
. Além disso, você terá resultados diferentes se deixar de and 3mm
fora. Compare o seguinte:
[above right=0.2, draw]
[above right=0.2 and 3mm, draw]
Conforme explicado na citação, a âncora é colocada ao sul do nó. A âncora é o que está sendo “movido”. O resto da forma, claro, vem a seguir. Se você não sabe o que são âncoras, consulte a seção 49 "Formas" noManual do Tikz-Pgf(página 477). Se desejar, você pode definir uma âncora diferente, adicionando a chave anchor=north
ou anchor=north west
nas opções.
Um círculo funcionaria da mesma maneira, exceto que a âncora é colocada no centro do círculo, não no sul. Se você alterar seu exemplo para have \node at (1,1) [circle, draw] {over};
, verá que ele está posicionado exatamente no centro, mas se você adicionar anchor=south
, ele será movido para cima para que seu sul corresponda ao centro da grade.
Responder2
Acho que há necessidade de mais alguns esclarecimentos. Em primeiro lugar, porque não há erro de sintaxe. Isso porque economiza muita sintaxe if then. Confira o código interno dessas opções no 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}}
Agora, você não precisa saber o que ele faz com a possibilidade de transformação etc. Mas você percebe que se der acima, abaixo etc. Ele descarta a informação x mesmo que você forneça explicitamente 0,2 e 3 mm.
Além disso, você pode ver a ancoragem oposta em efeito: você escolhe uma opção e ela escolhe a direção oposta da bússola para ancoragem. Se quiser substituí-lo, você deverá adicionar explícito anchor=<foo>
às suas opções.
Ao ativar uma grade mais fina, você pode ver melhor o posicionamento
%\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}
E também com o canto superior direito você obtém a quantidade exata de mudança
%\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}