有没有办法在 TikZ 图中获得类似 neato 的节点位置?

有没有办法在 TikZ 图中获得类似 neato 的节点位置?

我对在 TikZ 中绘制分子连接图很感兴趣。使用\nodechild不使用任何位置,我能够绘制一个树形图,这有点用处,因为我可以轻松说明隐含 z 矩阵的层次关系。

这是我在尝试过程中一直使用的乙醇(CH3CH2OH)的一个例子。

\node[carbon] (C1) {C}
child {node [hydrogen] (H1) {H}}
child {node [hydrogen] (H2) {H}}
child {node [hydrogen] (H3) {H}}
child {node [carbon] (C2) {C}
child {node [hydrogen] (H4) {H}}
child {node [hydrogen] (H5) {H}}
child {node [oxygen] (O1) {O} child {node [hydrogen] (H6) {H}}}};
\draw [dashed] (H6) -- (H4);

类似这样的程序Graphviz但是,可以采用类似的图形并以多种方式自动排列节点。neato例如,Graphviz 中的包可以以轻松的球和弹簧方式排列节点,这非常适合分子。我一直在查看 TikZ 文档,并找到了思维导图、Petri 网、有限状态自动机、有向图等,但我没有看到任何自动布局的调用。可以在 TikZ 中完成吗?

答案1

有了优秀你才会更好 »化学无花果“包。它基于”PGF/TikZ« 并提供一个简单的语法。

\documentclass[11pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage{chemfig}

\setatomsep{2em}

\begin{document}
  \chemfig{%
    H-C(-[2]H)(-[6]H)
    -C(-[2]H)(-[6]H)
    -O-H
  }
\end{document}

包装手册中有详细信息。


在此处输入图片描述

答案2

自动(或算法,我们在手册中称之为)图形绘制是 PGF/TikZ 存储库中目前正在开发的功能。它还包括一组类似于 GraphViz 提供的标准算法(一些想法甚至来自相同的研究论文)。此功能远不稳定,但有望在 2011 年某个时候完成。

答案3

我来晚了,但你也可以看看 dot2tex。它远非完美,但 Graphviz 也是如此。(你可以将它与 Dot 或 Neato 一起使用。)

你可以这样称呼它:

dot2tex --preproc --usepdflatex --nominsize --prog neato graph.dot \
  | dot2tex -o graph.tex --figonly --nominsize --prog neato

它会返回一个使用 PGF 的文件,您可以\include在您的文档中使用它。

相关内容