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 box
definieren und damit auf die gewünschten Koordinaten zugreifen:
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=0pt
und dem entsprechenden minimum width
und 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}
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.geometric
Bibliothek hat mehrere geometrische Formen, und es gibt noch weitere shapes
Bibliotheken.