尽管“内分隔符”和“外分隔符”均设置为 0pt,但节点与从该节点开始的线之间仍出现间隙

尽管“内分隔符”和“外分隔符”均设置为 0pt,但节点与从该节点开始的线之间仍出现间隙

我使用以下代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\draw[help lines] (0,0) grid (10,10);
\draw[very thick,rotate around={45:(2.3,5)}] (2.3,5) rectangle ++(4,0.3) ++(0,-0.15) node[inner sep=0pt,outer sep=0pt] (p2) {};
\draw[very thick,rotate around={-10:($(2.3,5)+(45:4)$)}] (2.3,5)++(45:4) rectangle ++(4,0.3)--++(0,0.2)--++(0.7,0)--++(0,-0.15)--++(-0.55,0)--++(0,-0.4)--++(0.55,0)--++(0,-0.15)--++(-0.7,0)--++(0,0.2)++(-4,0)++(0,0.15) coordinate (p3);
\draw[name path=2nd2] (p2)--+(45:2);
\draw[name path=3rd] (p3)--+(170:2);
\path[name intersections={of=2nd2 and 3rd,by=i23}];
\fill[red] (i23) circle (0.5pt);
\end{tikzpicture}
\end{document}

输出如下:

当我放大时,我注意到,与 相比(p3),和 之间的距离与从 开始的线coordinate之间有一段距离。有人能解释一下是什么导致了这个差距吗?谢谢。(p2)node[inner sep=0pt,outer sep=0pt](p2)

答案1

inner sep即使将outer sep和都设置为,您的空节点仍然不是完全空的,0pt它有一个空格。另一方面,坐标只是坐标系中的一个点。要使节点获得相同的行为,您还需要设置minimum size=0pt。比较下面示例中的三个节点和坐标。

\begin{tikzpicture}
  \draw[gray!40] (0,0) grid (4,3);
  \node[label=below:np] (np) at (1,2){};
  \node[label=below:np2,inner sep=0pt,outer sep=0pt] (np2) at (2,2){};
  \node[label=below:np3,inner sep=0pt,outer sep=0pt,minimum size=0pt] (np3) at (1,1){};
  \coordinate[label=below:cp] (cp) at (2,1);
  \foreach \angle in {0,45,...,315}{
    \draw[very thin,red] (np.\angle) circle (0.2pt);
    \draw[very thin,red] (np2.\angle) circle (0.2pt);
    \draw[very thin,red] (np3.\angle) circle (0.2pt);
    \draw[very thin,red] (cp.\angle) circle (0.2pt);
  }
\end{tikzpicture}

在此处输入图片描述

左上角有一个正常节点,右上角有一个内外间隔都为零的节点,左下角有一个minimum size设置为零的空节点,右下角有一个坐标,四个节点在所有方向上都有小圆圈(间隔 45 度)。

在您的示例中,这意味着当从节点(p2)向 45 度方向绘制时,它从 开始(p2.45),这将为您提供较小的间隙。尝试更改为

\draw[name path=2nd2] (p2.center)--+(45:2);

或更改(p2)coordinate,或添加minimum size=0pt

相关内容