
Aqui estão quatro TikZ
ambientes para desenhar dois segmentos de linha paralelos. Em todos os ambientes, uma extremidade do primeiro segmento de linha é especificada com ou \coordinate(A)
, \node(A){$A$};
e uma extremidade do segundo segmento de linha é especificada com \coordinate(B)
ou \node(B){$B$};
.
O ponto A é especificado primeiro; nenhuma coordenada é fornecida para isso. Coloca TikZ
-o na origem por padrão? Parece estar colocado na origem porque, no segundo gráfico, tenho o comando \node at (0,0) {$O$};
, e "O" está escrito na coordenada de A.
Exceto pelo posicionamento de “A”, o segundo e o terceiro display são idênticos. No segundo display, uso \coordinate(A);
e \node at (0,0) {$A$};
para posicionar “A”, e no terceiro display, uso \node[inner sep=0pt,outer sep=0pt] (A){$A$};
para posicionar “A”. Na segunda exibição, o "A" parece estar centralizado em (0,0), e na terceira exibição, o "A" parece estar escrito à esquerda de (0,0). Por que há uma diferença?
A única diferença na codificação para o terceiro e quarto monitores é que tenho inner sep=0pt
como opção no comando do nó para composição "A" no terceiro monitor e inner sep=1.5pt
como opção no comando do nó para composição "A" no quarto monitor. Por que isso muda “tudo” na quarta tela em comparação com a terceira?
\documentclass{amsart}
\usepackage{tikz}\usetikzlibrary{calc,positioning}
\begin{document}
\begin{tikzpicture}
\coordinate(A);
\coordinate[right=of A](B);
\draw[yellow, line width=2pt] (A) -- ++(1,1);
\draw[red] (B) -- ++(1,1);
\end{tikzpicture}
\vskip1.25mm
\begin{tikzpicture}
\coordinate(A);
\coordinate[right=of A](B);
\draw[yellow, line width=2pt] (A) -- ++(1,1);
\draw[red] (B) -- ++(1,1);
\node at (0,0) {$A$};
\end{tikzpicture}
\vskip1.25mm
\begin{tikzpicture}
\node[inner sep=0pt,outer sep=0pt] (A){$A$};
\coordinate[right=of A](B);
\draw[yellow, line width=2pt] (A) -- ++(1,1);
\draw[red] (B) -- ++(1,1);
\end{tikzpicture}
\vskip1.25mm
\begin{tikzpicture}
\node[inner sep=1.5pt,outer sep=0pt] (A) {$A$};
\coordinate[right=of A] (B);
\draw[yellow, line width=2pt] (A) -- ++(1,1);
\draw[red] (B) -- ++(1,1);
\end{tikzpicture}
\end{document}
Responder1
O seguinte ajuda?
\documentclass[tikz,border=5pt,mult]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[every node/.style={draw}]
\draw [help lines] (-1,-1) grid (2,2);
\coordinate(A);
\coordinate[right=of A](B);
\draw [blue] (A) -- ++(1,1);
\draw (B) -- ++(1,1);
\node at (0,0) {$A$};
\path [fill=blue] (0,0) circle (1.5pt);
\end{tikzpicture}
\begin{tikzpicture}[every node/.style=draw]
\draw [help lines] (-1,-1) grid (2,2);
\node[inner sep=0pt,outer sep=0pt] (A){$A$};
\coordinate[right=of A](B);
\draw [blue] (A) -- ++(1,1);
\draw (B) -- ++(1,1);
\path [fill=blue] (0,0) circle (1.5pt);
\end{tikzpicture}
\end{document}
No primeiro caso, a linha azul é traçada a partir da coordenada A
e B
posicionada em relação a esta coordenada. Como as coordenadas são pontos, isso equivale a desenhar a partir de (0,0)
.
No segundo caso, a linha azul é traçada a partir do nó A
e B
posicionada em relação ao nó. TikZ assume que você deseja desenhar ou medir a partir do ponto mais próximo no limite do nó. Mesmo que A
tenha zero inner sep
e outer sep
, ainda tem tamanho positivo porque contém a letra A
que ocupa espaço. Então, neste caso, a linha é traçada um pouco acima, e um pouco à direita de (0,0)
e B
é posicionada em relação a um ponto um pouco à direita de (0,0)
.
Você pode emular o efeito do uso de uma coordenada especificando a center
âncora:
\begin{tikzpicture}[every node/.style=draw]
\draw [help lines] (-1,-1) grid (2,2);
\node[inner sep=0pt,outer sep=0pt] (A){$A$};
\coordinate[right=of A.center](B);
\draw [blue] (A.center) -- ++(1,1);
\draw (B) -- ++(1,1);
\path [fill=blue] (0,0) circle (1.5pt);
\end{tikzpicture}
Alternativamente, se o nó A
não tiver conteúdo, assim como zero sep
, ele se comportará de forma semelhante a uma coordenada porque essencialmente não ocupará espaço:
\begin{tikzpicture}[every node/.style=draw]
\draw [help lines] (-1,-1) grid (2,2);
\node[inner sep=0pt,outer sep=0pt] (A){};
\coordinate[right=of A](B);
\draw [blue] (A) -- ++(1,1);
\draw (B) -- ++(1,1);
\node at (A) {$A$};
\path [fill=blue] (0,0) circle (1.5pt);
\end{tikzpicture}
Observe que A
está centralizado na origem (0,0)
(marcado pelo ponto azul) em todos os casos.