我有以下代码
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (-3,-3) rectangle (3,3);
\path[draw,thick] (0,0) |- (1.5,1.5);
\node at (0.75,1.5) [above] {Hi};
\end{tikzpicture}
\end{document}
结果是:
在我看来,我可以通过这样做来达到同样的效果:
\path[draw,thick] (0,0) |- node{Hi} (1.5,1.5);
但是,当我尝试时,我得到:
有没有什么办法可以实现我的愿望?
答案1
在
\path[draw,thick] (0,0) |- node{Hi} (1.5,1.5);
节点位于路径的中间(midway
,pos=.5
)。|-
和-|
运算符很特殊,因为它们的中间恰好位于尖锐拐点上。
因此,你的路径的第二部分的中间是.75
你的整个路径,因此
node[pos=.75,above]
是需要的。
例子
\path[draw] (0,0) -| (5,-1);
\foreach \x in {0.0,0.25,0.5,0.75,1.0}{
\path[draw] (0,0) -| node[pos=\x] {\x} (5,-1);
}
输出
代码
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (-3,-3) rectangle (3,3);
\path[draw,thick] (0,0) |- node[pos=.75,above] {Hi} (1.5,1.5);
\end{tikzpicture}
\end{document}
输出
不同的方法
作为保罗·加博利提到过一条评论还有可能避免|-
和的特殊性-|
,实际上使用具有坐标规范|-
和的两个路径部分-|
(实际上它们只是垂直坐标系的捷径)。
在类似这样的路径中
\path (<c1>) -- (<c1> |- <c2>) -- node {} (<c2>);
你有两个路径部分:
- 一个从
<c1>
到 坐标垂直穿过<c1>
并水平穿过<c2>
,并且 - 从该点到
<c2>
我们想要放置节点的位置(在该部分的中间,参见上文)。
如果你想重复使用这两个部分,我建议你使用自定义的,to path
这样你就不需要重复两个坐标了。(数字代表节点应放置在路径的哪一部分。)
代码
\documentclass[tikz]{standalone}
\tikzset{
|- 1/.style={to path={-- (\tikztostart |- \tikztotarget) \tikztonodes -- (\tikztotarget)}},
|- 2/.style={to path={-- (\tikztostart |- \tikztotarget) -- (\tikztotarget) \tikztonodes}},
-| 1/.style={to path={-- (\tikztostart -| \tikztotarget) \tikztonodes -- (\tikztotarget)}},
-| 2/.style={to path={-- (\tikztostart -| \tikztotarget) -- (\tikztotarget) \tikztonodes}},
}
\begin{document}
\begin{tikzpicture}[draw, thick]
\draw (0,0) to[|- 2] node{Hi} (1.5,1.5);
\draw (0,-1) to[-| 1] node{Hi} ++ (1.5,-1.5);
\end{tikzpicture}
\end{document}