ぼくじょう日記

てらお牧場に起こる出来事を書きつらねていきます。

markdownで論文を書く

今書いている論文をMarkdownで書き下すことにする。 その際に、pandocのツール群に定義されている標準的な方法にのっとって、図表等への相互参照と、引用文献リストの自動作成等を行っておきたい。 とはいえ、フルに活用するにはいくつもの問題があって一気にはいけないだろう。だから、今日はまず手元から進めていこうと思う。

まずは、emacsのmd編集モードを何とかしたいと思う。markdownモードを入手したい。 検索をすると、Emacs Markdown Modeというページがあった。これを活用しよう。このページを見ると、packages.elを使え、と書いてある。.emacsrequire paciageをしなさいと書いてある。これはもともと入っているのかどうかよくわからないのだが、まずとりあえずはやってみようかと思う。(追記:…いろいろ見ていると、どうも最近こういうものも普通に使われるようになっていて、もともと入っているものと考えてよさそう。)

``emacsの個人設定ファイルは最近どうなっているのだろう? このページには.emacsとか、init.elとか書いてあるが、別のページには、.emacs.el``が設定ファイルと書いてある。最近は情報が私の中ではいろいろいい加減になっていて困る。紹介マニアMoinMoinというところの、dot.emacs.dというページでは、

Emacs22 以上では ~/.emacs.d 以下に集めるのが良い。 ~/.emacs.d/init.el を起動ファイルとして読むので ~/.emacs~/.emacs.el ではなくて ~/.emacs.d/init.el にした方が良い。

と明確に主張されていて、納得がいく。これに従おうと思う。 始めに書いてある方法は、MELPAというEmacs Lispパッケージを管理しているアーカイブサイトから、package.elを使って簡単にダウンロードするという方法である。上記サイトに書かれている通りに.emacs.d/init.elに書き込んで実行してみるが、肝心のmarkdown-modeが見つからない。 MELPAのパッケージリストにはmarkdown-modeが見出されるので、なぜこれが現れないのか不明。 MELPAのGetting startedページにあるlispコードを覗いてみると、melpaのサイトを指定するところで、パラメータが一個足りない('t'というパラメータがない)ことが分かった。望みは薄いと思われるが、一応これを指定してみた。だがだめ。 妙なところではまってしまった。これで一時間ロスなのである。MELPAとrequire.elの組み合わせは結構魅力的なのだが、どうも謎が解けない。ともかく意味不明なので、Emacs Markdown Modeというページに書かれた次善の策、直接インストールの方法(まぁ昔の方法)を試すことにする。

markdown-mode-2.1.elをダウンロード。load-pathの通ったところに置けとある。さて。load-pathはこのシステムではどう設定されているのやら。ここで、 M-x describe-variable をたたく。load-pathを見る。無事load-pathの設定内容が表示された。 個人のディレクトリは見たところないようだ。 だから、ホームディレクトリに個人設定として入れて管理するためには、そのディレクトリ名をこの変数に設定しなければならないということだ。こういう場合はどうするものなのか。これもなんらかの標準的な方法があるはずである。これを探すことにする。(これも一回覚えれば応用範囲は広い。きっちり方法を探そう。)

マスタカの ChangeLog メモというページの2009年7月5日の記事に、Emacsのload-pathに関する講座がある。少し古いのだが、謙虚に目を通してみる。すると、「load-path`` にユーザ指定のディレクトリを追加する方法」という記述がありました。

例えば、"~/share/elisp" を追加したい場合は以下を ~/.emacs に設定して下さい。 (add-to-list 'load-path "~/share/elisp") この例では load-path の先頭に "~/share/elisp" が追加されます。

なるほど。$HOME/share/elispというディレクトリに入れるのがデファクトスタンダードなのだな。ということで、このディレクトリをつくり、ここに先ほどのファイルを入れてみる。

とかやっているうちに、.emacs.d/init.elではなく、なんと.emacs.d/init.dなどという変な名前のファイルにlispを書き込んでいたことが判明。もう一度やり直してみたがうまくいかないというこれまた非生産的な30分間を過ごしてしまった。

最新のemacs事情に関するページが見つかり、どうもこの間大きな変化が続いている様子。しかもEmacs24.4でおおきな機能追加がなされ、melpaの中には24.3以前をサポートしないものもあるとのこと。利用中のバージョンはやはり24.3ではある。とはいえ、はたしてmarkdown-modeもそのようなものなのかどうかは判然とせず、すくなくともEmacs Markdown Modeのページにはそれらしき記述はない。くだんのpackages.ellispコードも無事評価されて、melpaのページもきちんとリストされるところまではいっていることも判明。なぜmarkdown-modeが検索されないのかはさっぱり謎のまま。

まぁ諦めて、やはり直接ダウンロードしたmarkdown-mode.elを古典的に使う方法をとることにしようと決断。 結果的にうまくmarkdownモードがインストールできた。

要するに、

markdown-mode-2.1.elを本家アーカイブからダウンロード、~/share/elispにコピー(markdown-mode.elという名前に) .emacs.d/init.elに、load-pathを指定。拡張子が.mdまたは.markdownのファイルだったらこのlispを呼ぶようにスクリプトを書く

指定をしただけ。まぁ、パッケージやモードのインストールの標準的な方法が分かったこと。melpaという名前のアーカイブが重宝しそうだということ。最近このあたりの事情が大きく変化していて、Emacs24.4に乗り換えるのが本当は良さそうだということが分かったので、意義もあったと言えると思う。

あとはこれを使ってかなり書き進んできた論文をmarkdownで取りまとめるだけ。 実際、htmlで書いているからあまり変えるところもないので簡単に進むと思う。