Szybkie generowanie wykresów ze struktury przypominającej drzewo może być bardzo przydatne podczas robienia notatek w trybie organizacji, które wymagają udostępniania i / lub upiększania innym ludziom.
Nie mogłem znaleźć innego sposobu niż ręczne utworzenie dynamicznego bloku dot / graphviz.
Tłumaczenie z drzewa strukturalnego na prosty ukierunkowany wykres powinno być dość proste.
Szukam prostego sposobu na przejście do drzewa w trybie organizacji (wybrany region) i przetłumaczenie struktury drzewa (i opcjonalnie niektórych informacji z zawartości struktury) na wykres kropkowy.
Nie mogę być pierwszym, który to wymyślił. Czy to zostało rozwiązane?
Wejście
* la1
** la2
*** la3
*** la4
** la5
i być może zmienna preambuła od org do kropki
digraph {
rankdir=TB;
splines=true;
node [shape=box];
dane wyjściowe wyglądałyby jak blok dynamiczny w trybie organizacji
#+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
Bardziej zaawansowana wersja najpierw zadeklaruje wszystkie węzły i pozwoli na pewne formatowanie.
Wejście
* la1
firstline
secondline
** la2
firstline
secondline
*** la3
*** la4
firstline
** la5
Niektóre zmienne formatujące
org-to-dot-shape
org-to-dot-font
wynik
#+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
Odpowiedzi:
Oto działający przykład, który wykorzystuje
org-element
API do analizowania nagłówków buforów:Działa to w kilku krokach: najpierw używa bloku elisp,
org-element-parse-buffer
aby uzyskać wszystkie nagłówki i wyodrębnić listę tytułu rodzica i tytułu nagłówka.Następnie inny blok źródłowy przekształca tę listę w składnię kropkową.
Trzeci blok źródłowy kropki zawiera zawijanie DOT i zawiera wygenerowane relacje.
Udoskonalenia kosmetyczne: odfiltruj sekcję dotyczącą samego testu; możesz dodać znacznik do tej sekcji i odfiltrować według znacznika w pierwszym bloku.
źródło
Możesz ponownie wykorzystać część kodu z dołu strony http://pages.sachachua.com/evil-plans/ . Zasadniczo używam wpisów z mapami organizacji, aby przechodzić przez moje nagłówki. Ponieważ mam ukierunkowany wykres zamiast ścisłego drzewa, używam prostych wyszukiwań wyrażeń regularnych, aby przeanalizować strukturę linków z tekstu przyjaznego dla człowieka. Jeśli pracujesz tylko z drzewem, możesz bezpośrednio utworzyć strukturę drzewa z nagłówków. Następnie jest kwestia wygenerowania odpowiedniej składni graphviz, a org-babel może poradzić sobie z produkcją i konwersją do formatu PNG lub SVG. Mam nadzieję, że to pomaga!
źródło
To nie kropka, ale jeśli się spieszysz, pomocne mogą być następujące obserwacje.
Potrzebujemy
org-plus-contrib
i FreeMind.app, aby stworzyć mapę myśli z dokumentów w trybie org.Zainstaluj dodatkowy pakiet trybu org wywoływany
org-plus-contrib
przezM-x package-list-packages
.Być może będziemy musieli dodać
do naszych .emacs.
Wtedy możemy eksportować nasz plik org-mode do FreeMind plik * .mm przez
C-c C-e f f
,org-freemind-export-to-freemind
.Teraz otwieramy * .mm z Freemind.app i voila!
Najedź myszką, aby zobaczyć zawartość węzłów.
źródło
AKTUALIZACJA: 2019
Istnieje pakiet o nazwie org-mind-map
https://github.com/theodorewiles/org-mind-map
Tworzy wykresy kierowane przez graphviz z plików w trybie org przy użyciu języka kropek.
Po zainstalowaniu org-mind-map możesz wyeksportować plik org
C-c C-e
i wybrać „Utwórz plik wykresu i kropki”g d
Spowoduje to utworzenie pliku kropki z pliku organizacji. Będzie domyślnie zawierał pewne dostosowania wizualne z pakietu org-mind-map. Możesz je edytować lub skopiować odpowiednie części do nowego pliku kropki.
źródło