Suponha que eu desenhe um retângulo usando a \draw
função:
\begin{tikzpicture}
\draw (0,0) rectangle (1,1);
\endtikzpicture}
Qual é a maneira correta de acessar os "lados principais" (norte, noroeste, oeste, etc.) da caixa delimitadora deste caminho (observe que também pode ser um círculo, uma curva suave de Bézier, etc.)? Idealmente, quero fazer algo como:
\begin{tikzpicture}
\draw[name=foo] (0,0) rectangle (1,1);
\node[left=1cm of foo.east] {bar};
\endtikzpicture}
Responder1
Graças ao gato de Schrödinger, você pode usar o local bounding box
para definir e usar isso para acessar as coordenadas desejadas:
Isso permite que outras coisas sejam desenhadas (o círculo neste caso) e a caixa delimitadora real permaneça intacta (desenhe em azul).
Código:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (1,1) circle (0.5cm);
\begin{scope}[local bounding box=MyRectangle]
\draw (0,0) rectangle (1,1);
\end{scope}
\draw [red, thick] (MyRectangle.south west) -- (MyRectangle.north east);
\draw [blue] (current bounding box.south west) rectangle (current bounding box.north east);
\end{tikzpicture}%
\end{document}
Responder2
Você poderia simplesmente usar um nó com outer sep=0pt
e o apropriado minimum width
e minimum height
. A forma padrão é rectangle
.
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\path (0,0) node[draw,minimum width=1cm,minimum height=1cm,anchor=south
west,outer sep=0pt](foo){};
\draw[dashed,red] (0,0) rectangle (1,1);
\node[left=1cm of foo.east] {bar};
\end{tikzpicture}
\end{document}
Os traços vermelhos servem apenas para mostrar que os caminhos coincidem. Se for um quadrado, você também pode usar minimum size
. As afirmações análogas aplicam-se a círculos e assim por diante. A shapes.geometric
biblioteca possui diversas formas geométricas e existem outras shapes
bibliotecas.