Obtener el norte/suroeste/etc. de un \draw rectángulo, círculo, etc.

Obtener el norte/suroeste/etc. de un \draw rectángulo, círculo, etc.

Supongamos que he dibujado un rectángulo usando la \drawfunción:

\begin{tikzpicture}
  \draw (0,0) rectangle (1,1);
\endtikzpicture}

¿Cuál es la forma correcta de acceder a los "lados principales" (norte, noroeste, oeste, etc.) del cuadro delimitador de este camino (tenga en cuenta que también podría ser un círculo, una curva Bézier suave, etc.)? Idealmente quiero hacer algo como:

\begin{tikzpicture}
  \draw[name=foo] (0,0) rectangle (1,1);
  \node[left=1cm of foo.east] {bar};
\endtikzpicture}

Respuesta1

Gracias al gato de Schrödinger, puedes usar local bounding boxpara definir y usarlo para acceder a las coordenadas deseadas:

ingrese la descripción de la imagen aquí

Esto permite dibujar otras cosas (el círculo en este caso) y que el cuadro delimitador real permanezca intacto (dibujar en 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}

Respuesta2

Podrías usar un nodo con outer sep=0pty el apropiado minimum widthy minimum height. La forma predeterminada es 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}

ingrese la descripción de la imagen aquí

Los guiones rojos sólo sirven para mostrar que los caminos coinciden. Si es un cuadrado, también puedes usar minimum size. Las afirmaciones análogas se aplican a los círculos y demás. La shapes.geometricbiblioteca tiene varias formas geométricas y hay otras shapesbibliotecas.

información relacionada