やりたいこと

org-mode で書いたテキストを Restructured Text に変換したい.

Pandoc を利用すると, org-mode の文章を変換することができる.

入力 (org-mode) -> 変換 (Pandoc) -> 出力 (Restructured Text)

Pandoc をつかう

Pandoc とは, 汎用的なドキュメント変換ツール. ある形式から別の形式へドキュメントの形式を変換できる.

org-mode の writer は以前からあったが, reader は最近ようやく pull request された.

ということで, 最新の 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 という機能があるようだ.

batch については今回はわからなかったので, 次回に回す. 外部ライブラリまわりで苦戦.

   emacs hello.org -f org-md-export-to-markdown

とりあえず, なんとなくできるという道が開けた気がした.