假设我有以下代码片段/截图。我怎样才能与 放在Desc2
同一行Desc1
。因此Desc2
应该垂直放置在 下方T2
但水平放置在 同一水平,Desc1
以便描述在同一行上布局。
更一般地说:如何将节点相对于节点水平定位X
,但相对于节点垂直定位Y
?
calc
最好采用无或矩阵(自由节点放置)的解决方案
所以我看起来像这样:
\node[below of=t2 left of d1] {Desc2};
做到这一点最简单的方法是什么?
梅威瑟:
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[align=center,node distance=2cm]
\node[style={circle}] (t1) {T1} -- (t1)
node[above left of=t1,style={circle}] (t2) {T2};
\path[draw,->] (t1) -- (t2);
\node[below of=t1] (d1) {Desc1};
\node[below of=t2] {Desc2};
\end{tikzpicture}
\end{document}
答案1
您可以使用垂直坐标at (t2|-d1)
系
\node at (t2|-d1) {Desc2};
(t2|-d1)
意思是 - x 坐标与 相同t2
, y 坐标与 相同d1
。因此,如果(x1,y1)
是 的坐标t2
,(x2,y2)
是 的坐标,d1
则(t2|-d1)
(或等效地{d1-|t2)
)等于(x1,y2)
。有关更多详细信息,请阅读pgfmanual
,第 137 页,第 13.3.1 节。
\documentclass[tikz]{standalone}
%\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[align=center,node distance=2cm]
\node[style={circle}] (t1) {T1} -- (t1)
node[above left = of t1,style={circle}] (t2) {T2};
\path[draw,->] (t1) -- (t2);
\node[below = of t1] (d1) {Desc1};
\node at (t2|-d1) {Desc2};
\end{tikzpicture}
\end{document}
此外,当您使用positioning
库时,请使用语法below = of
(不是below of =
)等等。