tikz:定位在点 a 上方,点 b 左侧

tikz:定位在点 a 上方,点 b 左侧

我想使用 Ti 创建框图Z。我想使用“上方、下方等”来定位我的节点,以使其尽可能保持灵活性。我现在想将节点定位D在右侧A(相同的 y)和上方C(相同的 X)。但是,以下示例无法按预期工作:

\documentclass{article}
\usepackage{tikz}   % library for drawings
\usetikzlibrary{positioning}

\begin{document}
\tikzstyle{block} = [draw, rectangle, 
  minimum height=3em, minimum width=4em]
 \begin{figure}
     \begin{tikzpicture}[auto, node distance=2cm,>=latex]
       \node [block] (a) {A};
       \node [block, below of=a] (b) {B};
       \node [block, right of=b] (c) {C};
       \node [block, above of=c, right of=a] (d) {D};
     \end{tikzpicture}
  \end{figure}
\end{document}

这是生成的输出: 在此处输入图片描述

我想D正好C位于A

有同样的想法如何解决这个问题,而无需引入距离和坐标吗?

答案1

你应该只使用一个above of=...,所以你试图做的事情不是一般来说使用这种语法是可能的(尽管由于您示例中位置的规律性,实际上above of=c可以这样做,但我会假设这是一个非常简单的例子,而实际情况更为复杂)。

获得所需内容的最简单方法可能是使用(a -| c)指定坐标的语法。这是指定水平线(a)与垂直线的交点的一种方法(c)。加载库的更复杂(但灵活)的示例calc将使用let关键字,如下所示\path let \p1=(a),\p2=(c) in (\x2,\y1) node [block] (d) {D};

这是简单版本:

\documentclass{article}
%\url{http://tex.stackexchange.com/q/79693/86}
\usepackage{tikz}

\begin{document}
\tikzstyle{block} = [draw, rectangle, 
  minimum height=3em, minimum width=4em]

 \begin{figure}
     \begin{tikzpicture}[auto, node distance=2cm,>=latex]
       \node [block] (a) {A};
       \node [block, below of=a] (b) {B};
       \node [block, right of=b] (c) {C};
        \node [block] (d) at (a -| c) {D};
     \end{tikzpicture}
  \end{figure}
\end{document}

请注意,由于您使用的是above of=...而不是,因此不需要above=of ...该库。请注意和positioning=ofof=不是同义词。

上述操作的结果是:

节点定位

相关内容