我使用to
语法将节点设置在水平中间与其他节点之间。我的问题是,标签不适合这个中间节点。比较图片中节点 2 和节点 3 的标签:
相应的 mwe 如下:
\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\tikzset{myRec/.style = {draw, rectangle, minimum height=5mm, minimum width=5mm}}
\node (nd1) [myRec] {1};
\node (nd2) [myRec, below right=of nd1, label=above:x] {2};
\path (nd2) to node (nd3) [myRec, label=above:x] {3} (nd2 -| nd1);
\end{tikzpicture}
\end{document}
我使用标签,因为我创建了一个自己的形状,它需要位于节点 2 的水平位置上。
答案1
杰克在他的评论中已经提出了一个解决方案,但这里还有另一个。
\path (nd1.east|-nd2) -- (nd2.west) node[pos=0.5, myRec, label={above:x}] (nd3) {3};
或者
\path (nd1|-nd2) -- (nd2.center) node[pos=0.5, myRec, label={above:x}] (nd3) {3};
两者都将一个节点及其放置在和center
之间的水平线的中间 。n1
n2
顺便说一句,我正在使用 CVS 版本,并且节点 3 标签没有问题。
\documentclass[border=2pt,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\tikzset{myRec/.style = {draw, rectangle, minimum height=5mm, minimum width=5mm}}
\node (nd1) [myRec] {1};
\node (nd2) [myRec, below right=of nd1, label=above:x] {2};
%\path (nd2) to node (nd3) [myRec, label=above:x] {3} (nd2 -| nd1);
\path (nd1.east|-nd2) -- (nd2.west) node[pos=0.5, myRec, label={above:x}, anchor=center] (nd3) {3};
%\path (nd1|-nd2) -- (nd2.center) node[pos=0.5, myRec, label={above:x}, anchor=center] (nd3) {3};
\end{tikzpicture}
\end{document}