我试图将一个节点放在使用“|-”弯曲的路径的特定段上方(有点分成几段)。
下面是一个最小的例子:
\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
是路径第一条“腿”的中间,1
而0
是起点和终点。
答案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}