やりたいこと
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 install alex happy
cabal update
cabal install pandoc
git submodule update --init
$ 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
\
Table of Contents
.. raw:: html
\
1. Hello Sphinx
.. raw:: html
2. テスト
.. raw:: html
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機能のオプションを利用すれば消せた。
o#+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
とりあえず、なんとなくできるという道が開けた気がした。