TikZ ‘midway’ 知道 ‘to’ 操作

TikZ ‘midway’ 知道 ‘to’ 操作

这有点类似于/跟进这个:引用最后一个“当前坐标”的 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);

我们甚至可以取出midwayTiZ 会默认将其调整到路径的中间,夹在两个坐标之间:

\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}

在此处输入图片描述

相关内容