将节点放置在特定路径段上方

将节点放置在特定路径段上方

我试图将一个节点放在使用“|-”弯曲的路径的特定段上方(有点分成几段)。

下面是一个最小的例子:

\begin{tikzpicture}
  \node[rectangle,draw] (N1) at (0,0) {N1};
  \node[rectangle,draw] (N2) at (5,1) {N2};

  \path[draw,blue,rounded corners] (N1) -- ++(0,2) -| node[above] {text} (N2);
  \path[draw,red] (N1) -- node[above] {works} (N2); 
\end{tikzpicture}

我希望能够控制第一个 \path 命令中节点的位置,能够将其放在三个路径段中的任意一个上,并可能根据我的意愿将其更多地移动到开始/结束。

任何帮助都将不胜感激!

答案1

您可以使用以下命令控制蓝色节点在路径中的位置pos

\begin{tikzpicture}
  \node[rectangle,draw] (N1) at (0,0) {N1};
  \node[rectangle,draw] (N2) at (5,1) {N2};

  \path[draw,blue,rounded corners] (N1) -- ++(0,2) -|
      node[above right,pos=1] {1}
      node[above,pos=0] {0}
      node[above,pos=.5] {.5}
      node[above,pos=.25] {.25}
  (N2);
  \path[draw,red] (N1) -- node[above] {works} (N2);
\end{tikzpicture}

如您所见,pos=.5它对应于线的角-|,其中一半.25是路径第一条“腿”的中间,10是起点和终点。

预览

答案2

Bordaigorl 的解决方案非常完美。与此同时,我找到了一个不太优雅的解决方案,但还是把它发布在这里,因为我认为它包含一个有趣的元素,可能对其他人有用:引用路径中的“当前”位置。

\documentclass{standalone}

\usepackage{tikz}

\makeatletter
\newcommand\currentpos{\the\tikz@lastxsaved,\the\tikz@lastysaved}
\makeatother

\begin{document}    
  \begin{tikzpicture}[font=\sffamily,scale=1,transform shape]
    \node[rectangle,draw] (N1) at (0,0) {N1};
    \node[rectangle,draw] (N2) at (5,1) {N2};

    \path[draw,blue,rounded corners] (N1) -- node[above,sloped] {text1} ++(0,3) -- node[above,sloped] {text2} (\currentpos -| N2)  -- node[above,sloped] {text3} (N2);    

  \end{tikzpicture}  
\end{document}

相关内容