構造化文章を書きたいときは多々あると思うのですが、texは書きたくないみたいな事は沢山あると思います。
今回ちょっとorg-mode
で構造化文章を書いたのでそのメモを。
EmacsでOrg-modeの書式からhtmlを出力することを考えます。既にorg-modeを使った解説記事は沢山あるので、僕がちょっと手の込んだ文章を書くのに嬉しかった機能のみ絞って紹介します。
数式を書く
ファイルの先頭に#+OPTIONS: LaTeX:t
を書くとlatexの数式を書くことができます。
$(\lambda x. x) (\lambda x. x) \rightarrow (\lambda x. x) (\lambda x. x)$
のように書くと数式を埋め込むことができます。\begin{equation} \end{equation}
の中にlatexの数式をそのまま記述することもできます。外部のパッケージも使うことができます。例えば
amsmath
を使いたければ、#+OPTIONS: Latex:amsmath
のようにファイルの先頭に書くことでパッケージをインポートできます。
図表の管理
org-mode
の通常の書式[[ラベル名][表示メッセージ]]
で図やソースコードを参照できます。
ソースコード
- ソースコードは1行で書くときは
=(defun f nil (princ "hello"))=
のようにイコール記号で囲みます 複数行に渡る場合は下のように書きます。
#+Name
タグをつけることで、上で示した書式でリンクを晴れます#+Name: code: ocaml #+begin_src ocaml let f x = x #+end_src [[code: ocaml][ocamlのコード]]
図
画像
下のようにして画像を挿入できます。
#+Caption: 実験結果1
#+Name: fig: result
[./image.png]
[[fig: result][メッセージ]]
テキストから作る
ditaa, graphvizなどを用いて図を書くことができます。
うまく行かない場合は、org-ditaa-jar-path
やorg-babel-load-languages
でどの言語を使うのかなどを正しく設定する必要があります。
ditaaは、普通に自分でapt-get install ditaa
しただけだと日本語の扱いに難があるそうです。
#+Name: fig: graph1
#+begin_src ditta :file images/ditaa.png
+------+-----+ +-----+
| RED | BLU | | YEL |
| Foo + Bar +-->+ Baz +
| | | | |
+------+-----+ +--+--+
#+end_src
#+Name: fig: graph2
#+begin_src dot :file images/dot.png
digraph sample {
a [label="Emacs"]
b [label="elisp"]
a -> b [label=use]
}
#+end_src
その他
困ったら#+begin_html
と#+end_html
で囲うことでhtmlタグを直で書くことができます。やったね!
例を示そうと思ったのですが、ここのページに何が出来るのか大体まとまっていたのでいいですよね…?
追記: 一応作ったので自分で例を示します。
https://raw.githubusercontent.com/nomaddo/my-org-mode-example/master/example.org
感想
ぱぱっとこれくらい出来れば使える気分です。
org-mode
はEmacsで最も使いやすいマークアップ言語だと思うので積極的に使って行きたいですね。
リンク
Org-mode による HTML 文書作成入門
org-mode
の機能でエキスポートされたhtmlで書かれた解説ページ
Hello Worg, the Org-Mode Community!
org-mode
のコミュニティ