Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

CLIでemacsのorg-modeを使ってhtml化する

org-mode→HTML変換をする3つの方法 - (rubikitch loves (Emacs Ruby CUI Books))様をベースにした、org文章emacs経由html行きのスクリプトは以下の通りです。

$ emacs --batch -q --no-site-file -l org --visit paper.org --funcall org-export-as-html-batch
OVERVIEW
Exporting...
Exporting...
Saving file /Users/shuzo/src/paper.html...
Wrote /Users/shuzo/src/paper.html
HTML export done, pushed to kill ring and clipboard

ワザワザ--scriptとか書かなくて良いです。
ワンライナーっぽい感じで、超便利!

引数群の説明

「--batch」

emacsをバッチモードで起動します。
エコー領域に出る情報は、stderrに書き込まれます。
「-batch」とハイフンを一個減らしたオプションにすると、「-q」も兼ねてくれるとか何とか...??

「-q」

設定ファイルの類を読み込まない......筈なのですが、ざっと読んだ限りよく分かりません((
目下勉強中です。

「--no-site-file」

site-lispフォルダにある、site-init.elを読み込まない。
site-init.elは一連のinitファイルより先に呼び出される、ライブラリへの引用関係を記述したファイルらしいです。
このファイルはユーザが呼び出し難いので、なるだけ使うなと書いてあります。
Mac OS Xbrewから導入したEmacs24には、このファイルは含まれていませんでした。
以下、GNUの公式ページより

Your site may also have a site startup file; this is named site-start.el, if it exists. Like default.el, Emacs finds this file via the standard search path for Lisp libraries. Emacs loads this library before it loads your init file. To inhibit loading of this library, use the option ‘--no-site-file’. See Initial Options. We recommend against using site-start.el for changes that some users may not like. It is better to put them in default.el, so that users can more easily override them.

「-f function」または「--funcall=function」

指定された関数を呼び出し

「-l file」、「--load=file」

Lispライブラリを呼び出します。
デフォルトのものならこれでおkです。
外からもって来たものの場合は調査中です。

「--visit」

見たまんまファイル開きです。
C-x C-fに相当するみたいですね。
これは色々書き方があるみたいです。

引数まわりを少し工夫して短くする

というわけで、順番や引数を現時点での理解で工夫すると

$ emacs paper.org -batch -l org -f org-export-as-html-batch

とも書く事ができる......みたいです。
少しだけ短くなり、同様な事ができました。
スクリプトの内容によっては挙動が異なったりするのかもしれません。
この辺りは勉強を進めて行きます。