Ermitteln Sie den Norden/Südwesten/usw. eines \draw-Rechtecks, Kreises usw.

Ermitteln Sie den Norden/Südwesten/usw. eines \draw-Rechtecks, Kreises usw.

Angenommen, ich habe mit der folgenden Funktion ein Rechteck gezeichnet \draw:

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

Wie kann ich auf die „Hauptseiten“ (Norden, Nordwesten, Westen usw.) des Begrenzungsrahmens dieses Pfads zugreifen (beachten Sie, dass es sich auch um einen Kreis, eine glatte Bézierkurve usw. handeln könnte)? ​​Idealerweise möchte ich so etwas tun wie:

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

Antwort1

Dank Schrödingers Katze können Sie Folgendes local bounding boxdefinieren und damit auf die gewünschten Koordinaten zugreifen:

Bildbeschreibung hier eingeben

Dadurch können andere Dinge gezeichnet werden (in diesem Fall der Kreis) und der tatsächliche Begrenzungsrahmen bleibt intakt (in Blau zeichnen).

Code:

\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}

Antwort2

Sie können einfach einen Knoten mit outer sep=0ptund dem entsprechenden minimum widthund verwenden minimum height. Die Standardform ist 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}

Bildbeschreibung hier eingeben

Die roten Striche dienen nur dazu, zu zeigen, dass die Pfade zusammenfallen. Wenn es sich um ein Quadrat handelt, könnte man auch verwenden minimum size. Die analogen Aussagen gelten für Kreise usw. Die shapes.geometricBibliothek hat mehrere geometrische Formen, und es gibt noch weitere shapesBibliotheken.

verwandte Informationen