
2 つの平行線分を描画するための環境は 4 つありますTikZ
。すべての環境で、最初の線分の 1 つの端点は または で指定され\coordinate(A)
、 2 番目の線分の 1 つの端点はまたは\node(A){$A$};
で指定されます。\coordinate(B)
\node(B){$B$};
最初に点 A が指定されますが、座標は指定されていません。TikZ
デフォルトでは原点に配置されますか? 2 番目のグラフではコマンド があり\node at (0,0) {$O$};
、A の座標に「O」と入力されているため、原点に配置されているようです。
「A」の位置を除いて、2 番目と 3 番目の表示は同じです。2 番目の表示では、\coordinate(A);
とを使用して\node at (0,0) {$A$};
「A」の位置を決め、3 番目の表示では、を使用して\node[inner sep=0pt,outer sep=0pt] (A){$A$};
「A」の位置を決めます。2 番目の表示では、「A」は (0,0) の中央に配置されているように見えますが、3 番目の表示では、「A」は (0,0) の左側にタイプセットされているように見えます。なぜ違いがあるのでしょうか。
3 番目と 4 番目のディスプレイのコーディングの唯一の違いは、inner sep=0pt
3 番目のディスプレイに「A」をタイプセットするためのノード コマンドのオプションと、inner sep=1.5pt
4 番目のディスプレイに「A」をタイプセットするためのノード コマンドのオプションがあることです。なぜ、3 番目のディスプレイと比較して、4 番目のディスプレイの「すべて」がシフトするのでしょうか。
\documentclass{amsart}
\usepackage{tikz}\usetikzlibrary{calc,positioning}
\begin{document}
\begin{tikzpicture}
\coordinate(A);
\coordinate[right=of A](B);
\draw[yellow, line width=2pt] (A) -- ++(1,1);
\draw[red] (B) -- ++(1,1);
\end{tikzpicture}
\vskip1.25mm
\begin{tikzpicture}
\coordinate(A);
\coordinate[right=of A](B);
\draw[yellow, line width=2pt] (A) -- ++(1,1);
\draw[red] (B) -- ++(1,1);
\node at (0,0) {$A$};
\end{tikzpicture}
\vskip1.25mm
\begin{tikzpicture}
\node[inner sep=0pt,outer sep=0pt] (A){$A$};
\coordinate[right=of A](B);
\draw[yellow, line width=2pt] (A) -- ++(1,1);
\draw[red] (B) -- ++(1,1);
\end{tikzpicture}
\vskip1.25mm
\begin{tikzpicture}
\node[inner sep=1.5pt,outer sep=0pt] (A) {$A$};
\coordinate[right=of A] (B);
\draw[yellow, line width=2pt] (A) -- ++(1,1);
\draw[red] (B) -- ++(1,1);
\end{tikzpicture}
\end{document}
答え1
以下の内容は役に立ちますか?
\documentclass[tikz,border=5pt,mult]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[every node/.style={draw}]
\draw [help lines] (-1,-1) grid (2,2);
\coordinate(A);
\coordinate[right=of A](B);
\draw [blue] (A) -- ++(1,1);
\draw (B) -- ++(1,1);
\node at (0,0) {$A$};
\path [fill=blue] (0,0) circle (1.5pt);
\end{tikzpicture}
\begin{tikzpicture}[every node/.style=draw]
\draw [help lines] (-1,-1) grid (2,2);
\node[inner sep=0pt,outer sep=0pt] (A){$A$};
\coordinate[right=of A](B);
\draw [blue] (A) -- ++(1,1);
\draw (B) -- ++(1,1);
\path [fill=blue] (0,0) circle (1.5pt);
\end{tikzpicture}
\end{document}
最初のケースでは、青い線は座標 から描かれA
、B
この座標を基準として配置されます。座標は点なので、これは から描画することになります(0,0)
。
2 番目のケースでは、青い線はノード から描かれA
、B
ノードを基準として配置されます。TikZ は、ノードの境界上の最も近い点から描画または計測すると想定します。 がA
ゼロで であっinner sep
てもouter sep
、スペースを占める文字が含まれているため、正のサイズを持ちますA
。したがって、このケースでは、線は の少し上から少し右に描かれ(0,0)
、B
の少し右の点を基準として配置されます(0,0)
。
アンカーを指定することで、座標を使用する効果をエミュレートできますcenter
。
\begin{tikzpicture}[every node/.style=draw]
\draw [help lines] (-1,-1) grid (2,2);
\node[inner sep=0pt,outer sep=0pt] (A){$A$};
\coordinate[right=of A.center](B);
\draw [blue] (A.center) -- ++(1,1);
\draw (B) -- ++(1,1);
\path [fill=blue] (0,0) circle (1.5pt);
\end{tikzpicture}
あるいは、ノードA
にコンテンツがなく、ゼロの場合sep
、基本的にスペースを占有しないため、座標と同様に動作します。
\begin{tikzpicture}[every node/.style=draw]
\draw [help lines] (-1,-1) grid (2,2);
\node[inner sep=0pt,outer sep=0pt] (A){};
\coordinate[right=of A](B);
\draw [blue] (A) -- ++(1,1);
\draw (B) -- ++(1,1);
\node at (A) {$A$};
\path [fill=blue] (0,0) circle (1.5pt);
\end{tikzpicture}
いずれの場合も、はA
原点(0,0)
(青い点でマーク)を中心としていることに注意してください。