如何在 LaTeX 中创建无序树?

如何在 LaTeX 中创建无序树?

有没有办法在 LaTeX 中创建树而不使用任何“排序”?到目前为止,我遇到的所有示例都是以这种方式构造的

child{ node [arn_n] {20}
                        child{ node [arn_r] {18}}
                        child{ node [arn_x] {}}
        }                            

父母事先知道他的孩子,在我的例子中,我会从 Python 脚本生成这个 LaTeX 代码,浏览一些数据,并且直到实际在数据中找到孩子时才会知道他们是谁。

所以我正在寻找某种库,它可以让我列出所有节点,并且每个节点只知道它的父节点。

 child 0  parent 0
 child 1  parent 0
 child 2  parent 0
 child 3  parent 1 

然后我的树就会在 LaTeX 中生成。遗憾的是,我还没有找到任何示例,也不知道这是否可行。

谢谢。

答案1

好的,这是一个非常入门的例子。

假设我们在 Excel 中有以下表格,其中显示了孩子及其父母:

Excel

第三列使用公式将两列连接在一起,并添加 GraphViz 语法所需的“ -> ”。

接下来,我们可以在编辑器中创建一个简单的文本文件,并将生成的代码复制/粘贴到以下模板中:

digraph G{

<generated code>

}

结果:

digraph G{
child0 -> parent0
child1 -> parent0
child2 -> parent0
child3 -> parent1
}

(当然代码文件的生成甚至编译都dot可以集成到Excel中。)此文件保存在 下tsx.dot。接下来我调用GraphViz的dot引擎将图形转换为PDF:

dot -Tpdf tsx.dot > tsx.pdf

tsx.pdf 如下所示:

在此处输入图片描述

GraphViz 非常强大,这当然可能会使 Excel 和所需的公式变得非常复杂(例如,如果要使用不同的节点样式)

有一些软件包将 dot 集成到 LaTeX 中,但我更喜欢“自制”的 LaTeX 代码片段,它允许我将 LaTeX 环境中的任意代码保存到外部文件中并在其上运行批处理程序(目前我将其用于 GraphViz 和 Python)。我将在本周晚些时候撰写一篇关于此内容的博客文章。

相关内容