Die schnelle Erstellung von Diagrammen aus einer baumartigen Struktur kann sehr nützlich sein, wenn Sie im Organisationsmodus Notizen machen, die für andere Menschen geteilt und / oder verschönert werden müssen.
Ich konnte keine andere Möglichkeit finden, als manuell einen dynamischen Punkt- / Graphviz-Block zu erstellen.
Eine Übersetzung von einem strukturierten Baum in einen einfachen gerichteten Graphen sollte ziemlich einfach sein.
Ich suche nach einer einfachen Möglichkeit, einen Baum im Organisationsmodus (eine ausgewählte Region) zu durchlaufen und die Baumstruktur (und optional einige Informationen aus dem Inhalt der Struktur) in ein Punktdiagramm zu übersetzen.
Ich kann unmöglich der Erste sein, der sich das ausgedacht hat. Wurde das gelöst?
Eingang
* la1
** la2
*** la3
*** la4
** la5
und vielleicht eine variable Org-zu-Punkt-Präambel
digraph {
rankdir=TB;
splines=true;
node [shape=box];
Die Ausgabe würde wie ein dynamischer Block im Organisationsmodus aussehen
#+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
Eine fortgeschrittenere Version würde zuerst alle Knoten deklarieren und eine gewisse Formatierung zulassen.
Eingang
* la1
firstline
secondline
** la2
firstline
secondline
*** la3
*** la4
firstline
** la5
Einige Formatierungsvariablen
org-to-dot-shape
org-to-dot-font
Ausgabe
#+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
Antworten:
Hier ist ein Arbeitsbeispiel, das
org-element
API verwendet, um die Pufferüberschriften zu analysieren:Dies funktioniert in mehreren Schritten: Zuerst werden mit einem Elisp-Block
org-element-parse-buffer
alle Überschriften abgerufen und eine Liste mit dem Titel des Elternteils und dem Titel der Überschrift extrahiert.Dann wandelt ein anderer Quellblock diese Liste in Punktsyntax um.
Ein dritter Punktquellenblock enthält die DOT-Umhüllung und enthält die generierten Beziehungen.
Kosmetische Verbesserungen: Filtern Sie den Abschnitt für den Test selbst heraus. Sie können diesem Abschnitt ein Tag hinzufügen und im ersten Block nach Tag herausfiltern.
quelle
Möglicherweise können Sie einen Teil des Codes am Ende von http://pages.sachachua.com/evil-plans/ wiederverwenden . Grundsätzlich verwende ich Org-Map-Einträge, um meine Überschriften durchzugehen. Da ich anstelle eines strengen Baums ein gerichtetes Diagramm habe, verwende ich einfache Suchen nach regulären Ausdrücken, um die Linkstruktur aus menschenfreundlichem Text zu analysieren. Wenn Sie nur mit einem Baum arbeiten, können Sie Ihre Baumstruktur direkt aus den Überschriften erstellen. Danach geht es darum, die entsprechende Graphviz-Syntax zu generieren, und org-babel kann diese erstellen und in ein PNG oder SVG konvertieren. Ich hoffe, das hilft!
quelle
Es ist kein Punkt, aber wenn Sie es eilig haben, kann Folgendes hilfreich sein.
Wir brauchen
org-plus-contrib
und FreeMind.app, um eine Mindmap aus Dokumenten im Organisationsmodus zu erstellen.Installieren Sie ein zusätzliches Paket im Organisationsmodus, das
org-plus-contrib
von aufgerufen wirdM-x package-list-packages
.Vielleicht müssen wir hinzufügen
zu unseren .emacs.
Dann können wir unsere org-mode Datei in die Freemind * .mm Datei exportieren von
C-c C-e f f
,org-freemind-export-to-freemind
.Jetzt öffnen wir * .mm von Freemind.app und voila!
Fahren Sie mit der Maus über den Inhalt der Knoten.
quelle
UPDATE: 2019
Es gibt ein Paket namens org-mind-map
https://github.com/theodorewiles/org-mind-map
Es erstellt graphviz-gerichtete Diagramme aus Dateien im Organisationsmodus unter Verwendung der Punktsprache.
Nach der Installation von org-mind-map können Sie eine org-Datei exportieren
C-c C-e
und "Grafik- und Punktedatei erstellen" auswählen.g d
Dadurch wird eine Punktdatei aus Ihrer Organisationsdatei erstellt. Es enthält standardmäßig einige visuelle Anpassungen aus dem Paket org-mind-map. Sie können diese bearbeiten oder die relevanten Teile in eine neue Punktdatei kopieren.
quelle