Obtenha o norte/sudoeste/etc de um retângulo \draw, círculo, etc.

Obtenha o norte/sudoeste/etc de um retângulo \draw, círculo, etc.

Suponha que eu desenhe um retângulo usando a \drawfunçã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 boxpara definir e usar isso para acessar as coordenadas desejadas:

insira a descrição da imagem aqui

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=0pte o apropriado minimum widthe 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}

insira a descrição da imagem aqui

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.geometricbiblioteca possui diversas formas geométricas e existem outras shapesbibliotecas.

informação relacionada