Ditaa - DIagrams Through Ascii Art - “компилятор” для ASCII диаграмм, на выходе создаёт достаточно приятные для глаза диаграммки:
- Официальный сайт: http://ditaa.sourceforge.net/
- Demo: http://ditaa.org/ditaa/ - сервис, можно посмотреть на возможности программки и посоздавать свои
- Дополнения: http://ditaa-addons.sourceforge.net/
Ditaa дружит с org-babel в Emacs org-mode, так что можно создавать диаграммы прямо в режиме заметки в Org mode.
Для начала, нужно добавить в .emacs (или .emacs.d/init.el) следующее:
;;
;; Org Babel
;;
(require 'ob-tangle)
(setq org-ditaa-jar-path "/usr/share/emacs/site-lisp/org_contrib/scripts/ditaa.jar")
;(setq org-plantuml-jar-path "~/java/plantuml.jar")
(defun bh/display-inline-images ()
(condition-case nil
(org-display-inline-images)
(error nil)))
(add-hook 'org-babel-after-execute-hook 'bh/display-inline-images 'append)
; Make babel results blocks lowercase
(setq org-babel-results-keyword "results")
(org-babel-do-load-languages
(quote org-babel-load-languages)
(quote ((emacs-lisp . t)
(dot . t)
(ditaa . t)
(R . t)
(python . t)
(ruby . t)
(gnuplot . t)
(clojure . t)
(sh . t)
(ledger . t)
(org . t)
(plantuml . t)
(latex . t))))
; Do not prompt to confirm evaluation
; This may be dangerous - make sure you understand the consequences
; of setting this -- see the docstring for details
(setq org-confirm-babel-evaluate nil)
С моей версией emacs-org-mode из AUR ditaa уже идёт комплекте. Если нет, скачайте с домашнего сайта и укажите путь до него.
само рисование осуществляется в блоке кода:
#+begin_src ditaa :file out.png
...
...
...
#+end_src
Теперь небольшой хинт. Есть в штатной поставке emacs 24 такой минорный режим, как
artist-mode - позволяет рисовать в ASCII, его-то можно использовать для рисования диаграмм, далее вспоминаем про такую штуку как narrowing (ну хоть убейте - не знаю как перевести, а если кратко: то можно выделить блок текста, так, что бы все изменения были только с ним, а остальные части документа вообще бы никак не могли быть доступны для изменения). Посему:
Шаг 1: жмем сколько нужно ‘RET’ (в народе - Enter) в блоке #+begin_src/#+end_src
- выделяем себе пространство для дальнейшего манёвра
Шаг 2: выделяем весь этот блок и жмем ‘C-x n n’ (если включен CUA mode, то вместе ‘C-x’ нужно нажимать или ‘C-x C-x’ или ‘S-C-x’, я использую второе) - тем самым мы перейдём к редактированию только этого блока
Шаг 3: выключаем artist-mode: M-x artist-mode
Шаг 4: рисуем диаграмму
Шаг 5: выключаем artist-mode: M-x artist-mode
Шаг 6: убираем выделение региона: ‘C-x n w’
Шаг 7: Жмем ‘C-c C-c’ находясь внутри блоке #+begin_src/#+end_src
- запустится ditta и картинка покажется ниже блока кода.
Для себя, включение и выключение Artist mode я повесил на клавиатурную комбинацию ‘C-x a’, а выбор инструмента рисования в режиме Artist mode на C-s (инкрементный поиск тут не нужен)
И на последок, скрин-каст про artist mode: http://www.cinsk.org/emacs/emacs-artist.html