如何在 tikz 中實現相對定位

如何在 tikz 中實現相對定位

可能的重複:
TikZ 中節點的相對定位

我正在 tikz 中創建一個樹形圖,我知道計算每個點是愚蠢的。出於這個原因,我想將事物放置在彼此相對的位置。

那麼,這裡有兩個問題:

  1. 如何在這個簡單的範例中定義第二個節點?

    \begin{tikzpicture}  
    \node (a) at (0,0) {};  
    \node (b) at (2,1) {};  
    \end{tikzpicture}  
    
  2. 如何用具有相對定位的命令(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}

在此輸入影像描述

參數值2cm3cm可以相對於所需位置進行改變,例如-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}

在此輸入影像描述

相關內容