Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
17
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@sambatriste

org-modeでUMLを埋め込み(PlantUML)

はじめに

org-modeでは、org-babelという仕組みを使って、org-modeの文書内にプログラミング言語を埋め込んで実行することができます。
例えばrubyの場合だと以下のようになります。

#+BEGIN_SRC ruby
require 'date'
"This file was last evaluated on #{Date.today}"
#+END_SRC

上記のコード断片を評価すると(C-c C-c)、以下のように結果がバッファに埋め込まれます。

#+RESULTS:
: This file was last evaluated on 2016-10-06

スクリーンショット

スクリーンショット 2016-10-06 18.10.11.png

PlantUMLもorg-babel一つの言語なので、org-mode内で実行し画像を生成することができます。

さらにEmacsはバッファ内にインラインで画像を表示できるので、org-modeの文書内にインラインで画像を表示できます。

例えばこんなかんじになります

以下にスクリーンショットを貼ります。Emacsのバッファに生成されたUMLの画像が表示されています。


スクリーンショット 2016-10-06 19.45.56.png


初期設定

PlantUMLは既に使える状態になっているという前提(JavaやGraphvizはインストール済み)ではなしを進めます。

まだの方は、公式サイトなどを参照して下さい。

plantuml.jarを配置

plantuml.jarを任意の場所に配置しておきます。
私の場合、~/.emacs.d/lib/plantuml.jarというように配置して、
.emacs.dに含めてバージョン管理対象としています。

plantuml.jarのパス設定

以下のようにinit.elに設定します。

;; plantuml.jarへのパスを設定
(setq org-plantuml-jar-path "~/.emacs.d/lib/plantuml.jar")

;; org-babelで使用する言語を登録
(org-babel-do-load-languages
 'org-babel-load-languages
 '((plantuml . t)))

おためしでやってみる場合は、上記の式をeval-last-sexpなどで評価してください。

やってみる

org文書の作成

#+BEGIN_SRC plantuml :file animal.png
動物 <|-- 犬
動物 <|-- 猫
#+END_SRC

#+BEGIN_SRCから#+END_SRC内でC-c C-cとすると、内部のコードがPlantUMLとして実行されます。

animal.png

日本語が文字化けする場合

環境によっては、日本語が文字化けする場合があります。
その場合、plantumlを起動する際のコマンドラインオプションで、
明示的に文字コードを指定するのがよいと思われます。

#+BEGIN_SRC plantuml :file animal.png :cmdline -charset UTF-8

画像のインライン表示

M-x org-toggle-inline-imagesで画像インライン表示をトグルすることができます。

あるいは、org文書冒頭に以下のように記述をしておくと、その文書ではデフォルトでインラインで画像が表示されるようになります。

#+STARTUP: inlineimages
17
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
17
Help us understand the problem. What is going on with this article?