19
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

はじめに

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
19
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?