\draw 長方形、円などの北/南/西などを取得します

\draw 長方形、円などの北/南/西などを取得します

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

関連情報