是什么原因导致线路发生位移?
\documentclass[tikz,border=1mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[dot/.style={circle,inner sep=1pt,fill,label={#1},name=#1}]
\draw (-1,-1) grid (1,1);
\path[fill=black] (0,0) circle [radius=1pt] node[below] (A) {$A$};
\node[dot=B] at (1,1){};
\draw (A) -- (B);
\end{tikzpicture}
\end{document}
答案1
该线实际上没有位移,而是绘制在您要求的位置。当您说 时node[below] (A) {$A$}
,tikz 放置一个矩形形状(不可见)的节点,其大小为数学符号$A$
加上inner sep
,它将其放置在below
坐标(0,0)
。然后,\draw (A) -- (B);
命令只是将那个不可见的矩形连接到B dot
。这是您的原始代码所做的(此处使矩形可见,以了解我上面的意思):
现在,使用coordinate(A)
而不是节点,并且节点文本成为坐标的标签,您将得到以下内容:
还要注意,并不dot/.style
等于circle [radius=1pt]
,前者比后者大.4pt
,即默认线宽,因此您需要将其加.4pt
回来以获得相同的半径。
\documentclass[tikz,border=1mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[dot/.style={circle,inner sep=1pt,fill,label={#1},name=#1}]
\draw (-1,-1) grid (1,1);
\path[fill=black] (0,0)coordinate [label=below:$A$](A) circle [radius=1.4pt] ;
\node[dot=B] at (1,1){};
\draw[shorten >=-1pt, shorten <=-1pt] (A) -- (B);
\end{tikzpicture}
\end{document}