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
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
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.