Между узлом и линией, начинающейся от него, возникает зазор, хотя «inner sep» и «outer sep» установлены на 0pt.

Между узлом и линией, начинающейся от него, возникает зазор, хотя «inner sep» и «outer sep» установлены на 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)with coordinateесть расстояние между (p2)with 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.

Связанный контент