Быстрая генерация графиков из древовидной структуры может быть очень полезна при создании заметок в режиме org, которые требуют публикации и / или украшения для других людей.
Я не мог найти никакого способа сделать это, кроме как вручную создать динамический блок dot / graphviz.
Перевод из структурированного дерева в простой ориентированный граф должен быть довольно простым.
Я ищу простой способ пройти по дереву в орг-режиме (выделенная область) и перевести древовидную структуру (и, возможно, некоторую информацию из содержимого структуры) в точечный график.
Я не могу быть первым, кто придумал это. Это было решено?
вход
* la1
** la2
*** la3
*** la4
** la5
и, возможно, переменная преамбула org-to-dot
digraph {
rankdir=TB;
splines=true;
node [shape=box];
вывод будет выглядеть как динамический блок в режиме орг.
#+BEGIN_SRC dot :file out.png :cmdline -Kdot -Tpng
(contents of org-to-dot-preamble)
la1 -> la2
la1 -> la5
la2 -> la3
la2 -> la4
}
#+END_SRC
Более продвинутая версия сначала объявляет все узлы и допускает некоторое форматирование.
вход
* la1
firstline
secondline
** la2
firstline
secondline
*** la3
*** la4
firstline
** la5
Некоторые переменные форматирования
org-to-dot-shape
org-to-dot-font
выход
#+BEGIN_SRC dot :file out.png :cmdline -Kdot -Tpng
(contents of org-to-dot-preamble)
la1 [shape=Mrecord, label="{firstline|secondline}", fontname = "helvetica"]
la2 [shape=Mrecord, label="{firstline|secondline}", fontname = "helvetica"]
la3 [shape=Mrecord, label="{firstline|secondline}", fontname = "helvetica"]
la4 [shape=Mrecord, label="{firstline|secondline}", fontname = "helvetica"]
la5 [shape=Mrecord, label="{firstline|secondline}", fontname = "helvetica"]
la1 -> la2
la1 -> la5
la2 -> la3
la2 -> la4
}
#+END_SRC