Notxor tiene un blog

Defenestrando la vida


Gráficos y org-mode (de nuevo)

Hace un tiempo que utilizo org-mode para casi todo y también utilizo ditaa, PlantUML y graphviz para realizar los gráficos que necesito. Ditaa es un sistema que convierte un gráfico ASCII en un fichero gráfico de diagramas.

+-----------+   +-------+    +----------+
|           |   |       |    |          |
|           +---+ ditaa +--->|          |
| Documento |   +-------+    | diagrama |
| de texto  |   |¡magia!|    |          |
|     {d}   |   |       |    |          |
+------+----+   +-------+    +----------+
       :                         ^
       |       Mucho trabajo     |
       \-------------------------/

Problemas con ditaa

Hace unos días me di cuenta que Ditaa no me funciona. Debe haber alguna incompatibilidad con la versión de java que tengo en el ordenador. En alguna actualización el jar compilado compilado de la herramienta dejó de funcionar y ahora no lo puedo llamar directamente. Sin embargo, he encontrado el modo de hacerlo a través de otra de las herramientas que utilizo habitualmente: PlantUML.

Efectivamente, con PlantUML puedo renderizar ─qué palabra más fea─ el gráfico de Ditaa. Por ejemplo, el caso anterior lo meto entre etiquetas startditaa y endditaa.

El código quedaría de la siguiente manera:

#+BEGIN_SRC plantuml :file plantuml-ditaa.png :cmdline -charset UTF-8 -tpng
@startditaa
+-----------+   +-------+    +----------+
|           |   |       |    |          |
|           +---+ ditaa +--->|          |
| Documento |   +-------+    | diagrama |
| de texto  |   |¡magia!|    |          |
|     {d}   |   |       |    |          |
+------+----+   +-------+    +----------+
       :                         ^
       |       Mucho trabajo     |
       \-------------------------/
@endditaa

#+END_SRC

plantuml-ditaa.png

Me resulta curioso que Ditaa no me funcione directamente y sin embargo, PlantUML sea capaz de hacer su trabajo. Así pues, de momento prescindo de aquella herramienta para quedarme con la más completa.

PlantUML y LaTeX

Estos días necesité integrar algunas fórmulas matemáticas en un esquema UML. Y casi me vuelvo loco, porque la herramienta a la que me estoy acostumbrando es PlantUML integrada en org-mode. Sin embargo, el trabajo con fórmulas matemáticas es habitual que lo haga con LaTeX y resulta que encontré el modo en la documentación de PlantUML para meter las matemáticas en los gráficos: Algo tan sencillo como rodear el código con las etiquetas <math>...</math> o <latex>...</latex> del siguiente modo.

#+BEGIN_SRC plantuml :file plantuml-mates.png :cmdline -charset UTF-8 -tpng
@startuml
:<math>int_0^1f(x)dx</math>;
note left
Hecho con asciimath
ASCIIMathTeXImg.js
integrado en PlantUML
end note
:<latex>x^{2}+y_{1}+z_{12}^{34}</latex>;
note left
Hecho con JLatexMath
hay que descargar los jar
a parte.
end note
:Probar también;
note right
<latex>\frac{d}{dx} f(x) = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}</latex>
<latex>P(y|\mathbf{x}) \mbox{ or } f(\mathbf{x})+\epsilon</latex>
end note
@enduml

#+END_SRC

plantuml-mates.png

Cada etiqueta está gestionada por una librería distinta. La etiqueta <math> la gestiona ASCIIMathTeXImg.js y está integrado en la misma herramienta PlantUML. Sin embargo, la etiqueta <latex> está gestionada por la librería JLatexMath, yo la instalé en sistema porque no la tenía, pero además pide que esté en el mismo directorio donde se encuentra el jar de PlantUML. Probé, pero me dio algunos problemas. No sé si porque utilicé un enlace en lugar de copiar el fichero al directorio. Al final, leyendo la (breve) documentación en la web de PlantUML indica un enlace donde descargar la librería dividida en cuatro ficheros jar. Lo descomprimí y el resultado se puede ver en el ejemplo anterior.

Conclusión

Cada vez me encuentro más cómodo con org-mode y sus (casi) infinitas posibilidades. En este caso porque suma con las posibilidades de otras herramientas como PlantUML. ¿Alguna aplicación monolítica es capaz de sumar así? Es decir, claro, puedo utilizar cualquier herramienta, generar el gráfico en importarlo. Pero no suma o en caso de poder hacer algún macro o plugin, tengo que liarme en cosas mucho más complicadas.

Y ─no recuerdo con quién─ hablaba el otro día con un amigo sobre la filosofía Unix y la filosofía güindón. Mi argumentación era que me quedaba con las cosas sencillas, con programas simples que hacen muy bien y rápido lo que tienen que hacer y me permiten unirlos. En ese sentido veo también org-mode como un pegamento de diferentes herramientas. Quizás, por esto también, me apetecía mantener Ditaa, más sencilla que PlantUML, sin embargo, la falta de funcionamiento ha sido crítica, pues lleva sin actualizarse ya algunos años.


Comentarios

Debido a algunos ataques mailintencionados a través de la herramienta de comentarios, se ha decidido activar un filtro antispam y guardar las direcciones IP con el único objeto de añadir a la lista de bloqueos las que correspondan a spam y otras actividades maliciosas.

Disculpen las molestias.