MS Word で LaTeXの文書を書く (macos)

Wordで(英文)論文を書こうとしても、図はどっかに飛んで行くわ文献管理はしにくいわで大変なので、だいたいはLaTeXEmacsで論文を書いているのですが、Wordにも2点だけいいところがあります。

ひとつめはスペルチェッカーと文法チェッカーが入っていること。オンザフライでスペルミスが分かるのありがたい。文法チェッカーは単純な主語と動詞の数の一致ぐらいなのですが、それでも見つけてくれるとケアレスミスが減る。Emacsでもispellは論外としてもflyspellみたいにリアルタイムにスペルチェックしてくれるモードもあるけど、使い勝手はWordのほうがよい。よい文法チェッカーがEmacsにもあればいいのにと思ってました。

もうひとつは編集履歴が残せることで、複数人で論文をリバイズしたり、コメントを書き込んだり、英文校正業者に出したりするときに便利。

しかしWordですべて論文の割り付けまで含めてやるのはいやだと思っていたので、WordでLaTeXソースを書けるように工夫してみました。

まずWordにEmacsキーバインドを設定します(ここなどを参考に:http://d.hatena.ne.jp/phithon/20111127/emacs_like_shortcuts_on_microsoft_office_word
)。

次に、wordフォーマット(**.docx)のままではLaTeXが処理できないので、プレーンテキストに変換します。Wordはテキストファイルも読み込めるのですが、そうすると上で言った第2の利点である編集履歴が残せません。またTeXコマンドの"\"(バックスラッシュ)をWordのほうでも解釈して変な文字に変換してしまって収集つかなくなってきます。そこで、以下のようなRubyスクリプトを作りました(macos専用)。ポイントはtextutilというmacosに備わっている便利コマンド。wordフォーマットをテキストに変換してくるのですね。さらに、TeXの記号である"\"がそのままでは別の文字に変換されるので元に戻し、引用記号"abc"などもTeX式に``abc''に変換してます。

#!/opt/local/bin/ruby

word=ARGV[0]
tex=ARGV[1]
temp="/tmp/word2tex#{$$}.txt"

system("rm -f #{temp}")
system("textutil -convert txt #{word} -output #{temp}")

File.open(temp, "rb") { |f|
   line = f.read
   line.gsub!(/\xC2\xA5/n, "\\")
   line.gsub!(/\xE2\x80\x9C/n, "``")
   line.gsub!(/\xE2\x80\x9D/n, "''")
   line.gsub!(/\xE2\x80\x98/n, "`")
   line.gsub!(/\xE2\x80\x99/n, "'")
   File.open(tex, "wb") { |out|
      out.write(line)
   }
}

system("rm -f #{temp}")

あとはronbun.docxなどにLaTeXソースを(Word)で書いていって、こんな感じのshell script でフォーマットすればOKです。

TARGET=ronbun
LATEX=pdflatex
ruby word2tex.rb ${TARGET}.docx ${TARGET}.tex
${LATEX} ${TARGET}
jbibtex ${TARGET}
${LATEX} ${TARGET}
${LATEX} ${TARGET}

何と快適!