Предположим, я нарисовал прямоугольник с помощью \draw
функции:
\begin{tikzpicture}
\draw (0,0) rectangle (1,1);
\endtikzpicture}
Каков правильный способ доступа к "главным сторонам" (север, северо-запад, запад и т. д.) ограничивающего прямоугольника этого пути (обратите внимание, что это может быть также окружность, плавная кривая Безье и т. д.)? В идеале я хочу сделать что-то вроде:
\begin{tikzpicture}
\draw[name=foo] (0,0) rectangle (1,1);
\node[left=1cm of foo.east] {bar};
\endtikzpicture}
решение1
Благодаря коту Шредингера вы можете использовать его local bounding box
для определения и доступа к нужным координатам:
Это позволяет рисовать другие объекты (в данном случае круг), а саму ограничивающую рамку оставить нетронутой (нарисовать синим цветом).
Код:
\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}
решение2
Вы могли бы просто использовать узел с outer sep=0pt
и соответствующим minimum width
и minimum height
. Форма по умолчанию — 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}
Красные черточки нужны только для того, чтобы показать, что пути совпадают. Если это квадрат, вы также можете использовать minimum size
. Аналогичные утверждения применимы к кругам и т. д. В shapes.geometric
библиотеке есть несколько геометрических фигур, а также есть другие shapes
библиотеки.