2017-04-06 28 views
1

此源如何使用基於tikz的包gitdags來繪製git merge -no-ff的結果?

\documentclass[border=10pt]{standalone} 

\usepackage{tikz} 
\usepackage{gitdags} 

\begin{document} 
\begin{tikzpicture} 
    \gitDAG{ 
    A -- {B, C} -- D 
    }; 
\end{tikzpicture} 

\begin{tikzpicture}[ 
    commit/.style={circle, draw=green!30!blue, fill=green!20!white, thick, text=black, font=\ttfamily}, 
    ] 

    \node (a) [commit] {A}; 
    \node (c) [commit, below right = 0.8cm of a] {C}; 
    \node (d) [commit,  right = 1.3cm of a] {D}; 
    \draw (d) edge [->] (a) 
     (d) edge [->] (c) 
     (c) edge [->] (a); 
\end{tikzpicture} 
\end{document} 

編譯成以下圖片:

enter image description here

如何gitdags(包用於創建所述第一圖像)被說服繪製所示的拓撲的圖第二個圖像?

作爲A既是CD,既CD應的支撐一起以下A母體。由於DAC的孩子,所以AC應該在D之前加在一起。因此C必須與A一起支撐,同時在A之後的單獨大括號中。我不明白這是可能的。

是否有一些gitdag我缺少的語法?

回答

1

這裏是一個可能的解決方案:

\documentclass[]{article} 

\usepackage{tikz} 
\usepackage{gitdags} 

\begin{document} 
\begin{tikzpicture} 
    \gitDAG{ 
    A -- C[yshift=-10mm] -- D, 
    A -- D 
    }; 
\end{tikzpicture} 
\end{document} 

--no-ff DAG

DAG中的任何節點可以提到不止一次。此解決方案提到A一次通過C建立其與D的鏈接,然後再次提及A以建立AD之間的直接鏈接。

默認情況下C將與AD一致,所以其高度用yshift手動調整。