tikz - ノードを絶対位置に配置する

tikz - ノードを絶対位置に配置する

I ノードと C ノードの交差点 (I |- C) にノードを配置するにはどうすればよいですか? MWE:

\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{chains} 
\usetikzlibrary{arrows,chains,positioning,shapes,scopes}

\begin{document}

\begin{tikzpicture}
[>=latex,node distance=.8cm,
start chain =going below,]

\tikzset{base/.style = {
        draw,rounded corners,minimum width=20mm, minimum height=6mm, align=center,
        inner sep=1mm, outer sep=0mm,
        on chain, join=by {->}}}
\tikzset{start/.style={base,minimum size=6mm,circle,fill=black}}
\tikzset{end/.style={base,circle}}
\tikzset{box/.style={base}}
\tikzset{decision/.style={base,rounded corners=0,minimum size=6mm,diamond,aspect=1.5,on chain}}

{
  \node[start] (A) {};
  \node[box] (B) {clone repository};
  \node[box] (C) {coding};
  \node[box] (D) {commit locally};
  \node[box] (E) {review};
  \node[decision] (F) {};
  {[start branch]
      \node[box,left=2cm of F] (G) {rework};
      \node[box,on chain=going above] (H) {recommit};
  }
  {[start branch]
    \node[box,right=2cm of F] (I) {submit};
    \coordinate  (O)  at (I |- C);
    \node[box] at (O) (J)  {update local repository};
  }

\draw[->] (H) -- (E);
\draw[->] (J) -- (C);
% debug code line
\draw[red] (O) -- (I) (O) -- (C);
}
\end{tikzpicture}
\end{document}

ノード J は O に配置する必要がありますが、実際には配置されていません。 ここに画像の説明を入力してください

答え1

ノードの配置の不一致は、ノードのプロパティJによって発生します。このプロパティをキャンセルすると、ノードは希望する場所に配置されます。on chainbox

チェーン内の特定のノードに対してこれが実行できるかどうかはわかりませんので、オプションを から削除して に追加するように再編成しますtikzseton chainこれbasebox、後で他のノードのスタイルのスタイル定義で使用されます。

この変更と、接続ラインのいくつかの変更 (MWE では非論理的でした) により、次の画像が得られます。

ここに画像の説明を入力してください

それはあなたが探しているものですか?

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{chains, shapes}
\begin{document}
    \begin{tikzpicture}[>=latex,
  node distance = 8mm,
    start chain = going below,
    base/.style = {draw, rounded corners,
                   minimum width=20mm, minimum height=6mm, 
                   align=center,
                   inner sep=1mm, outer sep=0mm,
                   },
     box/.style = {base, on chain, join=by {->}},
   start/.style = {box,minimum size=6mm,circle,fill=black},
     end/.style = {box,circle, on chain},
decision/.style = {box, diamond, aspect=1.5, 
                   sharp corners, minimum size=6mm}
                        ]
\node[start] (A) {};
\node[box] (B) {clone repository};
\node[box] (C) {coding};
\node[box] (D) {commit locally};
\node[box] (E) {review};
\node[decision] (F) {};
{%[start branch]
      \node[box,left=2cm of F] (G) {rework};
      \node[box,on chain=going above] (H) {recommit};
  }
  {%[start branch]
    \node[base,
          right=2cm of F] (I) {submit};
    \node[base]  (J)  at (I |- C) {update local repository};
  }

\draw[->] (H) -- (E);
\draw[->] (F) -- (I);
% debug code line
\draw[red,->] (I) edge (J) (J) to (C);
    \end{tikzpicture}
\end{document}

関連情報