次の関数を使用して長方形を描画したとします\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