这有点类似于/跟进这个:引用最后一个“当前坐标”的 TikZ 坐标
这个问题的答案建议我使用to
而不是 ,--
这样我就可以用\tikztostart
来引用“当前坐标”,在我尝试使用 之前,它工作正常node[midway]
。扩展原始示例:
\documentclass[tikz,margin=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
\coordinate (origin) at (0,0);
\draw (origin) -| (1,1) -- (1,1-|origin) % this uses --
node [midway,above] {hi};
\begin{scope}[xshift=2cm]
\coordinate (origin) at (0,0);
\draw (origin) -| (1,1) to (\tikztostart-|origin) % this uses to
node [midway,above] {hi};
\end{scope}
\end{tikzpicture}
\end{document}
输出(左边的是正确的):
在我看来,它midway
不知道并从前一个路径段中to
获取。midway
我如何才能midway
知道应该将节点附加到to
子路径?或者我之前的问题的另一个答案可以解决这种情况?
答案1
答案是钛钾兹灵很棒,而且我们可以简单地交换\node[]{...}
:的顺序
\draw (origin) -| (1,1) to (\tikztostart-|origin) node [midway,above] {hi};
到
\draw (origin) -| (1,1) to node [midway,above] {hi} (\tikztostart-|origin);
我们甚至可以取出midway
Ti钾Z 会默认将其调整到路径的中间,夹在两个坐标之间:
\draw (origin) -| (1,1) to node [above] {hi} (\tikztostart-|origin);
另一个提示是使用pos
接受 0.0 到 1.0 之间的十进制参数的键进行精确放置。
\documentclass[tikz,margin=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
\coordinate (origin) at (0,0);
\draw (origin) -| (1,1) -- (1,1-|origin)
node [midway,above] {hi};
\begin{scope}[xshift=2cm]
\coordinate (origin) at (0,0);
\draw (origin) -| (2,1) to node [above] {hi} (\tikztostart-|origin);
\end{scope}
\begin{scope}[xshift=5cm]
\coordinate (origin) at (0,0);
\draw (origin) -| (2,1) to node [pos=0.25, above] {hi} (\tikztostart-|origin);
\end{scope}
\end{tikzpicture}
\end{document}
答案2
你的观察是正确的。已经有M. Al Jumaily 的评论,它显示了一种可能的解决方案。另一种解决方案可以说更方便,因为它可以很好地放置倾斜路径的边缘标签,即使用键edge label
。请注意,您遇到的问题与 无关\tikztostart
,而实际上只与 有关to
。
\documentclass[tikz,margin=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
\begin{scope}[local bounding box=1]
\coordinate (origin) at (0,0);
\draw (origin) -| (1,1) -- (1,1-|origin)
node [midway,above] {hi};
\end{scope}
\begin{scope}[xshift=2.5cm,local bounding box=2]
\coordinate (origin) at (0,0);
\draw (origin) -| (1,1) coordinate (tmp) to (tmp-|origin)
node [midway,above] {hi};
\end{scope}
\begin{scope}[xshift=5cm,local bounding box=3]
\coordinate (origin) at (0,0);
\draw (origin) -| (1,1) to[edge label'={hi}] (\tikztostart-|origin);
\end{scope}
%
\path foreach \X [count=\Y] in {--,to,to w/ edge label}
{(\Y.south) node[below=1em,font=\sffamily]{\X}};
\end{tikzpicture}
\end{document}