La generación rápida de gráficos a partir de una estructura similar a un árbol puede ser muy útil al hacer notas en modo org que requieren compartir y / o embellecer a otros humanos.
No pude encontrar otra manera de hacer esto que no sea crear manualmente un bloque dinámico dot / graphviz.
Una traducción de un árbol estructurado a un gráfico dirigido simple debería ser bastante sencilla.
Estoy buscando una manera simple de atravesar un árbol de modo org (una región seleccionada) y traducir la estructura de árbol (y opcionalmente alguna información del contenido de la estructura) a un gráfico de puntos.
No puedo ser el primero en pensar en esto. ¿Se ha resuelto esto?
entrada
* la1
** la2
*** la3
*** la4
** la5
y tal vez una variable org-to-dot-preamble
digraph {
rankdir=TB;
splines=true;
node [shape=box];
la salida se vería como un bloque dinámico del modo org
#+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
Una versión más avanzada primero declararía todos los nodos y permitiría algún formato.
entrada
* la1
firstline
secondline
** la2
firstline
secondline
*** la3
*** la4
firstline
** la5
Algunas variables de formato
org-to-dot-shape
org-to-dot-font
salida
#+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
Respuestas:
Aquí hay un ejemplo de trabajo que usa
org-element
API para analizar los encabezados del búfer:Esto funciona en varios pasos: primero, un bloque elisp se usa
org-element-parse-buffer
para obtener todos los titulares y extraer una lista del título de los padres y el título del título.Luego, otro bloque fuente transforma esta lista en sintaxis de puntos.
Un tercer bloque fuente de puntos contiene el ajuste DOT e incluye las relaciones generadas.
Mejoras cosméticas: filtre la sección para la prueba en sí; puede agregar una etiqueta a esta sección y filtrar por etiqueta en el primer bloque.
fuente
Es posible que pueda reutilizar parte del código desde la parte inferior de http://pages.sachachua.com/evil-plans/ . Básicamente uso org-map-entry para revisar mis encabezados. Como tengo un gráfico dirigido en lugar de un árbol estricto, utilizo búsquedas simples de expresiones regulares para analizar la estructura de enlaces a partir de texto amigable para los humanos. Si solo está trabajando con un árbol, puede crear su estructura de árbol a partir de los encabezados directamente. Después de eso, se trata de generar la sintaxis adecuada de graphviz, y org-babel puede encargarse de producir eso y convertirlo en PNG o SVG. ¡Espero que ayude!
fuente
No es un punto, pero si tienes prisa, los siguientes pueden ser útiles.
Necesitamos
org-plus-contrib
y FreeMind.app para producir un mapa mental a partir de documentos en modo org.Instale un paquete de modo org adicional llamado
org-plus-contrib
porM-x package-list-packages
.Quizás debamos agregar
a nuestros .emacs.
Entonces podemos exportar nuestro archivo org-mode para Freemind archivo * .mm por
C-c C-e f f
,org-freemind-export-to-freemind
.Ahora abrimos * .mm desde Freemind.app, ¡y listo!
Pase el mouse para ver el contenido de los nodos.
fuente
ACTUALIZACIÓN: 2019
Hay un paquete llamado org-mind-map
https://github.com/theodorewiles/org-mind-map
Crea gráficos dirigidos por graphviz a partir de archivos de modo org utilizando el lenguaje de puntos.
Después de instalar org-mind-map, puede exportar un archivo de organización
C-c C-e
y seleccionar "Crear un archivo de gráfico y punto"g d
Esto creará un archivo de puntos a partir de su archivo de organización. Contendrá algunas personalizaciones visuales del paquete org-mind-map de forma predeterminada. Puede editarlos o copiar las partes relevantes a un nuevo archivo de puntos.
fuente