可能的重複:
TikZ 中節點的相對定位
我正在 tikz 中創建一個樹形圖,我知道計算每個點是愚蠢的。出於這個原因,我想將事物放置在彼此相對的位置。
那麼,這裡有兩個問題:
如何在這個簡單的範例中定義第二個節點?
\begin{tikzpicture} \node (a) at (0,0) {}; \node (b) at (2,1) {}; \end{tikzpicture}
如何用具有相對定位的命令(
a
以及b
上面創建的命令)替換此行命令?\draw (a) -- (0,1); \draw (0,1) -- (b);
如果有不清楚的地方,請告訴我。
答案1
正如評論中提到的,您可以使用該positioning
庫;這是一個簡單的範例,說明了使用時可用的選項,例如above left
(同一個圖表重複兩次;第二次on grid
啟動該選項):
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\draw[help lines,step=5mm,gray!20] (0,0) grid (4,3);
\node (a) at (0,0) {a};
\node[above right] (b) {b};
\node[above right = of a] (c) {c};
\node[above right = 2cm of a] (d) {d};
\node[above right = 2cm and 3cm of a] (e) {e};
\begin{scope}[xshift=5cm,on grid]
\draw[help lines,step=5mm,gray!20] (0,0) grid (4,3);
\node (a) at (0,0) {a};
\node[above right] (b) {b};
\node[above right = of a] (c) {c};
\node[above right = 2cm of a] (d) {d};
\node[above right = 2cm and 3cm of a] (e) {e};
\end{scope}
\end{tikzpicture}
\end{document}
參數值2cm
和3cm
可以相對於所需位置進行改變,例如-2cm
,-3cm
以鏡像局部座標系中的位置,其中a
是 的中心點。
\node[above right = 2cm and 3cm of a]
\node[above right = -2cm and -3cm of a]
現在一個小例子顯示了node distance
密鑰和一些選項above left
:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\draw[help lines,step=5mm,gray!20] (-4,-4) grid (4,3);
\node[draw] (a) at (0,0) {a};
\foreach \pos in {above,above right,right,below right,below,below left,left,above left}
\node[draw,\pos = of a] () {\pos};
\begin{scope}[yshift=8cm,node distance=2cm and 1cm]
\draw[help lines,step=5mm,gray!20] (-4,-4) grid (4,3);
\node[draw] (a) at (0,0) {a};
\foreach \pos in {above,above right,right,below right,below,below left,left,above left}
\node[draw,\pos = of a] () {\pos};
\end{scope}
\end{tikzpicture}
\end{document}
解釋pgfmanual
了該庫中可用的一些其他選項。
現在參考原始問題的具體範例,以下範例顯示了原始程式碼,其中所有內容都是手動完成的,然後生成的相同圖表使用了該positioning
庫和上面提到的一些想法:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\node (a) at (0,0) {a};
\node (b) at (2,1) {b};
\draw (a) -- (0,1);
\draw (0,1) -- (b);
\begin{scope}[xshift=3cm,on grid]
\node (a) at (0,0) {a};
\node[above right= 1cm and 2cm of a] (b) {b};
\draw (a) |- (b);
\end{scope}
\end{tikzpicture}
\end{document}