如何使用基于tikz的包gitdags绘制git merge -no-ff的结果?

时间:2017-04-06 13:37:31

标签: tikz

此来源

\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(用于创建第一张图片的包)以绘制第二张图片中显示的拓扑图?

由于ACD的父级,CD都应该在A之后加在一起。由于DAC的孩子,AC都应该在D之前拼凑在一起。因此,C必须与A一起支持,同时在A之后的单独括号中。gitdag。我不明白这是怎么可能的。

我缺少一些methodToTest()语法吗?

1 个答案:

答案 0 :(得分: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一次通过D建立与C的链接,然后再次提及A以建立A和{{1}之间的直接链接}。

默认情况下,D会与CA一致,因此会使用D手动调整其高度。