我想使用 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
=of
of=
是不是同义词。
上述操作的结果是: