![线从节点旁边开始(而不是在节点处)](https://linux22.com/image/427691/%E7%BA%BF%E4%BB%8E%E8%8A%82%E7%82%B9%E6%97%81%E8%BE%B9%E5%BC%80%E5%A7%8B%EF%BC%88%E8%80%8C%E4%B8%8D%E6%98%AF%E5%9C%A8%E8%8A%82%E7%82%B9%E5%A4%84%EF%BC%89.png)
我想用一条(带箭头的)线连接由节点定义的两个点。以下是我的分解代码:
\begin{tikzpicture}[]
\node (oe) at (0,0)[]{};
\node (x) at (2,0)[]{};
\draw[dashed, black] (oe) -- +(0,1) node[red](xstart){.};
\draw[dashed, black] (x) -- +(0,1) node[red](xend){.};
\draw[<->,black] (xstart) -- (xend) node[above left]{$x$};
\end{tikzpicture}
显示为:
我不明白为什么这条线没有连接两个红点。
感谢您的帮助!
解决方案(感谢“js bibra”,见下文):向节点添加选项“坐标”
\draw[dashed, black] (oe) -- +(0,1) node[red, coordinate](xstart){.};
答案1
答案2
nodes
其内容周围具有特定的默认大小。查看将选项draw
应用于节点的代码:
\documentclass[tikz, border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}[]
\node[draw] (oe) at (0,0)[]{};
\node[draw] (x) at (2,0)[]{};
\draw[dashed, black] (oe) -- +(0,1) node[draw, red](xstart){.};
\draw[dashed, black] (x) -- +(0,1) node[draw, red](xend){.};
\draw[<->,black] (xstart) -- (xend) node[above left]{$x$};
\end{tikzpicture}
\end{document}
节点之间的线终止于其(可见或不可见)边界。
如果在节点中心之间画一条线,就可以避免这种行为:
\documentclass[tikz, border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}[]
\node[draw] (oe) at (0,0)[]{};
\node[draw] (x) at (2,0)[]{};
\draw[dashed, black] (oe) -- +(0,1) node[draw, red](xstart){.};
\draw[dashed, black] (x) -- +(0,1) node[draw, red](xend){.};
\draw[<->,black] (xstart.center) -- (xend.center) node[above left]{$x$};
\end{tikzpicture}
\end{document}
nodes
或用coordinates
类似于节点但没有任何维度和内容的来替换。
\documentclass[tikz, border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[dashed, black] (0,0) coordinate (oe) -- +(0,1) coordinate (xstart);
\draw[dashed, black] (2,0) coordinate (x) -- +(0,1) coordinate (xend);
\fill[red] (xstart) circle (1pt);
\fill[red] (xend) circle (1pt);
\draw[<->,black] (xstart.center) -- (xend.center) node[above left]{$x$};
\end{tikzpicture}
\end{document}