やりたいこと
org-mode で書いたテキストを Restructured Text に変換したい.
Pandoc を利用すると, org-mode の文章を変換することができる.
入力 (org-mode) -> 変換 (Pandoc) -> 出力 (Restructured Text)
Pandoc をつかう
Pandoc とは, 汎用的なドキュメント変換ツール. ある形式から別の形式へドキュメントの形式を変換できる.
- Pandoc ユーザーズガイド 日本語版 - Japanese Pandoc User’s Association
- HTML - 多様なフォーマットに対応! ドキュメント変換ツール Pandoc を知ろう - Qiita
org-mode の writer は以前からあったが, reader は最近ようやく pull request された.
- Org-Mode Reader · Issue #476 · jgm/pandoc
- https://github.com/jgm/pandoc/commit/b1e6ea80fde0c3a21336747cd34a3ab0ddfe3cfe
ということで, 最新の Pandoc を試してみる. github からダウンロード.
pandoc は haskell でかかれてるので, ビルドには haskell がひつよう.
以下を順々に実施.
$ cabal update
$ cabal install pandoc
$ pandoc -v
pandoc 1.12.3.3
Compiled with texmath 0.6.6.1, highlighting-kate 0.5.6.1.
実験
これがゴール.
Hello Sphinx
============
テスト.
テスト
======
テストです.
これを変換する.
* Hello Sphinx
テスト.
* テスト
テストです.
変換はコマンドラインから以下を実行
pandoc -f rst hello2.org
こうなった.
- Hello Sphinx
テスト.
- テスト
テストです.
箇条がきではなくて, 見出しなのだが. . . 今後に期待ということで.
org-pandoc をつかう
org-pandoc をというツールをつかっても, panodc に対応した色々なフォーマットに変換できる.
仕組みは, 一度 org-mode から markdown に変換して, markdown を pandoc にかけるというもの.
実験
変換には, 以下を評価したあとに, M-x org-pandoc-export-to-pandoc 実行.
(require 'ox-pandoc)
(setq org-pandoc-export-format 'rst)
こうなった.
======
hello2
======
:Author: tsu-nera
.. raw:: html
<div id="table-of-contents">
\<h2\>
Table of Contents
.. raw:: html
\</h2\>
<div id="text-table-of-contents">
<ul>
<li>
1. Hello Sphinx
.. raw:: html
</li>
<li>
2. テスト
.. raw:: html
</li>
</ul>
</div>
</div>
Hello Sphinx
============
テスト.
テスト
======
テストです.
ヘッダによけいなものがたくさんつくものの, default pandoc よりいいな.
org-mode から markdown 経由で reST へ変換する
Markdown から reST への変換はいろいろな人がチャレンジして実績があるので, この道を考える.
org-mode には, デフォルトで markdown 変換コマンドあり. MarkDown どころか, HTML,Pandoc,LATex.. いろいろある.
詳しくは, org-export-dispatch (C-c C-e) を実行.
さっきのゴミは, emacs-export 機能のオプションを利用すれば消せた.
#+OPTIONS: toc:nil
オプションの詳しい説明は, 以下.
コマンドラインから変換したい
上記の方法は, Emacs のなかで変換処理を行うのだが, 複数ファイルを処理するとするとコマンドラインから変換処理を行いたい.
調べたところ, emacs には batch という機能があるようだ.
- org-mode → HTML 変換をする 3 つの方法 - (rubikitch loves (Emacs Ruby CUI Books))
- CLI で emacs の org-mode を使って html 化する - Bye Bye Moore
- GNU Emacs マニュアル: A. コマンド行引数
batch については今回はわからなかったので, 次回に回す. 外部ライブラリまわりで苦戦.
emacs hello.org -f org-md-export-to-markdown
とりあえず, なんとなくできるという道が開けた気がした.